diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-04-01 15:58:39 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-04-01 16:10:17 +0200 |
| commit | c66b3549539c48a85fc52fe06d7101d50a14a354 (patch) | |
| tree | dc6b699c1065efa422117a8007726803fc8a16d2 /ishtar_common | |
| parent | 136986832aee92b839c0628f7e5bbde22fe7d264 (diff) | |
| download | Ishtar-c66b3549539c48a85fc52fe06d7101d50a14a354.tar.bz2 Ishtar-c66b3549539c48a85fc52fe06d7101d50a14a354.zip | |
♻ refactor dating fields searches
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/forms.py | 41 | ||||
| -rw-r--r-- | ishtar_common/models.py | 29 |
2 files changed, 70 insertions, 0 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 416a1a9ec..87d498596 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -1571,6 +1571,47 @@ class GeoItemSelect(DocumentItemSelect): # all geo item can have documents ] + DocumentItemSelect.TYPES +class DatingSelect(forms.Form): + datings__period = forms.ChoiceField(label=_("Dating - period"), choices=[]) + datings__precise_dating = forms.CharField(label=_("Dating - precise")) + datings__start_date = forms.IntegerField(label=_("Dating - start date")) + datings__end_date = forms.IntegerField(label=_("Dating - end date")) + datings__dating_type = forms.ChoiceField( + label=_("Dating - dating type"), choices=[] + ) + datings__quality = forms.ChoiceField(label=_("Dating - dating quality"), choices=[]) + TYPES = [ + FieldType("datings__period", ("archaeological_operations", "Period")), + FieldType("datings__dating_type", + ("archaeological_context_records", "DatingType")), + FieldType("datings__quality", + ("archaeological_context_records", "DatingQuality")), + ] + PERIOD_FIELDS = [ + "datings__period", + "datings__precise_dating", + "datings__start_date", + "datings__end_date", + "datings__dating_type", + "datings__quality", + ] + + def _reorder_period_fields(self, insert_period_after): + fields = OrderedDict() + for key in self.fields: + if key in self.PERIOD_FIELDS: + continue + fields[key] = self.fields[key] + if key == insert_period_after: + for period_key in self.PERIOD_FIELDS: + if period_key not in self.fields: + continue + fields[period_key] = self.fields[period_key] + if period_key in self.fields: + fields[period_key] = self.fields[period_key] + self.fields = fields + + class QADating(ManageOldType, forms.Form): form_label = _("Dating") associated_models = { diff --git a/ishtar_common/models.py b/ishtar_common/models.py index d9923b04d..5b06baba2 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -6284,6 +6284,35 @@ class BaseDating(models.Model, SerializeItem): SERIALIZE_EXCLUDE = ["find", "context_record", "archaeological_site"] CURRENT_MODEL = None CURRENT_MODEL_ATTR = None + + ALT_NAMES = { + "datings__period": SearchAltName( + pgettext_lazy("key for text search", "dating-period"), + "datings__period__label__iexact", + ), + "datings__precise_dating": SearchAltName( + pgettext_lazy("key for text search", "dating-precision"), + "datings__precise_dating__iexact", + ), + "datings__start_date": SearchAltName( + pgettext_lazy("key for text search", "dating-start"), + "datings__start_date", + ), + "datings__end_date": SearchAltName( + pgettext_lazy("key for text search", "dating-end"), + "datings__end_date", + ), + "datings__dating_type": SearchAltName( + pgettext_lazy("key for text search", "dating-type"), + "datings__dating_type__label__iexact", + ), + "datings__quality": SearchAltName( + pgettext_lazy("key for text search", "dating-quality"), + "datings__quality__label__iexact", + ), + } + NUMBER_FIELDS = ["datings__start_date", "datings__end_date"] + uuid = models.UUIDField(default=uuid.uuid4) reference = models.TextField(_("Reference"), blank=True, default="") external_id = models.TextField(_("External ID"), blank=True, default="") |
