diff options
-rw-r--r-- | archaeological_operations/forms.py | 33 | ||||
-rw-r--r-- | archaeological_operations/models.py | 63 |
2 files changed, 96 insertions, 0 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index af4e21e31..dc389c81c 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -1231,6 +1231,8 @@ class OperationDeletionForm(FinalForm): class SiteSelect(TableSelect): + _model = models.ArchaeologicalSite + search_vector = forms.CharField( label=_(u"Full text search"), widget=widgets.SearchWidget( 'archaeological-operations', 'archaeologicalsite')) @@ -1239,11 +1241,42 @@ class SiteSelect(TableSelect): name = forms.CharField(label=_(u"Name"), max_length=200, required=False) periods = forms.ChoiceField(label=_(u"Periods"), choices=[], required=False) remains = forms.ChoiceField(label=_(u"Remains"), choices=[], required=False) + towns = get_town_field() + comment = forms.CharField(label=_(u"Comment"), max_length=200, + required=False) + locality_ngi = forms.CharField( + label=_(u"National Geographic Institute locality"), max_length=200, + required=False) + locality_cadastral = forms.CharField( + label=_(u"Cadastral locality"), max_length=200, + required=False) + shipwreck_name = forms.CharField( + label=_(u"Shipwreck name"), max_length=200, + required=False) + oceanographic_service_localisation = forms.CharField( + label=_(u"Oceanographic service localisation"), max_length=200, + required=False) + shipwreck_code = forms.CharField( + label=_(u"Shipwreck code"), max_length=200, + required=False) + sinking_date = DateField(label=_(u"Sinking date"), required=False) + discovery_area = forms.CharField( + label=_(u"Discovery area"), max_length=200, + required=False) TYPES = [ FieldType('periods', models.Period), FieldType('remains', models.RemainType), ] + def __init__(self, *args, **kwargs): + super(SiteSelect, self).__init__(*args, **kwargs) + if not get_current_profile().underwater: + self.fields.pop('shipwreck_name') + self.fields.pop('oceanographic_service_localisation') + self.fields.pop('shipwreck_code') + self.fields.pop('sinking_date') + self.fields.pop('discovery_area') + class SiteFormSelection(IshtarForm): SEARCH_AND_SELECT = True diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index f09184a32..8fa00a215 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -116,6 +116,69 @@ class ArchaeologicalSite(BaseHistorizedItem): M2M_SEARCH_VECTORS = ["periods__label", "remains__label", "towns__name"] PARENT_SEARCH_VECTORS = ['operations'] + DATED_FIELDS = ['sinking_date'] + + EXTRA_REQUEST_KEYS = {} + + # alternative names of fields for searches + ALT_NAMES = { + 'reference': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"reference"), + 'reference' + ), + 'name': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"name"), + 'name' + ), + 'periods': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"period"), + 'periods__label__iexact' + ), + 'remains': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"remain"), + 'remains__label__iexact' + ), + 'towns': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"town"), + 'towns__cached_label__iexact' + ), + 'comment': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"comment"), + 'comment__icontains' + ), + 'locality_ngi': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"locality-ngi"), + 'locality_ngi__icontains' + ), + 'locality_cadastral': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"locality-cadastral"), + 'locality_cadastral__icontains' + ), + 'shipwreck_name': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"shipwreck-name"), + 'shipwreck_name__iexact' + ), + 'oceanographic_service_localisation': ( + pgettext_lazy(TXT_SEARCH_COMMENT, + u"oceanographic-service-localisation"), + 'oceanographic_service_localisation__icontains' + ), + 'shipwreck_code': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"shipwreck-code"), + 'shipwreck_code__iexact' + ), + 'sinking_date': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"sinking-date"), + 'sinking_date' + ), + 'discovery_area': ( + pgettext_lazy(TXT_SEARCH_COMMENT, u"discovery-area"), + 'discovery_area__icontains' + ), + } + for v in ALT_NAMES.values(): + EXTRA_REQUEST_KEYS[v[0]] = v[1] + reference = models.CharField(_(u"Reference"), max_length=200, unique=True) name = models.CharField(_(u"Name"), max_length=200, null=True, blank=True) |