##// END OF EJS Templates
Add modules for interactive plots and upload data
Add modules for interactive plots and upload data

File last commit:

r2:98d277d09dd7
r2:98d277d09dd7
Show More
forms.py
108 lines | 4.5 KiB | text/x-python | PythonLexer
from django import forms
import django.utils.html
import django.utils.safestring
import django.template.defaulttags
# third party imports
import numpy
# Madrigal imports
import madrigal.metadata
import madrigal.ui.web
# madrigal imports
import madrigal._derive
import madrigal.metadata
import madrigal.ui.web
import madrigal.cedar
import madrigal.isprint
import madweb.forms
import datetime, time
def getSelection(keyword, args, kwargs):
"""getSelection returns '0' if keyword not a key in either args[0] or kwargs,
otherwise the value
args, kwargs - arguments as passed into SingleExpDefaultForm __init__
"""
if len(args) == 0 and len(list(kwargs.keys())) == 0:
return('0') # default case when no data passed in
elif len(args) > 0:
# args[0] is data dict argument to bind data
if keyword in args[0]:
return(args[0][keyword])
else:
return('0')
elif keyword in kwargs:
return(kwargs[keyword])
elif 'data' in kwargs:
if keyword in kwargs['data']:
return(kwargs['data'][keyword])
else:
return('0')
else:
return('0')
def getExperimentList(args, kwargs, madWeb, header='Select experiment: '):
instrumentsId= int(getSelection('instruments', args, kwargs))
kinstList = [int(instrumentsId)]
startDate = datetime.datetime(1950,1,1)
startDT = datetime.datetime(startDate.year, startDate.month, startDate.day, 0, 0, 0)
now = datetime.datetime.now()
endDate = datetime.datetime(now.year, 12, 31, 23, 59, 59)
endDT = datetime.datetime(endDate.year, endDate.month, endDate.day, 23, 59, 59)
experiments = madWeb.getExperimentList(kinstList,startDT, endDT, True)
expListin = [('0', header),]
for exp in experiments:
expListin.append((exp[0], exp[2]))
# Using set
seen = set()
# using list comprehension
expList = [(a, b) for a, b in expListin
if not (b in seen or seen.add(b))]
return(expList)
class UpdataForm(forms.Form):
def __init__(self, *args, **kwargs):
super(UpdataForm, self).__init__(*args, **kwargs)
madDB = madrigal.metadata.MadrigalDB()
madInstData = madrigal.metadata.MadrigalInstrumentData(madDB)
instruments = madInstData.getInstruments(0, True)
instList = [('0', "Select Instrument"), ]
for kinst, instDesc, siteID in instruments:
instList.append((str(kinst), instDesc))
instrumentSelection = getSelection('instruments', args, kwargs)
self.fields['instruments'] = django.forms.ChoiceField(widget = django.forms.Select(attrs={"onChange":'populateExp(this)'}),
choices=instList,
initial=instrumentSelection,
label='Instrument:')
madWebObj = madrigal.ui.web.MadrigalWeb(madDB)
experimentSelection = getSelection('experiments', args, kwargs)
self.fields['experiments'] = django.forms.ChoiceField(choices=getExperimentList(args, kwargs, madWebObj),
initial=experimentSelection,
required=False, label='Experiment:')
description = forms.CharField(widget=forms.Textarea(attrs={'cols': 40,'rows': 3, 'style': 'resize:none'}), label='Description')
type = forms.ChoiceField(choices=[('0', 'Public'),('1', 'Private')], initial=0,widget=forms.RadioSelect(attrs={'class': 'custom-radio'}))
file = forms.FileField(label='Select Files', widget=forms.ClearableFileInput(attrs={'multiple': True}))
class ExpForm(forms.Form):
"""SingleExpInstForm is a Form class for the instrument select field in the Single Experiment interface.
Use this because its faster to create than the full SingleExpDefaultForm
"""
def __init__(self, *args, **kwargs):
super(ExpForm, self).__init__(*args, **kwargs)
madDB = madrigal.metadata.MadrigalDB()
madWebObj = madrigal.ui.web.MadrigalWeb(madDB)
experimentSelection = getSelection('experiments', args, kwargs)
self.fields['experiments'] = django.forms.ChoiceField(choices=getExperimentList(args, kwargs, madWebObj),
initial=experimentSelection,
required=False, label='Experiment')