##// END OF EJS Templates
Update configs
Update configs

File last commit:

r0:b84e1135c2c4
r9:2e29893b10f5
Show More
forms.py
131 lines | 5.1 KiB | text/x-python | PythonLexer
"""Forms for cedar application
$Id: forms.py 7033 2019-10-03 20:15:55Z brideout $
"""
# standard python imports
import os.path
import datetime
# django imports
import django.forms
import django.utils.html
import django.utils.safestring
# Madrigal imports
import madrigal.metadata
import madrigal.ui.userData
class AdminLogForm(django.forms.Form):
"""AdminLogForm is a Form class for the get log admin interface
"""
def __init__(self, *args, **kwargs):
super(AdminLogForm, self).__init__(*args, **kwargs)
selectedSite = None
kinstChoices = [('0', 'Select a site first'),]
if len(args) > 0:
try:
if 'site' in args[0]:
selectedSite = int(args[0]['site'])
except:
pass
madDB = madrigal.metadata.MadrigalDB()
madSiteObj = madrigal.metadata.MadrigalSite(madDB)
madInstObj = madrigal.metadata.MadrigalInstrument(madDB)
self.madUserObj = madrigal.ui.userData.MadrigalUserData(madDB)
madExpObj = madrigal.metadata.MadrigalExperiment(madDB, os.path.join(madDB.getMadroot(), 'metadata/expTabAll.txt'))
siteDict = {} # temp dict with key = siteId, value = list of kinst where there is data at that site
for i in range(madExpObj.getExpCount()):
siteId = madExpObj.getExpSiteIdByPosition(i)
kinst = madExpObj.getKinstByPosition(i)
try:
if kinst in siteDict[siteId]:
continue
except KeyError:
pass
expUrl = madExpObj.getExpUrlByPosition(i)
if madDB.isTestExperiment(expUrl):
continue
if siteId in siteDict:
siteDict[siteId].append(kinst)
else:
siteDict[siteId] = [kinst]
# make siteList, which is sorted list of (siteid, kinst, instName) and siteChoices
# which is (siteID, siteName)
self.siteList = []
self.siteChoices = [("0", "Select your site")]
sites = list(siteDict.keys())
sites.sort()
for site in sites:
if site not in (10,): #skip CEDAR site
self.siteChoices.append((site, madSiteObj.getSiteName(site)))
kinstList = siteDict[site]
kinstList.sort()
for kinst in kinstList:
self.siteList.append((site, kinst, madInstObj.getInstrumentName(kinst)))
if not selectedSite is None:
if selectedSite == site:
kinstChoices.append((kinst, madInstObj.getInstrumentName(kinst)))
# now add to self.siteList and self.siteChoices from hostSite.txt file
filename = os.path.join(madDB.getMadroot(), 'metadata/hostSite.txt')
f = open(filename)
lines = f.readlines()
for line in lines:
items = line.strip().split(',')
if len(items) < 3:
continue
siteId = int(items[0])
# check this is unique siteId
if siteId in siteDict:
raise IOError('File hostSite.txt has siteId %i from siteTab.txt' % (siteId))
kinstList = []
for item in items[2:]:
kinst = int(item)
kinstList.append(kinst)
self.siteList.append((siteId, kinst, madInstObj.getInstrumentName(kinst)))
if not selectedSite is None:
if selectedSite == siteId:
kinstChoices.append((kinst, madInstObj.getInstrumentName(kinst)))
self.siteChoices.append((str(siteId), items[1]))
self.fields['site'] = django.forms.ChoiceField(widget = django.forms.Select(attrs={"onChange":'selectSite(this.form)'}),
choices=self.siteChoices,
initial='0')
self.fields['password'] = django.forms.CharField(widget = django.forms.PasswordInput())
self.fields['kinst'] = django.forms.CharField(widget=django.forms.SelectMultiple(choices=kinstChoices))
# time selection
self.fields['startDate'] = django.forms.DateField(input_formats=['%Y-%m-%d'],
initial=datetime.datetime(2011,1,1,0,0,0))
now = datetime.datetime.now()
self.fields['endDate'] = django.forms.DateField(input_formats=['%Y-%m-%d'],
initial=datetime.datetime(now.year,12,31,0,0,0))
def clean(self):
"""clean verifies password
"""
siteId = int(self.cleaned_data['site'])
siteName = None
for id, name in self.siteChoices:
if int(id) == siteId:
siteName = name
break
if siteName is None:
raise django.forms.ValidationError('Illegal site choosen')
if not self.madUserObj.verifyUser(siteName, self.cleaned_data['password']):
raise django.forms.ValidationError('Incorrect password')