diff options
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 31 |
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 # |