forms.py
36 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
|
r12 | from django import forms | ||
|
r13 | from apps.main.models import Device | ||
|
r12 | from .models import DDSConfiguration | ||
from django.core.validators import MinValueValidator, MaxValueValidator | ||||
class DDSConfigurationForm(forms.ModelForm): | ||||
|
r13 | frequency = forms.FloatField(label='Frequency (MHz)', validators=[MinValueValidator(0), MaxValueValidator(150)]) | ||
phase = forms.FloatField(label='Phase (Degrees)', validators=[MinValueValidator(0), MaxValueValidator(360)]) | ||||
|
r12 | |||
|
r13 | frequency_mod = forms.FloatField(label='Frequency (MHz)', validators=[MinValueValidator(0), MaxValueValidator(150)], required=False) | ||
phase_mod = forms.FloatField(label='Phase (Degrees)', validators=[MinValueValidator(0), MaxValueValidator(360)], required=False) | ||||
|
r12 | |||
def __init__(self, *args, **kwargs): | ||||
#request = kwargs.pop('request') | ||||
super(DDSConfigurationForm, self).__init__(*args, **kwargs) | ||||
|
r13 | |||
instance = getattr(self, 'instance', None) | ||||
if instance and instance.pk: | ||||
devices = Device.objects.filter(device_type__name='dds') | ||||
items = devices.values('id', 'name', 'device_type__name', 'ip_address') | ||||
self.fields['experiment'].widget.attrs['readonly'] = True | ||||
self.fields['device'].widget.choices = [(item['id'], '[%s]: %s | %s' % (item['device_type__name'], item['name'], item['ip_address'])) for item in items] | ||||
|
r12 | def clean(self): | ||
# Custom validation to force an integer when type of unit = "Unit" | ||||
return | ||||
class Meta: | ||||
model = DDSConfiguration | ||||
|
r13 | fields = ('experiment', 'device', 'clock', 'multiplier', 'modulation') | ||