tweak selecting columns
authorMaciej Tronowski <mtro@man.poznan.pl>
Mon, 2 Mar 2015 12:11:54 +0000 (13:11 +0100)
committerMaciej Tronowski <mtro@man.poznan.pl>
Mon, 2 Mar 2015 12:11:54 +0000 (13:11 +0100)
qcg/forms.py
qcg/views.py

index 83a053a..3109419 100644 (file)
@@ -183,5 +183,5 @@ class ColumnsForm(forms.Form):
         (HOST, u"Host"),
     )
 
-    columns = forms.MultipleChoiceField(choices=COLUMNS_CHOICES, label=u"Kolumny", required=False,
-                                        widget=forms.CheckboxSelectMultiple)
+    columns = forms.MultipleChoiceField(choices=COLUMNS_CHOICES, initial=[k for k, v in COLUMNS_CHOICES[1:]],
+                                        label=u"Kolumny", required=False, widget=forms.CheckboxSelectMultiple)
index 7a8f351..ed9eed4 100644 (file)
@@ -115,16 +115,18 @@ def jobs_list(request):
 
     checked_status = {i: widget.is_checked() for i, widget in enumerate(filters['status'])}
 
-    if 'columns' in request.COOKIES:
-        columns = ColumnsForm(QueryDict(request.COOKIES.get('columns')))
+    columns = ColumnsForm(QueryDict(request.COOKIES.get('columns', '')))
 
-    if 'columns' not in request.COOKIES or not columns.is_valid():
-        columns = ColumnsForm(QueryDict('columns=1&columns=2&columns=3&columns=4&columns=5&columns=6'))
-        columns.is_valid()
+    displayed = None
+    if columns.is_valid():
+        displayed = {int(c) for c in columns.cleaned_data['columns']}
+
+    # if invalid or empty
+    if not displayed:
+        displayed = set(columns.fields['columns'].initial)
 
     context = {'filters': filters, 'checked_status': checked_status, 'selected_filters': selected_filters,
-               'columns': ColumnsForm(initial={'columns': columns.cleaned_data['columns']}),
-               'displayed': {int(c) for c in columns.cleaned_data['columns']}}
+               'columns': ColumnsForm(initial={'columns': displayed}), 'displayed': displayed}
 
     context.update(paginator_context(request, tasks))