from django import forms
from django.utils.safestring import mark_safe
from .models import DeviceType, Device, Experiment
def add_empty_choice(choices, pos=0, label='-----'):
if len(choices)>0:
choices = list(choices)
choices.insert(0, (0, label))
return choices
else:
return [(0, label)]
class DatepickerWidget(forms.widgets.TextInput):
def render(self, name, value, attrs=None):
input_html = super(DatepickerWidget, self).render(name, value, attrs)
html = '
'+input_html+'
'
return mark_safe(html)
class NewExperimentForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewExperimentForm, self).__init__(*args, **kwargs)
self.fields['start_date'].widget = DatepickerWidget(self.fields['start_date'].widget.attrs)
self.fields['end_date'].widget = DatepickerWidget(self.fields['end_date'].widget.attrs)
class Meta:
model = Experiment
fields = ['name', 'alias', 'start_date', 'end_date']
class NewDeviceForm(forms.ModelForm):
class Meta:
model = Device
exclude = ['status']
class DeviceTypeForm(forms.Form):
device_type = forms.ChoiceField(choices=add_empty_choice(DeviceType.objects.all().order_by('name').values_list('id', 'name')))