diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-21 17:06:53 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-24 18:09:08 +0100 |
commit | bc6cf94def73926e6f6bb986d61e5861a17584e2 (patch) | |
tree | ba4a7438cd6594c02938ad3211d523c6dd28a79f /archaeological_finds/forms_treatments.py | |
parent | 1b72554283f5c9e0644262a3f182409376870991 (diff) | |
download | Ishtar-bc6cf94def73926e6f6bb986d61e5861a17584e2.tar.bz2 Ishtar-bc6cf94def73926e6f6bb986d61e5861a17584e2.zip |
✨ treatment state refactoring -> distinct input status and treatment status (refs #6182) - treatments: search criteria
Diffstat (limited to 'archaeological_finds/forms_treatments.py')
-rw-r--r-- | archaeological_finds/forms_treatments.py | 162 |
1 files changed, 105 insertions, 57 deletions
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index 936834267..b4cd973c1 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -64,6 +64,38 @@ class TreatmentSelect(DocumentItemSelect): associated_model=Person), label=_("Scientific monitoring manager")) treatment_types = forms.ChoiceField(label=_("Treatment type"), choices=[]) + label = forms.CharField(label=_("Label"), + max_length=200, required=False) + reference = forms.CharField( + label=_("Reference"), max_length=200, required=False) + treatment_status = forms.ChoiceField(label=_("Status"), choices=[]) + input_status = forms.ChoiceField(label=_("Input status"), choices=[]) + location = forms.IntegerField( + label=_("Location"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse), + validators=[valid_id(Warehouse)]) + scientific_monitoring_manager = forms.IntegerField( + label=_("Scientific monitoring manager"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person'), associated_model=Person), + ) + person = forms.IntegerField( + label=_("Responsible of the treatment"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person'), associated_model=Person), + ) + organization = forms.IntegerField( + label=_("Organization"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-organization'), + associated_model=Organization), + ) + TYPES = [ + FieldType('treatment_status', models.TreatmentStatus), + FieldType('input_status', models.TreatmentInputStatus), + FieldType('treatment_type', models.TreatmentType), + ] def __init__(self, *args, **kwargs): super(TreatmentSelect, self).__init__(*args, **kwargs) @@ -88,36 +120,39 @@ class TreatmentFormSelection(CustomForm, forms.Form): validators=[valid_id(models.Treatment)]) -class TreatmentStateSelect(forms.Select): +class TreatmentInputStatusSelect(forms.Select): def render(self, name, value, attrs=None, renderer=None): - rendered = super(TreatmentStateSelect, self).render(name, value, attrs, - renderer) + rendered = super().render(name, value, attrs, renderer) executed_id = [ - str(t.pk) for t in models.TreatmentState.objects.filter( + str(t.pk) for t in models.TreatmentInputStatus.objects.filter( executed=True).all()] if not executed_id: return rendered message = '<i class="fa fa-exclamation-triangle" ' \ 'aria-hidden="true"></i> ' - message += str(_("Once validated, this state is not reversible.")) + message += str(_("Once validated, this input status is not reversible.")) + message += " " + str( + _("Depending on the type of treatment, container change and find " + "separation/grouping will be carried out on a database basis.") + ) rendered += """ - <div id="%(name)s-msg"class="alert alert-warning d-none">%(message)s</div> - <script type='text/javascript'> - var %(id)s_exec_list = ['%(exec_list)s']; - var %(id)s_check = function(){ - var current_val = $("#id_%(name)s").val(); - if (%(id)s_exec_list.indexOf(current_val) != -1){ - $("#%(name)s-msg").removeClass("d-none"); - } else { - $("#%(name)s-msg").addClass("d-none"); - } - }; - - $("#id_%(name)s").change(%(id)s_check); - setTimeout(function(){ %(id)s_check(); }, 500); - </script>""" % {"name": name, "id": name.replace("-", "_"), - "exec_list": "','".join(executed_id), - "message": message} +<div id="%(name)s-msg"class="alert alert-warning d-none">%(message)s</div> +<script type='text/javascript'> +var %(id)s_exec_list = ['%(exec_list)s']; +var %(id)s_check = function(){ + var current_val = $("#id_%(name)s").val(); + if (%(id)s_exec_list.indexOf(current_val) != -1){ + $("#%(name)s-msg").removeClass("d-none"); + } else { + $("#%(name)s-msg").addClass("d-none"); + } +}; + +$("#id_%(name)s").change(%(id)s_check); +setTimeout(function(){ %(id)s_check(); }, 500); +</script>""" % {"name": name, "id": name.replace("-", "_"), + "exec_list": "','".join(executed_id), + "message": message} return rendered @@ -128,32 +163,51 @@ class BaseTreatmentForm(CustomForm, ManageOldType): form_admin_name = _("Treatment - 020 - General") form_slug = "treatment-020-general" base_models = ['treatment_type'] - associated_models = {'treatment_type': models.TreatmentType, - 'person': Person, - 'scientific_monitoring_manager': Person, - 'location': Warehouse, - 'organization': Organization, - 'container': Container, - 'treatment_state': models.TreatmentState, - } + associated_models = { + 'treatment_type': models.TreatmentType, + 'person': Person, + 'scientific_monitoring_manager': Person, + 'location': Warehouse, + 'organization': Organization, + 'container': Container, + 'treatment_status': models.TreatmentStatus, + 'input_status': models.TreatmentInputStatus, + } + HEADERS = { + "treatment_type": FormHeader(_("General")), + "location": FormHeader(_("Location/responsability")), + "start_date": FormHeader(_("Details")), + } file_upload = True need_user_for_initialization = True treatment_type = widgets.Select2MultipleField( label=_("Treatment type"), choices=[], widget=widgets.CheckboxSelectMultiple) - treatment_state = forms.ChoiceField(label=_("State"), choices=[], - widget=TreatmentStateSelect) year = forms.IntegerField(label=_("Year"), initial=lambda: datetime.datetime.now().year, validators=[validators.MinValueValidator(1000), validators.MaxValueValidator(2100)]) + label = forms.CharField(label=_("Label"), + max_length=200, required=False) + reference = forms.CharField( + label=_("Reference"), max_length=200, required=False) + treatment_status = forms.ChoiceField(label=_("Status"), choices=[]) + input_status = forms.ChoiceField(label=_("Input status"), choices=[], + widget=TreatmentInputStatusSelect) location = forms.IntegerField( label=_("Location"), widget=widgets.JQueryAutoComplete( reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse, new=True), validators=[valid_id(Warehouse)]) + container = forms.IntegerField( + label=_("Destination container (relevant for treatment that change " + "location)"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-container'), + associated_model=Container, new=True), + validators=[valid_id(Container)], required=False) scientific_monitoring_manager = forms.IntegerField( label=_("Scientific monitoring manager"), widget=widgets.JQueryAutoComplete( @@ -161,7 +215,7 @@ class BaseTreatmentForm(CustomForm, ManageOldType): new=True), validators=[valid_id(Person)], required=False) person = forms.IntegerField( - label=_("Responsible"), + label=_("Responsible of the treatment"), widget=widgets.JQueryAutoComplete( reverse_lazy('autocomplete-person'), associated_model=Person, new=True), @@ -172,22 +226,11 @@ class BaseTreatmentForm(CustomForm, ManageOldType): reverse_lazy('autocomplete-organization'), associated_model=Organization, new=True), validators=[valid_id(Organization)], required=False) - label = forms.CharField(label=_("Label"), - max_length=200, required=False) - reference = forms.CharField( - label=_("Reference"), max_length=200, required=False) # external_id = forms.CharField( # label=_("External ref."), max_length=200, required=False) start_date = DateField(label=_("Start date"), required=False, initial=datetime.date.today) - end_date = DateField(label=_("Closing date"), required=False) - container = forms.IntegerField( - label=_("Destination container (relevant for treatment that change " - "location)"), - widget=widgets.JQueryAutoComplete( - reverse_lazy('autocomplete-container'), - associated_model=Container, new=True), - validators=[valid_id(Container)], required=False) + end_date = DateField(label=_("End date"), required=False) goal = forms.CharField(label=_("Goal"), widget=forms.Textarea, required=False) description = forms.CharField(label=_("Description"), @@ -206,7 +249,8 @@ class BaseTreatmentForm(CustomForm, ManageOldType): widget=forms.HiddenInput) TYPES = [ - FieldType('treatment_state', models.TreatmentState, True), + FieldType('treatment_status', models.TreatmentStatus, True), + FieldType('input_status', models.TreatmentInputStatus, True), FieldType( 'treatment_type', models.TreatmentType, is_multiple=True, extra_args={'dct': {'upstream_is_many': False, @@ -238,9 +282,9 @@ class BaseTreatmentForm(CustomForm, ManageOldType): initial = kwargs.get('initial', {}) if initial.get('executed', False): - self.fields['treatment_state'].choices = \ - models.TreatmentState.get_types(empty_first=False, - dct={'executed': True}) + self.fields['input_status'].choices = \ + models.TreatmentInputStatus.get_types( + empty_first=False, dct={'executed': True}) q = Person.objects.filter(ishtaruser__pk=user.pk) if q.count(): @@ -288,8 +332,8 @@ class BaseTreatmentForm(CustomForm, ManageOldType): if tp.change_reference_location ] - if (change_ref_location or change_current_location - ) and restore_reference_location: + if (change_ref_location or change_current_location) and \ + restore_reference_location: if change_ref_location: raise forms.ValidationError( str( @@ -332,7 +376,8 @@ class N1TreatmentForm(BaseTreatmentForm): form_slug = "treatmentn1-020-general" TYPES = [ - FieldType('treatment_state', models.TreatmentState, True, + FieldType('treatment_status', models.TreatmentStatus, True), + FieldType('input_status', models.TreatmentInputStatus, True, extra_args={'dct': {"executed": True}}), FieldType( 'treatment_type', models.TreatmentType, is_multiple=True, @@ -347,7 +392,8 @@ class OneNTreatmentForm(BaseTreatmentForm): form_slug = "treatment1n-020-general" TYPES = [ - FieldType('treatment_state', models.TreatmentState, True, + FieldType('treatment_status', models.TreatmentStatus, True), + FieldType('input_status', models.TreatmentInputStatus, True, extra_args={'dct': {"executed": True}}), FieldType( 'treatment_type', models.TreatmentType, is_multiple=True, @@ -534,7 +580,8 @@ class QAFindTreatmentForm(QABasePackagingForm): if self.cleaned_data['create_treatment']: treat_type = models.TreatmentType.objects.get( pk=self.cleaned_data['treatment_type']) - treat_state = models.TreatmentState.get_completed_state() + treat_input_status = models.TreatmentInputStatus.get_validated_state() + treat_status = models.TreatmentStatus.get_completed_state() t = models.Treatment.objects.create( container=container, year=self.cleaned_data['year'], @@ -543,7 +590,8 @@ class QAFindTreatmentForm(QABasePackagingForm): person_id=self.cleaned_data['person'], organization_id=self.cleaned_data['organization'], history_modifier=user, - treatment_state=treat_state + input_status=treat_input_status, + treatment_status=treat_status, ) t.treatment_types.add(treat_type) t.save(items=items) @@ -670,7 +718,7 @@ class TreatmentFileSelect(DocumentItemSelect): associated_model=Organization), validators=[valid_id(Organization)]) - end_date = DateField(label=_("Closing date"), required=False) + end_date = DateField(label=_("End date"), required=False) exhibition_start = DateField(label=_("Exhibition start date")) exhibition_end = DateField(label=_("Exhibition end date")) @@ -762,7 +810,7 @@ class TreatmentFileForm(CustomForm, ManageOldType): ) creation_date = DateField(label=_("Start date"), required=False, initial=lambda: datetime.datetime.now()) - end_date = DateField(label=_("Closing date"), required=False) + end_date = DateField(label=_("End date"), required=False) TYPES = [ FieldType('type', models.TreatmentFileType), |