Przeglądaj źródła

Refactor to use form

Denis K 9 lat temu
rodzic
commit
8720cca542
3 zmienionych plików z 38 dodań i 4 usunięć
  1. 28 0
      jet/dashboard/forms.py
  2. 1 1
      jet/dashboard/urls.py
  3. 9 3
      jet/dashboard/views.py

+ 28 - 0
jet/dashboard/forms.py

@@ -130,3 +130,31 @@ class RemoveDashboardModuleForm(forms.ModelForm):
     def save(self, commit=True):
         if commit:
             self.instance.delete()
+
+
+class ResetDashboardForm(forms.Form):
+    app_label = forms.CharField(required=False)
+
+    def __init__(self, request, *args, **kwargs):
+        self.request = request
+        super(ResetDashboardForm, self).__init__(*args, **kwargs)
+
+    class Meta:
+        model = UserDashboardModule
+        fields = []
+
+    def clean(self):
+        data = super(ResetDashboardForm, self).clean()
+        data['app_label'] = data['app_label'] if data['app_label'] else None
+
+        if not self.request.user.is_authenticated():
+            raise ValidationError('error')
+
+        return data
+
+    def save(self, commit=True):
+        if commit:
+            UserDashboardModule.objects.filter(
+                user=self.request.user.pk,
+                app_label=self.cleaned_data['app_label']
+            ).delete()

+ 1 - 1
jet/dashboard/urls.py

@@ -38,7 +38,7 @@ urlpatterns = patterns(
         name='load_dashboard_module'
     ),
     url(
-        r'^reset_dashboard/((?P<app_label>[^/]+)/)?$',
+        r'^reset_dashboard/$',
         reset_dashboard_view,
         name='reset_dashboard'
     ),

+ 9 - 3
jet/dashboard/views.py

@@ -4,7 +4,7 @@ from django.forms.formsets import formset_factory
 from django.shortcuts import redirect
 from django.views.decorators.http import require_POST, require_GET
 from jet.dashboard.forms import UpdateDashboardModulesForm, AddUserDashboardModuleForm, \
-    UpdateDashboardModuleCollapseForm, RemoveDashboardModuleForm
+    UpdateDashboardModuleCollapseForm, RemoveDashboardModuleForm, ResetDashboardForm
 from jet.dashboard.models import UserDashboardModule
 from jet.utils import JsonResponse, get_app_list, SuccessMessageMixin
 from django.views.generic import UpdateView
@@ -214,8 +214,14 @@ def load_dashboard_module_view(request, pk):
     return JsonResponse(result)
 
 
-def reset_dashboard_view(request, app_label=None):
+@require_POST
+def reset_dashboard_view(request):
     result = {'error': False}
-    UserDashboardModule.objects.filter(user=request.user.pk, app_label=app_label).delete()
+    form = ResetDashboardForm(request, request.POST)
+
+    if form.is_valid():
+        form.save()
+    else:
+        result['error'] = True
 
     return JsonResponse(result)