summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-22 16:08:55 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-22 16:08:55 +0200
commit29e3e7daa64e573b7481db4c0c15f1c2bc8730d6 (patch)
treeaec5bfabfb234821dee4233421d717eaf7c576f1 /archaeological_finds
parent0e93e02daa16c704e43ec19d5b4028e7a93968a5 (diff)
downloadIshtar-29e3e7daa64e573b7481db4c0c15f1c2bc8730d6.tar.bz2
Ishtar-29e3e7daa64e573b7481db4c0c15f1c2bc8730d6.zip
Basket: manage deletion
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/urls.py7
-rw-r--r--archaeological_finds/views.py38
2 files changed, 40 insertions, 5 deletions
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index 4629a38a5..deaaaff18 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -63,7 +63,7 @@ urlpatterns = patterns(
views.NewFindBasketView.as_view()), name='new_findbasket'),
url(r'^find_basket_modification_add/$',
check_rights(['change_find', 'change_own_find'])(
- views.SelectBasketForAdd.as_view()),
+ views.SelectBasketForManagement.as_view()),
name='select_findbasketforadd'),
url(r'^find_basket_modification_add/(?P<pk>[0-9]+)?/$',
check_rights(['change_find', 'change_own_find'])(
@@ -73,6 +73,11 @@ urlpatterns = patterns(
check_rights(['change_find', 'change_own_find'])(
views.FindBasketAddItemView.as_view()),
name='add_iteminbasket'),
+ url(r'^find_basket_modification_delete_item/(?P<basket>[0-9]+)?'
+ r'/(?P<find_pk>[0-9]+)?/$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.FindBasketDeleteItemView.as_view()),
+ name='delete_iteminbasket'),
url(r'^find_basket_list/(?P<pk>[0-9]+)?/$',
check_rights(['change_find', 'change_own_find'])(
views.FindBasketListView.as_view()),
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index a43ebaa12..851245201 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -182,13 +182,13 @@ class NewFindBasketView(IshtarMixin, LoginRequiredMixin, CreateView):
return HttpResponseRedirect(self.get_success_url())
-class SelectBasketForAdd(IshtarMixin, LoginRequiredMixin, FormView):
+class SelectBasketForManagement(IshtarMixin, LoginRequiredMixin, FormView):
template_name = 'ishtar/form.html'
form_class = SelectFindBasketForm
- page_name = _(u"Add items to basket")
+ page_name = _(u"Manage items in basket")
def get_form_kwargs(self):
- kwargs = super(SelectBasketForAdd, self).get_form_kwargs()
+ kwargs = super(SelectBasketForManagement, 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']})
@@ -255,10 +255,40 @@ class FindBasketListView(IshtarMixin, LoginRequiredMixin, TemplateView):
raise PermissionDenied
context['basket'] = self.basket
context['item_url'] = '/'.join(
- reverse(models.Find.SHOW_URL, args=[1]).split('/')[:-2])
+ reverse(models.Find.SHOW_URL, args=[1]).split('/')[:-1])
+ context['delete_url'] = '/'.join(
+ reverse('delete_iteminbasket', args=[1, 1]).split('/')[:-3])
return context
+class FindBasketDeleteItemView(IshtarMixin, LoginRequiredMixin, TemplateView):
+ template_name = 'ishtar/simple_form.html'
+
+ def get_success_url(self, basket):
+ return reverse('list_iteminbasket', kwargs={'pk': basket.pk})
+
+ def get(self, *args, **kwargs):
+ user = self.request.user
+ ishtaruser = IshtarUser.objects.get(pk=self.request.user.pk)
+ try:
+ find = models.Find.objects.get(
+ pk=self.kwargs['find_pk'])
+ except models.Find.DoesNotExist:
+ raise PermissionDenied
+ try:
+ basket = models.FindBasket.objects.get(
+ pk=self.kwargs['basket'], user=ishtaruser)
+ except models.FindBasket.DoesNotExist:
+ raise PermissionDenied
+ if not user.is_superuser and \
+ not ishtaruser.has_right('change_find') and \
+ not (ishtaruser.has_right('change_own_find')
+ and find.is_own(user)):
+ raise PermissionDenied
+ basket.items.remove(find)
+ return HttpResponseRedirect(self.get_success_url(basket))
+
+
class DeleteFindBasketView(IshtarMixin, LoginRequiredMixin, FormView):
template_name = 'ishtar/form_delete.html'
form_class = DeleteFindBasketForm