|
|
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 getExperimentList(instrumentId=None):
|
|
|
|
|
|
madDB = madrigal.metadata.MadrigalDB()
|
|
|
madWeb = madrigal.ui.web.MadrigalWeb(madDB)
|
|
|
|
|
|
if instrumentId:
|
|
|
kinstList = [int(instrumentId)]
|
|
|
else:
|
|
|
kinstList = [0]
|
|
|
|
|
|
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', 'Select experiment: '),]
|
|
|
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)
|
|
|
|
|
|
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)
|
|
|
|
|
|
class UpdataForm(forms.Form):
|
|
|
|
|
|
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)
|
|
|
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)
|
|
|
self.fields['experiments'] = forms.ChoiceField(
|
|
|
choices=getExperimentList(args[0]['instrument']),
|
|
|
# initial=kwargs['exp'],
|
|
|
required=False, label='Experiments')
|
|
|
|