##// END OF EJS Templates
Fix upload files
Fix upload files

File last commit:

r10:ac38b2ff3424
r10:ac38b2ff3424
Show More
views.py
115 lines | 4.0 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
# 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)
siteName, siteList = madWebObj.getSiteInfo()
Review updata app
r8 err = False
Add modules for interactive plots and upload data
r2 if request.method == 'POST':
form = UpdataForm(request.POST, request.FILES)
files = request.FILES.getlist('file')
Fix upload files
r10 #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()
first = True
for f in files:
fs = FileSystemStorage(location='/tmp')
fs.save(f.name, f)
filename = os.path.join('/tmp', f.name)
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,
instCode, optChar=optchar, updateToMad3=convert)
except Exception as e:
err = True
messages.error(request,
'An error occur creating the experiment {}: {}'.format(expTitle, e)
)
break
else:
try:
dbAdminObj.addMadrigalFile(expDir, filename, perm, description, updateToMad3=convert)
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)
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})