diff --git a/docker-compose.yml b/docker-compose.yml index db69412..3b537fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,14 +8,14 @@ services: image: madrigal working_dir: /madrigal/source/madpy/djangoMad command: gunicorn djangoMad.wsgi --bind 0.0.0.0:8000 - # command: python manage.py runserver 0.0.0.0:8000 + # command: python manage.py runserver 0.0.0.0:8888 env_file: .env # ports: - # - 8080:8080 + # - 8888:8888 volumes: - '${EXP_DIR}:/madrigal/experiments' - - '/usr/local/madrigal/metadata:/madrigal/metadata' - - '/usr/local/madrigal/source/madpy/djangoMad:/madrigal/source/madpy/djangoMad' + # - '/usr/local/madrigal/metadata:/madrigal/metadata' + - '/home/jespinoza/workspace/madrigal/source/madpy/djangoMad:/madrigal/source/madpy/djangoMad' nginx: container_name: 'madrigal-nginx' diff --git a/nginx/app.conf b/nginx/app.conf index 5c466f8..7eb6919 100644 --- a/nginx/app.conf +++ b/nginx/app.conf @@ -6,6 +6,7 @@ upstream djangomad { server { listen 8080; + client_max_body_size 50M; location /madrigal { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/source/madpy/djangoMad/apps/login/views.py b/source/madpy/djangoMad/apps/login/views.py index 4a585fa..560d012 100755 --- a/source/madpy/djangoMad/apps/login/views.py +++ b/source/madpy/djangoMad/apps/login/views.py @@ -23,7 +23,7 @@ def login_view(request): if user.is_active: login(request, user) - return redirect('/updata') + return redirect(request.GET.get('next')) else: return render(request, "login/login.html" ) else: @@ -35,4 +35,4 @@ def login_view(request): def logout_view(request): logout(request) - return redirect('/') \ No newline at end of file + return redirect('index') \ No newline at end of file diff --git a/source/madpy/djangoMad/apps/updata/forms.py b/source/madpy/djangoMad/apps/updata/forms.py index 3d019e6..281c9e5 100755 --- a/source/madpy/djangoMad/apps/updata/forms.py +++ b/source/madpy/djangoMad/apps/updata/forms.py @@ -20,42 +20,24 @@ 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: '): +def getExperimentList(instrumentId=None): - instrumentsId= int(getSelection('instruments', args, kwargs)) + madDB = madrigal.metadata.MadrigalDB() + madWeb = madrigal.ui.web.MadrigalWeb(madDB) + + if instrumentId: + kinstList = [int(instrumentId)] + else: + kinstList = [0] - 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),] + expListin = [('0', 'Select experiment: '),] for exp in experiments: expListin.append((exp[0], exp[2])) @@ -68,31 +50,49 @@ def getExperimentList(args, kwargs, madWeb, header='Select experiment: '): 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): - 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})) + 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. @@ -100,9 +100,7 @@ class ExpForm(forms.Form): """ 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') + self.fields['experiments'] = forms.ChoiceField( + choices=getExperimentList(args[0]['instrument']), + # initial=kwargs['exp'], + required=False, label='Experiments') diff --git a/source/madpy/djangoMad/apps/updata/templates/updata/experiments.html b/source/madpy/djangoMad/apps/updata/templates/updata/experiments.html index e5b0b41..8a5489d 100755 --- a/source/madpy/djangoMad/apps/updata/templates/updata/experiments.html +++ b/source/madpy/djangoMad/apps/updata/templates/updata/experiments.html @@ -1,6 +1,4 @@ -