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