diff options
-rw-r--r-- | archaeological_finds/forms.py | 31 | ||||
-rw-r--r-- | archaeological_finds/migrations/0138_donor_to_donors.py | 36 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 16 | ||||
-rw-r--r-- | archaeological_finds/templates/ishtar/sheet_find.html | 4 | ||||
-rw-r--r-- | archaeological_finds/templates/ishtar/sheet_museum_find.html | 4 |
5 files changed, 61 insertions, 30 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 6cbb950fb..31673014c 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -247,6 +247,7 @@ class BasicFindForm(MuseumForm, CustomForm, ManageOldType): "technical_area", "technical_processe", "museum_former_collection", + "museum_donor", "museum_inventory_marking_presence", "museum_marking_type", ] @@ -423,14 +424,9 @@ class BasicFindForm(MuseumForm, CustomForm, ManageOldType): museum_entry_date = DateField(label=_("Museum entry date (exact or start)"), required=False) museum_entry_date_end = DateField(label=_("Museum entry date (end)"), required=False) museum_entry_date_comment = forms.CharField(label=_("Comment on museum entry date"), required=False) - museum_donor = forms.IntegerField( - widget=widgets.JQueryAutoComplete( - reverse_lazy('autocomplete-biographicalnote'), - associated_model=BiographicalNote, - new=True), - label=_("Donor, testator or vendor"), - required=False - ) + museum_donor = widgets.Select2MultipleField( + model=BiographicalNote, label=_("Donors, testators or vendors"), required=False, + remote=True, new=True) museum_collection = forms.ChoiceField( label=_("Collection"), required=False, choices=[] ) @@ -952,7 +948,7 @@ class QAFindFormMulti(MuseumForm, QAForm): "qa_museum_owner_institution": Organization, "qa_museum_assigned_institution": Organization, "qa_museum_custodian_institution": Organization, - "qa_museum_donor": BiographicalNote, + "qa_museum_donors": BiographicalNote, "qa_museum_marking_type": models.MarkingType, "qa_museum_inventory_marking_presence": models.InventoryMarkingPresence, "qa_museum_collection": models.MuseumCollection, @@ -981,7 +977,6 @@ class QAFindFormMulti(MuseumForm, QAForm): "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", @@ -997,7 +992,7 @@ class QAFindFormMulti(MuseumForm, QAForm): "qa_museum_entry_mode_comment", "qa_museum_entry_date", "qa_museum_entry_date_end", - "qa_museum_donor", + "qa_museum_donors", "qa_museum_inventory_marking_presence", "qa_museum_marking_type", "qa_museum_collection", @@ -1085,8 +1080,8 @@ class QAFindFormMulti(MuseumForm, QAForm): label=_("Museum entry date (exact or start)"), required=False ) qa_museum_entry_date_end = DateField(label=_("Museum entry date (end)"), required=False) - qa_museum_donor = forms.IntegerField( - label=_("Donor, testator or vendor"), + qa_museum_donors = forms.IntegerField( + label=_("Donors, testators or vendors"), widget=widgets.JQueryAutoComplete( reverse_lazy('autocomplete-biographicalnote'), associated_model=BiographicalNote), @@ -1254,7 +1249,7 @@ class QAFindFormMulti(MuseumForm, QAForm): return "" return value - def _get_qa_museum_donor(self, value): + def _get_qa_museum_donors(self, value): return self._get_bio(value) def _get_qa_museum_former_collections(self, value): @@ -1680,7 +1675,7 @@ class FindSelect(MuseumForm, GeoItemSelect, PeriodSelect): "museum_entry_date", "museum_entry_date_end", "museum_entry_date_comment", - "museum_donor", + "museum_donors", "museum_inventory_marking_presence", "museum_marking_type", "museum_collection", @@ -1708,7 +1703,7 @@ class FindSelect(MuseumForm, GeoItemSelect, PeriodSelect): "museum_entry_date", "museum_entry_date_end", "museum_entry_date_comment", - "museum_donor", + "museum_donors", "museum_inventory_marking_presence", "museum_marking_type", "museum_collection", @@ -1965,8 +1960,8 @@ class FindSelect(MuseumForm, GeoItemSelect, PeriodSelect): museum_entry_date = DateField(label=_("Museum - Entry date (exact or start)")) museum_entry_date_end = DateField(label=_("Museum - Entry date end")) museum_entry_date_comment = forms.CharField(label=_("Museum - Comment on entry date")) - museum_donor = forms.IntegerField( - label=_("Museum - Donor, testator or vendor"), + museum_donors = forms.IntegerField( + label=_("Museum - Donors, testators or vendors"), widget=widgets.JQueryAutoComplete( reverse_lazy('autocomplete-biographicalnote'), associated_model=BiographicalNote), diff --git a/archaeological_finds/migrations/0138_donor_to_donors.py b/archaeological_finds/migrations/0138_donor_to_donors.py new file mode 100644 index 000000000..24ecf65d1 --- /dev/null +++ b/archaeological_finds/migrations/0138_donor_to_donors.py @@ -0,0 +1,36 @@ +# Generated by Django 2.2.24 on 2025-08-25 10:14 + +from django.db import migrations, models + + +SQL_MIGRATE = """ +INSERT INTO archaeological_finds_find_museum_donors + (find_id, biographicalnote_id) + SELECT id, museum_donor_id FROM archaeological_finds_find + WHERE museum_donor_id IS NOT NULL; +""" + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0263_media_exporter'), + ('archaeological_finds', '0137_data_migration_treatment_status_inputstatus'), + ] + + operations = [ + migrations.AddField( + model_name='find', + name='museum_donors', + field=models.ManyToManyField(blank=True, related_name='finds_donors', to='ishtar_common.BiographicalNote', verbose_name='Donors, testators or vendors'), + ), + migrations.RunSQL(SQL_MIGRATE), + migrations.RemoveField( + model_name='find', + name='museum_donor', + ), + migrations.RemoveField( + model_name='historicalfind', + name='museum_donor', + ), + ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index bd0c42619..89bbf245f 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -1764,9 +1764,9 @@ class Find( pgettext_lazy("key for text search", "museum-entry-date-comment"), "museum_entry_date_comment__iexact" ), - "museum_donor": SearchAltName( - pgettext_lazy("key for text search", "museum-donor"), - "museum_donor__denomination__iexact", + "museum_donors": SearchAltName( + pgettext_lazy("key for text search", "museum-donors"), + "museum_donors__denomination__iexact", related_name="museum_donor" ), "museum_inventory_marking_presence": SearchAltName( @@ -1883,7 +1883,7 @@ class Find( SearchVectorConfig("museum_depositor_inventory_number", "raw"), SearchVectorConfig("museum_entry_mode_comment"), SearchVectorConfig("museum_entry_date_comment", "local"), - SearchVectorConfig("museum_donor__denomination"), + SearchVectorConfig("museum_donors__denomination"), SearchVectorConfig("museum_collection__label"), SearchVectorConfig("museum_former_collections__denomination"), SearchVectorConfig("museum_inventory_transcript", "local"), @@ -2274,10 +2274,10 @@ class Find( museum_entry_date = models.DateField(_("Museum entry date (exact or start)"), blank=True, null=True) museum_entry_date_end = models.DateField(_("Museum entry date (end)"), blank=True, null=True) museum_entry_date_comment = models.TextField(_("Comment on museum entry date"), blank=True, default="") - museum_donor = models.ForeignKey( - BiographicalNote, blank=True, null=True, on_delete=models.SET_NULL, - related_name='has_provided', - verbose_name=_("Donor, testator or vendor"), + museum_donors = models.ManyToManyField( + BiographicalNote, blank=True, + related_name="finds_donors", + verbose_name=_("Donors, testators or vendors"), ) museum_inventory_marking_presence = models.ManyToManyField( InventoryMarkingPresence, blank=True, diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html index 9b439825c..62cae08fb 100644 --- a/archaeological_finds/templates/ishtar/sheet_find.html +++ b/archaeological_finds/templates/ishtar/sheet_find.html @@ -228,11 +228,11 @@ {% trans "Museum entry date" as museum_entry_date_label %} {% field_flex museum_entry_date_label item.museum_entry_date_label %} {% field_flex "Comment on museum entry date" item.museum_entry_date_comment %} - {% field_flex "Name of donor, testator or vendor" item.museum_donor %} + {% field_flex_detail_multiple _("Donors, testators or vendors") item.museum_donors %} {% field_flex_multiple_obj "Presence of inventory marking" item "museum_inventory_marking_presence" %} {% field_flex_multiple_obj "Type of marking" item "museum_marking_type" %} {% field_flex "Collection" item.museum_collection %} - {% field_flex_multiple_obj "Former collection" item "museum_former_collections" %} + {% field_flex_detail_multiple _("Former collection") item.museum_former_collections %} {% field_flex "Inventory entry year" item.museum_inventory_entry_year %} {% field_flex "Conformity with inventory" item.museum_inventory_conformity %} {% field_flex "Comment on conformity" item.museum_conformity_comment %} diff --git a/archaeological_finds/templates/ishtar/sheet_museum_find.html b/archaeological_finds/templates/ishtar/sheet_museum_find.html index fb5e2adca..7ecc38050 100644 --- a/archaeological_finds/templates/ishtar/sheet_museum_find.html +++ b/archaeological_finds/templates/ishtar/sheet_museum_find.html @@ -147,7 +147,7 @@ {% field_flex "Complete museum ID" item.cache_complete_museum_id %} {% field_flex "Comment on museum ID" item.museum_id_comment %} {% field_flex "Collection" item.museum_collection %} - {% field_flex_detail_multiple "Former collection" item.museum_former_collections %} + {% field_flex_detail_multiple _("Former collection") item.museum_former_collections %} {% field_flex_detail "Owner institution" item.museum_owner_institution %} {% field_flex_detail "Assigned institution" item.museum_assigned_institution %} {% field_flex_detail "Custodian institution" item.museum_custodian_institution %} @@ -157,7 +157,7 @@ {% trans "Museum entry date" as museum_entry_date_label %} {% field_flex museum_entry_date_label item.museum_entry_date_label %} {% field_flex "Comment on museum entry date" item.museum_entry_date_comment %} - {% field_flex_detail "Donor, testator or vendor" item.museum_donor %} + {% field_flex_detail_multiple _("Donors, testators or vendors") item.museum_donors %} {% field_flex_multiple_obj "Presence of inventory marking" item "museum_inventory_marking_presence" %} {% field_flex_multiple_obj "Type of marking" item "museum_marking_type" %} {% field_flex "Marking details" item.mark "<pre>" "</pre>" %} |