forms.py
108 lines
| 4.5 KiB
| text/x-python
|
PythonLexer
r2 | 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') | ||||