summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py31
1 files changed, 29 insertions, 2 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 3c06af375..95af01719 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -24,6 +24,7 @@ Finds forms definitions
from django import forms
from django.conf import settings
from django.core import validators
+from django.core.exceptions import PermissionDenied
from django.forms.formsets import formset_factory
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
@@ -412,16 +413,18 @@ class NewFindBasketForm(forms.ModelForm):
return super(NewFindBasketForm, self).save(commit)
-class DeleteFindBasketForm(forms.Form):
+class SelectFindBasketForm(forms.Form):
basket = forms.ChoiceField(label=_(u"Basket"), required=True, choices=[])
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
- super(DeleteFindBasketForm, self).__init__(*args, **kwargs)
+ super(SelectFindBasketForm, self).__init__(*args, **kwargs)
self.fields['basket'].choices = [('', '--')] + [
(b.pk, unicode(b))
for b in models.FindBasket.objects.filter(user=self.user)]
+
+class DeleteFindBasketForm(SelectFindBasketForm):
def save(self):
try:
models.FindBasket.objects.get(pk=self.cleaned_data['basket'],
@@ -431,6 +434,30 @@ class DeleteFindBasketForm(forms.Form):
pass
return
+
+class FindBasketAddItemForm(forms.Form):
+ basket_id = forms.IntegerField(required=True)
+ item_id = forms.IntegerField(required=True)
+
+ def save(self, user):
+ try:
+ basket = models.FindBasket.objects.get(
+ pk=self.cleaned_data['basket_id'], user=user.ishtaruser)
+ item = models.Find.objects.get(
+ pk=self.cleaned_data['item_id'])
+ except models.FindBasket.DoesNotExist or\
+ models.Find.DoesNotExist:
+ # something strange... TODO: log it
+ raise PermissionDenied
+ # check rights
+ if not user.is_superuser and \
+ not user.ishtaruser.has_right('change_find') and \
+ not (user.ishtaruser.has_right('change_own_find')
+ and item.is_own(user)):
+ raise PermissionDenied
+ basket.items.add(item)
+ return basket
+
"""
####################################
# Source management for treatments #