views.py
83 lines
| 2.2 KiB
| text/x-python
|
PythonLexer
/ plotter / views.py
r0 | # -*- coding: utf-8 -*- | ||
from __future__ import unicode_literals | |||
|
r1 | import os | |
r0 | from datetime import datetime | ||
from django import forms | |||
from django.contrib import messages | |||
from django.utils.safestring import mark_safe | |||
from django.shortcuts import render | |||
from bootstrap3_datetime.widgets import DateTimePicker | |||
r2 | import mongoengine | ||
r0 | |||
r2 | from plotter.models import Experiment, ExpMeta | ||
|
r1 | ||
r2 | host = os.environ.get('HOST_MONGO', 'localhost') | ||
mongoengine.connect('dbplots', host=host, port=27017) | |||
r0 | |||
# Forms | |||
class SearchForm(forms.Form): | |||
experiment = forms.ChoiceField() | |||
plot = forms.ChoiceField( | |||
choices = [(0, 'Select Plot'), ('rti', 'RTI'),('spc', 'Spectra'),('noise', 'Noise')] | |||
) | |||
date = forms.DateField( | |||
widget=DateTimePicker(options={"format": "DD/MM/YYYY"}) | |||
) | |||
def __init__(self, *args, **kwargs): | |||
exp_choices = kwargs.pop('exp_choices', []) | |||
super(SearchForm, self).__init__(*args, **kwargs) | |||
self.fields['experiment'].choices = [(0, 'Select Experiment')] + exp_choices | |||
# Create your views here. | |||
def main(request, code=None, plot=None): | |||
initial = {} | |||
date = request.GET.get('date', datetime.now().strftime('%d/%m/%Y')) | |||
initial['date'] = date | |||
if code is not None: | |||
initial['experiment'] = code | |||
if plot is not None: | |||
initial['plot'] = plot | |||
r2 | exps = [(q['code'], q['name']) for q in Experiment.objects.all()] | ||
r0 | form = SearchForm( | ||
initial = initial, | |||
r2 | exp_choices = [(e[0], e[1]) for e in exps] | ||
r0 | ) | ||
r2 | try: | ||
exp = ExpMeta.objects.get(code=int(code), date=datetime.strptime(date, '%d/%m/%Y')) | |||
exp_id = exp.id | |||
except: | |||
exp_id = 0 | |||
r0 | kwargs = { | ||
'code': code, | |||
'plot': plot, | |||
'date': date, | |||
'form': form, | |||
r2 | 'id': exp_id | ||
r0 | } | ||
r2 | if code and exps: | ||
r3 | kwargs['title'] = [t[1] for t in exps if int(t[0])==int(code)][0] | ||
|
r1 | else: | |
kwargs['title'] = 'JRO' | |||
r0 | |||
if plot == 'rti': | |||
return render(request, 'rti.html', kwargs) | |||
elif plot == 'spc': | |||
return render(request, 'spectra.html', kwargs) | |||
elif plot == 'noise': | |||
return render(request, 'scatter.html', kwargs) | |||
else: | |||
return render(request, 'base.html', kwargs) |