diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-02-23 18:43:16 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-16 16:42:32 +0200 |
commit | 9869da3a9222eab7fb4d6e872ebbeff635e21f82 (patch) | |
tree | ad8406e12c124350c0266d9226f0eca4fb99b3a4 /archaeological_finds/forms.py | |
parent | 50dd359c1981bd4136c9dedf7a147bed9c1b47bf (diff) | |
download | Ishtar-9869da3a9222eab7fb4d6e872ebbeff635e21f82.tar.bz2 Ishtar-9869da3a9222eab7fb4d6e872ebbeff635e21f82.zip |
✨ Find - museum fields: bulk update
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r-- | archaeological_finds/forms.py | 143 |
1 files changed, 136 insertions, 7 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 4c72646cc..13e1ec1f0 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -21,6 +21,7 @@ Finds forms definitions """ +from collections import OrderedDict import logging from django import forms @@ -889,6 +890,10 @@ class QAFindFormMulti(QAForm): "qa_alterations", "qa_alteration_causes", "qa_museum_collection_entry_mode", + "qa_museum_inventory_marking_presence", + "qa_museum_marking_type", + "qa_museum_collection", + "qa_museum_original_repro", ] associated_models = { "qa_material_types": models.MaterialType, @@ -906,6 +911,14 @@ class QAFindFormMulti(QAForm): "qa_conservatory_state": models.ConservatoryState, "qa_treatment_emergency": models.TreatmentEmergencyType, "qa_museum_collection_entry_mode": models.CollectionEntryModeType, + "qa_museum_owner_institution": Organization, + "qa_museum_custodian_institution": Organization, + "qa_museum_donor": BiographicalNote, + "qa_museum_marking_type": models.MarkingType, + "qa_museum_inventory_marking_presence": models.InventoryMarkingPresence, + "qa_museum_collection": models.MuseumCollection, + "qa_museum_original_repro": models.OriginalReproduction, + "qa_museum_former_collections": BiographicalNote, } MULTI = True @@ -919,17 +932,37 @@ class QAFindFormMulti(QAForm): "qa_treatment_emergency", "qa_appraisal_date", "qa_insurance_value", # 'qa_collection', - "qa_museum_collection_entry_mode", "qa_find_number", "qa_min_number_of_individuals", "qa_museum_inventory_quantity", "qa_museum_observed_quantity", + "qa_museum_collection_entry_mode", + "qa_museum_owner_institution", + "qa_museum_custodian_institution", + "qa_museum_entry_date", + "qa_museum_entry_date_end", + "qa_museum_donor", + "qa_museum_collection", + "qa_museum_inventory_entry_year", + "qa_museum_original_repro", ] PROFILE_FILTER = { "museum": [ "qa_museum_collection_entry_mode", "qa_museum_inventory_quantity", "qa_museum_observed_quantity", + "qa_museum_owner_institution", + "qa_museum_custodian_institution", + "qa_museum_entry_mode_comment", + "qa_museum_entry_date", + "qa_museum_entry_date_end", + "qa_museum_donor", + "qa_museum_inventory_marking_presence", + "qa_museum_marking_type", + "qa_museum_collection", + "qa_museum_former_collections", + "qa_museum_inventory_entry_year", + "qa_museum_original_repro", ], } @@ -940,7 +973,7 @@ class QAFindFormMulti(QAForm): "qa_checked_type": FormHeader(_("Sheet")), "qa_period": FormHeader(_("Datation")), "qa_conservatory_comment": FormHeader(_("Preservation")), - "qa_museum_collection_entry_mode": FormHeader(_("Museum")), + "qa_museum_owner_institution": FormHeader(_("Museum")), } SINGLE_FIELDS = [ @@ -985,18 +1018,65 @@ class QAFindFormMulti(QAForm): # associated_model=Warehouse), # validators=[valid_id(Warehouse)], required=False) + ## Museum + qa_museum_owner_institution = forms.IntegerField( + label=_("Owner institution"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-organization'), + associated_model=Organization, new=True), + validators=[valid_id(Organization)], required=False) + qa_museum_custodian_institution = forms.IntegerField( + label=_("Custodian institution"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-organization'), + associated_model=Organization, new=True), + validators=[valid_id(Organization)], required=False) + qa_museum_collection_entry_mode = forms.ChoiceField(label=_("Collections entry mode"), required=False, choices=[]) + qa_museum_entry_mode_comment = forms.CharField( + label=_("Comment on museum entry mode"), required=False, widget=forms.Textarea + ) + qa_museum_entry_date = forms.DateField( + label=_("Museum entry date (exact or start)"), widget=DatePicker, required=False + ) + qa_museum_entry_date_end = forms.DateField( + label=_("Museum entry date (end)"), widget=DatePicker, required=False + ) + qa_museum_donor = forms.IntegerField( + label=_("Donor, testator or vendor"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-biographicalnote'), + associated_model=BiographicalNote), + validators=[valid_id(BiographicalNote)], + required=False + ) + qa_museum_inventory_marking_presence = widgets.Select2MultipleField( + label=_("Presence of inventory marking"), required=False, choices=[] + ) + qa_museum_marking_type = widgets.Select2MultipleField( + label=_("Type of marking"), required=False, choices=[] + ) + qa_museum_collection = forms.ChoiceField(label=_("Collection"), required=False, choices=[]) + qa_museum_former_collections = forms.IntegerField( + label=_("Former collections"), required=False, + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-biographicalnote') + ), + ) + qa_museum_inventory_entry_year = forms.IntegerField(label=_("Inventory entry year"), required=False, max_value=32000) + qa_museum_original_repro = forms.ChoiceField(label=_("Original/reproduction"), required=False, choices=[]) + qa_description = forms.CharField( label=_("Description"), widget=forms.Textarea, required=False ) - qa_material_types = widgets.Select2MultipleField( - label=_("Material types"), required=False - ) qa_find_number = forms.IntegerField(label=_("Number of remains"), required=False) qa_min_number_of_individuals = forms.IntegerField( label=_("Minimum number of individuals (MNI)"), required=False ) qa_museum_inventory_quantity = forms.IntegerField(label=_("Inventory quantity"), required=False, max_value=32000) qa_museum_observed_quantity = forms.IntegerField(label=_("Observed quantity"), required=False, max_value=32000) + qa_material_types = widgets.Select2MultipleField( + label=_("Material types"), required=False + ) qa_technical_processes = widgets.Select2MultipleField( label=_("Technical processes"), required=False, @@ -1062,7 +1142,6 @@ class QAFindFormMulti(QAForm): qa_conservatory_comment = forms.CharField( label=_("Comment on conservatory"), required=False, widget=forms.Textarea ) - qa_museum_collection_entry_mode = forms.ChoiceField(label=_("Collections entry mode"), required=False, choices=[]) TYPES = [ FieldType("qa_material_types", models.MaterialType, is_multiple=True), @@ -1081,15 +1160,65 @@ class QAFindFormMulti(QAForm): FieldType("qa_treatment_emergency", models.TreatmentEmergencyType), FieldType("qa_period", Period, is_multiple=True), FieldType("qa_museum_collection_entry_mode", models.CollectionEntryModeType), + FieldType("qa_museum_marking_type", models.MarkingType, is_multiple=True), + FieldType("qa_museum_inventory_marking_presence", models.InventoryMarkingPresence, is_multiple=True), + FieldType("qa_museum_collection", models.MuseumCollection), + FieldType("qa_museum_original_repro", models.OriginalReproduction), + ] def __init__(self, *args, **kwargs): - super(QAFindFormMulti, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) if "qa_insurance_value" in self.fields: self.fields["qa_insurance_value"].label = "{} ({})".format( str(self.fields["qa_insurance_value"].label), get_current_profile().currency, ) + if not get_current_profile().museum or "qa_mark" not in self.fields: + return + # reorder mark field + current_fields_keys = self.fields.keys() + previous_key = None + nok = True + for k in reversed(self.base_field_keys): + if k == "qa_museum_collection": + nok = False + continue + if nok: + continue + if k in current_fields_keys: + previous_key = k + break + fields = OrderedDict() + if not previous_key: + fields["qa_mark"] = self.fields["qa_mark"] + for k in current_fields_keys: + if k == "qa_mark": + continue + fields[k] = self.fields[k] + if k == previous_key: + fields["qa_mark"] = self.fields["qa_mark"] + self.fields = fields + + def _get_qa_museum_owner_institution(self, value): + return self._get_organization(value) + + def _get_qa_museum_custodian_institution(self, value): + return self._get_organization(value) + + + def _get_bio(self, value): + try: + value = BiographicalNote.objects.get(pk=value).denomination + except BiographicalNote.DoesNotExist: + return "" + return value + + def _get_qa_museum_donor(self, value): + return self._get_bio(value) + + def _get_qa_museum_former_collections(self, value): + return self._get_bio(value) def _get_qa_ue(self, value): try: |