diff options
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r-- | archaeological_finds/views.py | 82 |
1 files changed, 81 insertions, 1 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index b079af200..a43ebaa12 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -17,10 +17,12 @@ # See the file COPYING for details. +from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import redirect from django.utils.translation import ugettext_lazy as _ +from django.views.generic import TemplateView from django.views.generic.edit import CreateView, FormView from ishtar_common.forms import FinalForm @@ -172,13 +174,91 @@ class NewFindBasketView(IshtarMixin, LoginRequiredMixin, CreateView): return kwargs def get_success_url(self): - return reverse('new_findbasket') + return reverse('select_itemsinbasket', + kwargs={'pk': self.object.pk}) def form_valid(self, form): self.object = form.save() return HttpResponseRedirect(self.get_success_url()) +class SelectBasketForAdd(IshtarMixin, LoginRequiredMixin, FormView): + template_name = 'ishtar/form.html' + form_class = SelectFindBasketForm + page_name = _(u"Add items to basket") + + def get_form_kwargs(self): + kwargs = super(SelectBasketForAdd, self).get_form_kwargs() + kwargs['user'] = IshtarUser.objects.get(pk=self.request.user.pk) + if 'pk' in self.kwargs: + kwargs['initial'].update({'basket': self.kwargs['pk']}) + return kwargs + + def get_success_url(self, basket): + return reverse('select_itemsinbasket', + kwargs={'pk': basket}) + + def form_valid(self, form): + return HttpResponseRedirect(self.get_success_url( + form.cleaned_data['basket'])) + + +class SelectItemsInBasket(IshtarMixin, LoginRequiredMixin, TemplateView): + template_name = 'ishtar/manage_basket.html' + page_name = _(u"Manage basket") + + def get_context_data(self, *args, **kwargs): + context = super(SelectItemsInBasket, self).get_context_data( + *args, **kwargs) + self.user = IshtarUser.objects.get(pk=self.request.user.pk) + try: + self.basket = models.FindBasket.objects.get( + pk=self.kwargs['pk'], user=self.user) + except models.FindBasket.DoesNotExist: + raise PermissionDenied + context['basket'] = self.basket + context['form'] = FindFormSelection() + context['add_url'] = reverse('add_iteminbasket') + context['list_url'] = reverse('list_iteminbasket', + kwargs={'pk': self.basket.pk}) + return context + + def form_valid(self, form): + return HttpResponseRedirect(self.get_success_url()) + + +class FindBasketAddItemView(IshtarMixin, LoginRequiredMixin, FormView): + template_name = 'ishtar/simple_form.html' + form_class = FindBasketAddItemForm + + def get_success_url(self, basket): + return reverse('list_iteminbasket', kwargs={'pk': basket.pk}) + + def form_valid(self, form): + user = IshtarUser.objects.get(pk=self.request.user.pk) + # rights are checked on the form + basket = form.save(user) + return HttpResponseRedirect(self.get_success_url(basket)) + + +class FindBasketListView(IshtarMixin, LoginRequiredMixin, TemplateView): + template_name = 'ishtar/basket_list.html' + + def get_context_data(self, *args, **kwargs): + context = super(FindBasketListView, self).get_context_data( + *args, **kwargs) + self.user = IshtarUser.objects.get(pk=self.request.user.pk) + try: + self.basket = models.FindBasket.objects.get( + pk=self.kwargs['pk'], user=self.user) + except models.FindBasket.DoesNotExist: + raise PermissionDenied + context['basket'] = self.basket + context['item_url'] = '/'.join( + reverse(models.Find.SHOW_URL, args=[1]).split('/')[:-2]) + return context + + class DeleteFindBasketView(IshtarMixin, LoginRequiredMixin, FormView): template_name = 'ishtar/form_delete.html' form_class = DeleteFindBasketForm |