diff options
| 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 | 
| commit | 66c8c7fa80e2e1494a37503e86ccf2bb3188b87c (patch) | |
| tree | 2013c75ddcb53a525f17d55626ede968d18f4ad6 /archaeological_finds/forms.py | |
| parent | 72593b0dabfba41e5da8e5b7e1f6c786b58ba151 (diff) | |
| download | Ishtar-66c8c7fa80e2e1494a37503e86ccf2bb3188b87c.tar.bz2 Ishtar-66c8c7fa80e2e1494a37503e86ccf2bb3188b87c.zip | |
Manage 1<->n treatments wizard
Diffstat (limited to 'archaeological_finds/forms.py')
| -rw-r--r-- | archaeological_finds/forms.py | 66 | 
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 | 
