summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-11-19 20:18:38 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-11-28 11:40:17 +0100
commit66c8c7fa80e2e1494a37503e86ccf2bb3188b87c (patch)
tree2013c75ddcb53a525f17d55626ede968d18f4ad6 /archaeological_finds/forms.py
parent72593b0dabfba41e5da8e5b7e1f6c786b58ba151 (diff)
downloadIshtar-66c8c7fa80e2e1494a37503e86ccf2bb3188b87c.tar.bz2
Ishtar-66c8c7fa80e2e1494a37503e86ccf2bb3188b87c.zip
Manage 1<->n treatments wizard
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py66
1 files changed, 61 insertions, 5 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 970b35f92..b95ac90c6 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -44,7 +44,7 @@ from archaeological_finds.forms_treatments import TreatmentSelect, \
AdministrativeActTreatmentFileFormSelection, \
AdministrativeActTreatmentFileModifForm, \
DashboardForm as DashboardTreatmentForm, N1TreatmentForm,\
- DashboardTreatmentFileForm, QAFindTreatmentForm
+ DashboardTreatmentFileForm, QAFindTreatmentForm, OneNTreatmentForm
from archaeological_operations.models import Period, ArchaeologicalSite, \
RelationType as OpeRelationType
from archaeological_operations.widgets import OAWidget
@@ -84,7 +84,8 @@ __all__ = [
'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm',
'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm',
'QAFindTreatmentForm',
- 'N1TreatmentForm', 'ResultingFindForm'
+ 'N1TreatmentForm', 'OneNTreatmentForm', 'ResultingFindForm',
+ 'ResultingFindsForm', 'SingleUpstreamFindFormSelection'
]
logger = logging.getLogger(__name__)
@@ -379,8 +380,8 @@ class SimpleFindForm(BaseFindForm):
class ResultingFindForm(CustomForm, ManageOldType):
file_upload = True
form_label = _("Resulting find")
- form_admin_name = _(u"Treatment n-1 - 030 - General")
- form_slug = "treatmentn1-030-general"
+ form_admin_name = _(u"Treatment n-1 - 030 - Resulting find")
+ form_slug = "treatmentn1-030-resulting-find"
associated_models = {
'resulting_material_type': models.MaterialType,
@@ -472,6 +473,50 @@ class ResultingFindForm(CustomForm, ManageOldType):
]
+class ResultingFindsForm(CustomForm, ManageOldType):
+ form_label = _("Resulting finds")
+ form_admin_name = _(u"Treatment 1-n - 030 - Resulting finds")
+ form_slug = "treatment1n-030-resulting-finds"
+ associated_models = {}
+
+ resultings_number = forms.IntegerField(
+ label=_(u"Number of resulting finds"),
+ min_value=1
+ )
+ resultings_label = forms.CharField(
+ label=_(u"Prefix label for resulting finds"),
+ validators=[validators.MaxLengthValidator(200)],
+ help_text=_(
+ u'E.g.: with a prefix "item-", each resulting item will be named '
+ u'"item-1", "item-2", "item-3"')
+ )
+ resultings_start_number = forms.IntegerField(
+ label=_(u"Numbering starting from"), initial=1, min_value=0
+ )
+ resultings_basket_name = forms.CharField(
+ label=_(u"Name of the new basket containing the resulting items"),
+ max_length=200
+ )
+
+ def __init__(self, *args, **kwargs):
+ self.user = None
+ if 'user' in kwargs:
+ self.user = kwargs.pop('user')
+ if hasattr(self.user, 'ishtaruser'):
+ self.user = self.user.ishtaruser
+ super(ResultingFindsForm, self).__init__(*args, **kwargs)
+ if not self.user:
+ return
+
+ def clean(self):
+ q = models.FindBasket.objects.filter(
+ user=self.user, label=self.cleaned_data['resultings_basket_name'])
+ if q.count():
+ raise forms.ValidationError(_(u"A basket with this label already "
+ u"exists."))
+ return self.cleaned_data
+
+
class QAFindFormMulti(QAForm):
form_admin_name = _(u"Find - Quick action - Modify")
form_slug = "find-quickaction-modify"
@@ -1065,7 +1110,7 @@ class FindDeletionForm(FinalForm):
class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection):
- form_label = _(u"Upstream find")
+ form_label = _(u"Upstream finds")
current_model = models.Find
pk_key = 'resulting_pk'
@@ -1084,6 +1129,17 @@ class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection):
self.fields['resulting_pk'] = self.fields.pop('pk')
+class SingleUpstreamFindFormSelection(UpstreamFindFormSelection):
+ current_model = models.Find
+ pk = forms.CharField(
+ label="", required=False,
+ widget=widgets.DataTable(
+ reverse_lazy('get-find'),
+ FindSelect, current_model,
+ source_full=reverse_lazy('get-find-full')),
+ validators=[valid_ids(current_model)])
+
+
class FindBasketSelect(CustomForm, TableSelect):
_model = models.FindBasket