##// END OF EJS Templates
Add category option in updata app
Add category option in updata app

File last commit:

r17:017f817b1e46
r17:017f817b1e46
Show More
views.py
167 lines | 7.1 KiB | text/x-python | PythonLexer
Add modules for interactive plots and upload data
r2
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
Review updata app
r8 from apps.updata.forms import UpdataForm, ExpForm
Add modules for interactive plots and upload data
r2 from django.core.files.storage import FileSystemStorage
from django.contrib import messages
import os
Fix bug in upload data
r11 import glob
import datetime
Add modules for interactive plots and upload data
r2
# madrigal imports
import madrigal.metadata
import madrigal.ui.web
import madrigal.admin
Fix bugs and plots
r6 @login_required(login_url='/madrigal/accounts/login/')
Add modules for interactive plots and upload data
r2 def index(request):
'''
Uploading experiments data view. Allows user to upload experiment files
'''
dbAdminObj = madrigal.admin.MadrigalDBAdmin()
madDB = madrigal.metadata.MadrigalDB()
madWebObj = madrigal.ui.web.MadrigalWeb(madDB)
Add category option in updata app
r17 madMeta = madrigal.metadata.MadrigalInstrument(madDB)
Add modules for interactive plots and upload data
r2 siteName, siteList = madWebObj.getSiteInfo()
Review updata app
r8 err = False
Add modules for interactive plots and upload data
r2 if request.method == 'POST':
Test fix upload
r16 for root, folders, tmp_files in os.walk('/madrigal/experiments/tmp/'):
Fix bug in upload data
r11 for f in tmp_files:
os.remove(os.path.join(root, f))
Add modules for interactive plots and upload data
r2 form = UpdataForm(request.POST, request.FILES)
Test fix upload
r16 files = request.FILES.getlist('file')
# files.sort()
Review updata app
r8 filenames = []
choose = request.POST.get('choose')
if choose == 'new':
instCode = int(request.POST.get('inst'))
expTitle = request.POST.get('exp')
else:
instCode = int(request.POST.get('instruments'))
expId = request.POST.get('experiments')
madExp = madrigal.metadata.MadrigalExperiment()
expTitle = madExp.getExpNameByExpId(expId)
Add modules for interactive plots and upload data
r2
Review updata app
r8 description = request.POST.get('description')
perm = int(request.POST.get('permission'))
optchar = request.POST.get('optchar').strip()
Add category option in updata app
r17 category = int(request.POST.get('category'))
Review updata app
r8 first = True
Fix bug in upload data
r11 if len(files) == 1:
Test fix upload
r16 fs = FileSystemStorage(location='/madrigal/experiments/tmp')
Fix bug in upload data
r11 fs.save(files[0].name, files[0])
Test fix upload
r16 filename = os.path.join('/madrigal/experiments/tmp', files[0].name)
Fix bug in upload data
r11 fileInfo = madrigal.data.MadrigalFile(filename, madDB)
sTime = fileInfo.getEarliestTime()
startTime = datetime.datetime(sTime[0],sTime[1],sTime[2],sTime[3],sTime[4],sTime[5])
exp_list = madWebObj.getExpsOnDate(instCode, startTime.year, startTime.month, startTime.day)
Add category option in updata app
r17 ext = filename.split('.')[-1]
if ext not in ('hdf5', 'h5'):
convert = True
else:
convert = False
expDir = os.path.join('/madrigal/experiments/', startTime.strftime('%Y'), madMeta.getInstrumentMnemonic(instCode), startTime.strftime('%d%b%y').lower())
if os.path.exists(expDir):
#expDir = exp_list[0][2]
Review updata app
r8 try:
Add category option in updata app
r17 if category==1 and os.path.exists(os.path.join(expDir, files[0].name)):
dbAdminObj.overwriteMadrigalFile(expDir, filename, notify=True)
messages.warning(request,
'Filename {} has been overwritten'.format(files[0].name)
)
else:
dbAdminObj.addMadrigalFile(expDir, filename, perm, description, category=category, updateToMad3=convert)
messages.warning(request,
'Filename {} has been added with category={}'.format(files[0].name, category)
)
Review updata app
r8 except Exception as e:
err = True
messages.error(request,
Fix bug in upload data
r11 'An error occur adding file {}: {}'.format(filename.split('/')[-1], e)
Review updata app
r8 )
else:
Test fix upload
r16 if os.path.exists(os.path.join('/madrigal/experiments/tmp', 'overview', files[0].name + '.summary')):
os.remove(os.path.join('/madrigal/experiments/tmp', 'overview', files[0].name + '.summary'))
Review updata app
r8 try:
Fix bug in upload data
r11 expDir = dbAdminObj.createMadrigalExperiment(filename, expTitle, perm, description,
Add category option in updata app
r17 instCode, category=category, optChar=optchar, updateToMad3=convert)
Review updata app
r8 except Exception as e:
err = True
messages.error(request,
Fix bug in upload data
r11 'An error occur creating the experiment {}: {}'.format(expTitle, e)
Review updata app
r8 )
filenames.append(filename.split('/')[-1])
Fix bug in upload data
r11 else:
for f in files:
Test fix upload
r16 fs = FileSystemStorage(location='/madrigal/experiments/tmp')
Fix bug in upload data
r11 fs.save(f.name, f)
Test fix upload
r16 filename = os.path.join('/madrigal/experiments/tmp', f.name)
Fix bug in upload data
r11 ext = filename.split('.')[-1]
if ext not in ('hdf5', 'h5'):
convert = True
else:
convert = False
if first:
first = False
try:
expDir = dbAdminObj.createMadrigalExperiment(filename, expTitle, perm, description,
Add category option in updata app
r17 instCode, category=category, optChar=optchar, updateToMad3=convert)
Fix bug in upload data
r11 except Exception as e:
err = True
messages.error(request,
'An error occur creating the experiment {}: {}'.format(expTitle, e)
)
break
else:
try:
Add category option in updata app
r17 dbAdminObj.addMadrigalFile(expDir, filename, perm, description, category=category, updateToMad3=convert)
Fix bug in upload data
r11 except Exception as e:
err = True
messages.error(request,
'An error occur adding file {}: {}'.format(filename.split('/')[-1], e)
)
filenames.append(filename.split('/')[-1])
os.remove(filename)
Review updata app
r8
if not err:
messages.success(request,
'Experiment {} created succesfully with files: {}'.format(expTitle, filenames)
)
madInstParams = madrigal.metadata.MadrigalInstrumentParameters()
madInstKindats = madrigal.metadata.MadrigalInstrumentKindats()
print('*** Updating local metadata ***')
dbAdminObj.__updateLocalMetadata__()
print('*** Rebuilding instParmTab.txt ***')
madInstParams.rebuildInstParmTable()
print('*** Rebuilding instKindatTab.txt ***')
madInstKindats.rebuildInstKindatTable()
form = UpdataForm()
Add modules for interactive plots and upload data
r2
else:
form = UpdataForm()
return render(request, 'updata/index.html', {
'form': form,
'site_name': siteName,
'site_list': siteList,
})
def get_experiments(request):
"""get_experiments is a Ajax call that returns the experiments select html to support the
updata UI. Called when a user modifies the intruments select field.
Inputs:
request
"""
form = ExpForm(request.GET)
return render(request, 'updata/experiments.html', {'form': form})