--- 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")