fix initial values in job description form
authorMaciej Tronowski <mtro@man.poznan.pl>
Fri, 11 Sep 2015 11:51:56 +0000 (13:51 +0200)
committerDawid Jagieła <lightnir@gmail.com>
Sat, 12 Sep 2015 10:24:03 +0000 (12:24 +0200)
qcg/forms.py

index 26f901f..a520cf8 100644 (file)
@@ -166,11 +166,17 @@ class JobDescriptionForm(forms.Form):
         self.fields['modules'].choices = modules
 
         if data or initial:
-            self._init_user_choices('queue', data, initial)
-            self._init_user_choices('arguments', data, initial)
-            self._init_user_choices('native', data, initial)
-            self._init_user_choices('stage_in', data, initial)
-            self._init_user_choices('force_field', data, initial)
+            self._init_user_choices('queue')
+            self._init_user_choices('arguments')
+            self._init_user_choices('native')
+            self._init_user_choices('stage_in')
+            self._init_user_choices('force_field')
+
+            if not hosts:
+                self._init_user_choices('hosts')
+                self._init_user_choices('application')
+                self._init_user_choices('modules')
+
 
     def clean(self):
         data = super(JobDescriptionForm, self).clean()
@@ -250,13 +256,12 @@ class JobDescriptionForm(forms.Form):
         if url:
             return url if url.startswith('gsiftp://') else 'gsiftp://' + url
 
-    def _init_user_choices(self, name, data, initial):
-        initial = initial.get(name) if initial is not None else None
-        choices = data.getlist(name)[:] if data is not None else []
+    def _init_user_choices(self, name):
+        initial = self.initial.get(name)
+        choices = self.data.getlist(name)[:] if self.data else []
 
         if initial:
             choices += initial if isinstance(initial, list) else [initial]
-            self.fields[name].initial = initial
 
         if choices:
             self.fields[name].choices += ((v, v) for v in choices)