forms.py
110 lines
| 3.7 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 | ||||
r8 | def getExperimentList(instrumentId=None): | |||
r2 | ||||
r8 | madDB = madrigal.metadata.MadrigalDB() | |||
madWeb = madrigal.ui.web.MadrigalWeb(madDB) | ||||
if instrumentId: | ||||
kinstList = [int(instrumentId)] | ||||
else: | ||||
kinstList = [0] | ||||
r2 | ||||
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) | ||||
r8 | expListin = [('0', 'Select experiment: '),] | |||
r2 | 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) | ||||
r8 | def getInstrumentList(): | |||
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)) | ||||
return(instList) | ||||
r2 | class UpdataForm(forms.Form): | |||
r8 | CHOICES=[('new','New Instrument/Experiment'), | |||
('existing','Existing')] | ||||
choose = forms.ChoiceField( | ||||
choices=CHOICES, | ||||
widget=forms.RadioSelect(attrs={'class': 'custom-radio', 'onClick': 'updateRadio(this);'}), | ||||
initial='existing') | ||||
inst = forms.IntegerField(min_value=1, label='Instrument ID:', disabled=True, required=False) | ||||
exp = forms.CharField(max_length=40, label='Experiment Title:', disabled=True, required=False) | ||||
instruments = forms.ChoiceField( | ||||
widget = django.forms.Select(attrs={"onChange":'populateExp(this);'}), | ||||
choices=getInstrumentList(), | ||||
required=False, | ||||
label='Instruments:') | ||||
experiments = forms.ChoiceField( | ||||
choices=[], | ||||
required=False, | ||||
label='Experiments:') | ||||
permission = forms.ChoiceField( | ||||
choices=[('0', 'Public'),('1', 'Private')], | ||||
initial=0, | ||||
widget=forms.RadioSelect(attrs={'class': 'custom-radio'})) | ||||
description = forms.CharField( | ||||
widget=forms.Textarea(attrs={'cols': 40,'rows': 3, 'style': 'resize:none'}), | ||||
required=False, | ||||
label='Description') | ||||
optchar = forms.CharField(max_length=1, label='Optional Char:', required=False) | ||||
r17 | category = forms.ChoiceField( | |||
choices = [('1', 'default'),('2', 'variant'),('3', 'history')], | ||||
initial=0 | ||||
) | ||||
r8 | file = forms.FileField( | |||
label='Select Files', | ||||
widget=forms.ClearableFileInput(attrs={'multiple': True})) | ||||
r2 | ||||
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) | ||||
r8 | self.fields['experiments'] = forms.ChoiceField( | |||
choices=getExperimentList(args[0]['instrument']), | ||||
# initial=kwargs['exp'], | ||||
required=False, label='Experiments') | ||||