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\ |