diff options
| 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 | 
| commit | bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed (patch) | |
| tree | 1f7dcecec02273235224cbaa86f8d4dee35068ec /archaeological_finds/forms.py | |
| parent | 923bce0f14bc6ce436a44f31c6e716ef8876cb69 (diff) | |
| download | Ishtar-bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed.tar.bz2 Ishtar-bef385bdb038c6f4f00ca8ba176c8f3d4ef5c5ed.zip | |
Basket: list view, better sheet, allow basket sharing (db and right management)
Diffstat (limited to 'archaeological_finds/forms.py')
| -rw-r--r-- | archaeological_finds/forms.py | 40 | 
1 files changed, 36 insertions, 4 deletions
| diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 610c309d0..370f29cad 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -26,6 +26,7 @@ import logging  from django import forms  from django.core import validators  from django.core.exceptions import PermissionDenied +from django.db.models import Q  from django.forms.formsets import formset_factory  from django.utils.translation import ugettext_lazy as _ @@ -71,7 +72,7 @@ __all__ = [      'AdministrativeActTreatmentFileModifForm',      'DashboardTreatmentForm', 'DashboardTreatmentFileForm',      'RecordFormSelection', 'FindForm', 'DateForm', 'DatingFormSet', -    'PreservationForm', +    'PreservationForm', 'FindBasketFormSelection',      'FindSelect', 'FindFormSelection', 'FindFormSelectionWarehouseModule',      'MultipleFindFormSelection', 'MultipleFindFormSelectionWarehouseModule',      'FindMultipleFormSelection', 'check_form', 'check_exist', 'check_not_exist', @@ -918,6 +919,34 @@ class UpstreamFindFormSelection(FindFormSelection):          self.fields['resulting_pk'] = self.fields.pop('pk') +class FindBasketSelect(CustomForm, TableSelect): +    _model = models.FindBasket + +    form_admin_name = _(u"Find basket - 001 - Search") +    form_slug = "findbasket-001-search" +    search_vector = forms.CharField( +        label=_(u"Full text search"), widget=widgets.SearchWidget( +            'archaeological-finds', 'findbasket' +        )) + +    label = forms.CharField(label=_(u"Denomination")) + + +class FindBasketFormSelection(CustomFormSearch): +    SEARCH_AND_SELECT = True +    form_label = _("Basket search") +    associated_models = {'pk': models.FindBasket} +    currents = {'pk': models.FindBasket} + +    pk = forms.IntegerField( +        label="", required=False, +        widget=widgets.DataTable( +            reverse_lazy('get-findbasket'), +            FindBasketSelect, models.FindBasket, +        ), +        validators=[valid_id(models.FindBasket)]) + +  class NewFindBasketForm(forms.ModelForm):      class Meta:          model = models.FindBasket @@ -959,7 +988,9 @@ class SelectFindBasketForm(IshtarForm):              return          self.fields['basket'].choices = [('', '--')] + [              (b.pk, unicode(b)) -            for b in models.FindBasket.objects.filter(user=self.user)] +            for b in models.FindBasket.objects.filter( +                Q(user=self.user) | Q(shared_with=self.user) +            )]  class DeleteFindBasketForm(SelectFindBasketForm): @@ -979,8 +1010,9 @@ class FindBasketAddItemForm(forms.Form):      def save(self, user):          try: -            basket = models.FindBasket.objects.get( -                pk=self.cleaned_data['basket_id'], user=user) +            basket = models.FindBasket.objects.filter( +                Q(user=user) | Q(shared_with=user) +            ).get(pk=self.cleaned_data['basket_id'])              item = models.Find.objects.get(                  pk=self.cleaned_data['item_id'])          except models.FindBasket.DoesNotExist or\ | 
