summaryrefslogtreecommitdiff
path: root/archaeological_finds/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-18 17:56:55 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-10-24 12:06:09 +0200
commitbef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed (patch)
tree1f7dcecec02273235224cbaa86f8d4dee35068ec /archaeological_finds/views.py
parent923bce0f14bc6ce436a44f31c6e716ef8876cb69 (diff)
downloadIshtar-bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed.tar.bz2
Ishtar-bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed.zip
Basket: list view, better sheet, allow basket sharing (db and right management)
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r--archaeological_finds/views.py54
1 files changed, 36 insertions, 18 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 7855b5099..7523df145 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -113,6 +113,16 @@ show_findbasket = show_item(models.FindBasket, 'findbasket')
display_findbasket = display_item(models.FindBasket,
show_url='show-find/basket-')
+get_find_basket = get_item(
+ models.FindBasket, 'get_findbasket', 'findbasket',
+)
+
+basket_search_wizard = FindBasketSearch.as_view(
+ [('general-basket_search', FindBasketFormSelection)],
+ label=_(u"Basket search"),
+ url_name='find_basket_search',
+)
+
def check_preservation_module(self):
return get_current_profile().preservation
@@ -234,6 +244,16 @@ class NewFindBasketView(IshtarMixin, LoginRequiredMixin, CreateView):
return HttpResponseRedirect(self.get_success_url())
+class OwnBasket(object):
+ def get_basket(self, user, pk):
+ try:
+ return models.FindBasket.objects.filter(
+ Q(user=user) | Q(shared_with=user)
+ ).get(pk=pk)
+ except models.FindBasket.DoesNotExist:
+ raise PermissionDenied
+
+
class SelectBasketForManagement(IshtarMixin, LoginRequiredMixin, FormView):
template_name = 'ishtar/form.html'
form_class = SelectFindBasketForm
@@ -255,7 +275,8 @@ class SelectBasketForManagement(IshtarMixin, LoginRequiredMixin, FormView):
form.cleaned_data['basket']))
-class SelectItemsInBasket(IshtarMixin, LoginRequiredMixin, TemplateView):
+class SelectItemsInBasket(OwnBasket, IshtarMixin, LoginRequiredMixin,
+ TemplateView):
template_name = 'ishtar/manage_basket.html'
page_name = _(u"Manage basket")
@@ -263,11 +284,9 @@ class SelectItemsInBasket(IshtarMixin, LoginRequiredMixin, TemplateView):
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
+ self.basket = self.get_basket(
+ user=self.user, pk=self.kwargs['pk']
+ )
context['basket'] = self.basket
if get_current_profile().warehouse:
context['form'] = MultipleFindFormSelectionWarehouseModule()
@@ -296,18 +315,17 @@ class FindBasketAddItemView(IshtarMixin, LoginRequiredMixin, FormView):
return HttpResponseRedirect(self.get_success_url(basket))
-class FindBasketListView(IshtarMixin, LoginRequiredMixin, TemplateView):
+class FindBasketListView(OwnBasket, 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
+ self.basket = self.get_basket(
+ user=self.user, pk=self.kwargs['pk']
+ )
context['basket'] = self.basket
context['item_url'] = '/'.join(
reverse(models.Find.SHOW_URL, args=[1]).split('/')[:-1])
@@ -316,7 +334,8 @@ class FindBasketListView(IshtarMixin, LoginRequiredMixin, TemplateView):
return context
-class FindBasketDeleteItemView(IshtarMixin, LoginRequiredMixin, TemplateView):
+class FindBasketDeleteItemView(OwnBasket, IshtarMixin, LoginRequiredMixin,
+ TemplateView):
template_name = 'ishtar/simple_form.html'
def get_success_url(self, basket):
@@ -330,11 +349,10 @@ class FindBasketDeleteItemView(IshtarMixin, LoginRequiredMixin, TemplateView):
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
+
+ basket = self.get_basket(
+ user=ishtaruser, pk=self.kwargs['basket']
+ )
if not user.is_superuser and \
not ishtaruser.has_right('view_find') and \
not (ishtaruser.has_right('view_own_find')