views.py
83 lines
| 2.8 KiB
| text/x-python
|
PythonLexer
r2 | ||||
from django.contrib.auth.decorators import login_required | ||||
from django.shortcuts import render | ||||
from .forms import UpdataForm, ExpForm | ||||
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 | ||||
@login_required | ||||
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() | ||||
if request.method == 'POST': | ||||
form = UpdataForm(request.POST, request.FILES) | ||||
files = request.FILES.getlist('file') | ||||
if form.is_valid(): | ||||
try: | ||||
description = form.cleaned_data['description'] | ||||
instCode = int(form.cleaned_data['instruments']) | ||||
expId = form.cleaned_data['experiments'] | ||||
perm = int(form.cleaned_data['type']) | ||||
#saving file | ||||
for f in files: | ||||
fs = FileSystemStorage(location='/tmp') | ||||
fs.save(f.name, f) | ||||
madExp = madrigal.metadata.MadrigalExperiment() | ||||
filepath = os.path.join('/tmp', f.name) | ||||
expTitle = madExp.getExpNameByExpId(expId) | ||||
dbAdminObj.createMadrigalExperiment(filepath,expTitle, perm, description, instCode) | ||||
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() | ||||
messages.success( | ||||
request, 'Experimento(s) creado(s) exitosamente') | ||||
form = UpdataForm() | ||||
except Exception as e: | ||||
messages.error( | ||||
request, str(e)) | ||||
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}) | ||||