##// END OF EJS Templates
Buttons "Import", "Export, "Read" and "Write" added to Configuration View...
Buttons "Import", "Export, "Read" and "Write" added to Configuration View git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@50 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71

File last commit:

r25:f193286b21f7
r30:64b312519049
Show More
forms.py
86 lines | 3.6 KiB | text/x-python | PythonLexer
Juan C. Espinoza
Add rc config mods...
r23 import json
Miguel Urco
Campaign has been added to RadarSys Model...
r13 from django import forms
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 from .models import RCConfiguration, RCLine, RCLineType, RCLineCode
def create_choices_from_model(model, conf_id):
if model=='RCLine':
instance = RCConfiguration.objects.get(pk=conf_id)
return instance.get_refs_lines()
else:
instance = globals()[model]
return instance.objects.all().values_list('pk', 'name')
Miguel Urco
Campaign has been added to RadarSys Model...
r13
class RCConfigurationForm(forms.ModelForm):
class Meta:
model = RCConfiguration
Juan C. Espinoza
Add rc config mods...
r23 exclude = ('clock', 'ipp', 'ntx', 'clock_divider')
class RCLineForm(forms.ModelForm):
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 def __init__(self, *args, **kwargs):
self.extra_fields = kwargs.pop('extra_fields', [])
super(RCLineForm, self).__init__(*args, **kwargs)
if 'initial'in kwargs:
for item in self.extra_fields:
if 'model' in item:
self.fields[item['name']] = forms.ChoiceField(choices=create_choices_from_model(item['model'],
kwargs['initial']['rc_configuration']))
else:
self.fields[item['name']] = forms.CharField(initial=item['value'])
Juan C. Espinoza
Add rc config mods...
r23 class Meta:
model = RCLine
fields = ('rc_configuration', 'line_type', 'channel')
widgets = {
'channel': forms.HiddenInput(),
}
def save(self):
line = super(RCLineForm, self).save()
Juan C. Espinoza
Updates to models, views & forms for CR...
r25
Juan C. Espinoza
Add rc config mods...
r23 #auto add channel
line.channel = RCLine.objects.filter(rc_configuration=line.rc_configuration).count()-1
Juan C. Espinoza
Updates to models, views & forms for CR...
r25
Juan C. Espinoza
Add rc config mods...
r23 #auto add position for TX, TR & CODE
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 if line.line_type.name in ('tx', 'tr', 'codes', 'windows'):
Juan C. Espinoza
Add rc config mods...
r23 line.position = RCLine.objects.filter(rc_configuration=line.rc_configuration, line_type=line.line_type).count()-1
Juan C. Espinoza
Updates to models, views & forms for CR...
r25
#save extra fields in params
Juan C. Espinoza
Add rc config mods...
r23 params = {}
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 for item in self.extra_fields:
params[item['name']] = self.data[item['name']]
Juan C. Espinoza
Add rc config mods...
r23 line.params = json.dumps(params)
line.save()
return
class RCLineViewForm(forms.Form):
def __init__(self, *args, **kwargs):
extra_fields = kwargs.pop('extra_fields')
super(RCLineViewForm, self).__init__(*args, **kwargs)
for label, value in extra_fields.items():
Juan C. Espinoza
Updates to models, views & forms for CR...
r25 if 'ref' in label:
value = RCLine.objects.get(pk=value).get_name()
elif 'code' in label:
value = RCLineCode.objects.get(pk=value).name
self.fields[label] = forms.CharField(initial=value)
class RCLineEditForm(forms.Form):
def __init__(self, *args, **kwargs):
self.extra_fields = kwargs.pop('extra_fields', [])
super(RCLineEditForm, self).__init__(*args, **kwargs)
if 'initial'in kwargs:
for item in self.extra_fields:
if 'model' in item:
self.fields[item['name']] = forms.ChoiceField(choices=create_choices_from_model(item['model'],
kwargs['initial']['rc_configuration']),
initial=item['value'],
widget=forms.Select(attrs={'name':'%s|%s' % (kwargs['initial']['line'], item['name'])}))
else:
self.fields[item['name']] = forms.CharField(initial=item['value'],
widget=forms.TextInput(attrs={'name':'%s|%s' % (kwargs['initial']['line'], item['name'])}))