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  | 
