diff -r 1121fd3d8b0e -r 604b887e70c3 src/hdalab/views/profile.py --- 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")