src/hdalab/views/profile.py
changeset 458 604b887e70c3
parent 445 a74ec9e02042
child 473 f469ab22542d
--- a/src/hdalab/views/profile.py	Thu Feb 26 15:51:03 2015 +0100
+++ b/src/hdalab/views/profile.py	Thu Feb 26 10:33:10 2015 +0100
@@ -38,6 +38,10 @@
 import uuid
 
 import logging
+from django.views.generic.edit import ModelFormMixin
+from hdalab.forms import HdalabRenkanStateForm
+from django.contrib.admin.models import CHANGE
+from hdalab.services import change_renkan_state
 logger = logging.getLogger(__name__)
 
 
@@ -117,7 +121,7 @@
         return self.update_context( super(RenkanPublicList, self).get_context_data(**kwargs), HdalabRenkan.objects.select_related("renkan", "renkan__owner").filter(state=HdalabRenkan.PUBLISHED) )
 
 
-
+#TODO  transform in post
 class RenkanNew(View):
     
     def get(self, request):
@@ -617,53 +621,49 @@
 
 
 
-
 class HdalabRenkanCopy(View):
     
-    def get(self, request, rk_id):
+    def post(self, request, rk_id):
         rk = renkan_copier(request.user, rk_id)
         hr = HdalabRenkan()
         hr.renkan = rk
         hr.state = HdalabRenkan.EDITION
         hr.save()
-        if "next" in request.GET:
-            return redirect(request.GET["next"])
+        if "next" in request.POST:
+            return redirect(request.POST["next"])
         return redirect(reverse('profile_home'))
 
 
-
 class HdalabRenkanDelete(View):
     
-    def get(self, request, rk_id):
+    def post(self, request, rk_id):
         try:
             hr = HdalabRenkan.objects.get(renkan__rk_id=rk_id)
         except:
             raise Http404('Renkan not found')
         renkan_deleter(request.user, rk_id)
         hr.delete()
-        if "next" in request.GET:
-            return redirect(request.GET["next"])
+        if "next" in request.POST:
+            return redirect(request.POST["next"])
         return redirect(reverse('profile_home'))
 
 
-
-class HdalabRenkanModerate(View):
+class HdalabRenkanModerate(View, ModelFormMixin):
     
-    def get(self, request, rk_id, state):
-        if rk_id!="":
-            try:
-                hr = HdalabRenkan.objects.select_related("renkan", "renkan__owner").get(renkan__rk_id=rk_id)
-            except:
-                raise Http404('Renkan not found')
-            if hr.renkan.owner!=request.user and not request.user.is_staff:
-                return HttpResponseBadRequest("You are not allowed to modify the state this renkan.")
-            hr.state = state
-            hr.save()
-        
-        if "next" in request.GET:
-            return redirect(request.GET["next"])
-            
-        return redirect(reverse('profile_home'))
+    def post(self, request, rk_id):
+        form = HdalabRenkanStateForm(request.POST)
+        if form.is_valid():
+            logger.debug("FORM DATA %r", form.cleaned_data)
+            renkan_hda =  get_object_or_404(HdalabRenkan, renkan__rk_id=rk_id)
+            change_renkan_state(renkan_hda, form.cleaned_data['state'], form.cleaned_data['message'], request.user)
+            next_url = form.cleaned_data.get('next', None)
+            if next_url:
+                return redirect(next_url)
+            else:
+                redirect(reverse('profile_home'))
+        else:
+            logger.debug("FORM INVALID %r : %r", request.POST, form.errors)
+            return HttpResponseBadRequest("State form invalid")