diff options
-rw-r--r-- | archaeological_files/forms.py | 4 | ||||
-rw-r--r-- | archaeological_finds/forms_treatments.py | 2 | ||||
-rw-r--r-- | archaeological_operations/forms.py | 2 | ||||
-rw-r--r-- | archaeological_operations/models.py | 36 | ||||
-rw-r--r-- | archaeological_operations/templates/ishtar/sheet_administrativeact.html | 51 | ||||
-rw-r--r-- | ishtar_common/models.py | 4 | ||||
-rw-r--r-- | ishtar_common/utils.py | 6 |
7 files changed, 66 insertions, 39 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index d72791ac0..b075c6fc8 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -403,6 +403,7 @@ class FinalFileDeleteForm(FinalForm): class AdministrativeActFileModifySelect(TableSelect): + search_vector = forms.CharField(label=_(u"Full text search")) year = forms.IntegerField(label=_("Year")) index = forms.IntegerField(label=_("Index")) if settings.COUNTRY == 'fr': @@ -430,6 +431,7 @@ class AdministrativeActFileModifySelect(TableSelect): class AdministrativeActFileSelect(TableSelect): + search_vector = forms.CharField(label=_(u"Full text search")) year = forms.IntegerField(label=_("Year")) index = forms.IntegerField(label=_("Index")) if settings.COUNTRY == 'fr': @@ -519,6 +521,7 @@ class AdministrativeActFileSelect(TableSelect): class AdministrativeActFileFormSelection(AdministrativeActOpeFormSelection): + SEARCH_AND_SELECT = True pk = forms.IntegerField( label="", required=False, widget=widgets.DataTable( @@ -530,6 +533,7 @@ class AdministrativeActFileFormSelection(AdministrativeActOpeFormSelection): class AdministrativeActFileModifyFormSelection( AdministrativeActOpeFormSelection): + SEARCH_AND_SELECT = True pk = forms.IntegerField( label="", required=False, widget=widgets.DataTable( diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index fd74cc599..6dfc028e6 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -333,6 +333,7 @@ class DashboardForm(IshtarForm): class AdministrativeActTreatmentSelect(TableSelect): + search_vector = forms.CharField(label=_(u"Full text search")) year = forms.IntegerField(label=_("Year")) index = forms.IntegerField(label=_("Index")) act_type = forms.ChoiceField(label=_("Act type"), choices=[]) @@ -588,6 +589,7 @@ class DashboardTreatmentFileForm(IshtarForm): class AdministrativeActTreatmentFileSelect(TableSelect): + search_vector = forms.CharField(label=_(u"Full text search")) year = forms.IntegerField(label=_("Year")) index = forms.IntegerField(label=_("Index")) act_type = forms.ChoiceField(label=_("Act type"), choices=[]) diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index d26af8771..3541020d8 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -1327,6 +1327,7 @@ OperationSourceFormSelection = get_form_selection( class AdministrativeActOpeSelect(TableSelect): + search_vector = forms.CharField(label=_(u"Full text search")) year = forms.IntegerField(label=_("Year")) index = forms.IntegerField(label=_("Index")) if settings.COUNTRY == 'fr': @@ -1380,6 +1381,7 @@ class AdministrativeActOpeSelect(TableSelect): class AdministrativeActOpeFormSelection(IshtarForm): + SEARCH_AND_SELECT = True form_label = _("Administrative act search") associated_models = {'pk': models.AdministrativeAct} currents = {'pk': models.AdministrativeAct} diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 58fa8b8c6..d46d55089 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -986,6 +986,8 @@ class ActType(GeneralType): verbose_name = _(u"Act type") verbose_name_plural = _(u"Act types") ordering = ('label',) + + post_save.connect(post_save_cache, sender=ActType) post_delete.connect(post_save_cache, sender=ActType) @@ -1051,6 +1053,12 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter): RELATIVE_SESSION_NAMES = [('operation', 'operation__pk'), ('file', 'associated_file__pk')] COL_LABELS = {'full_ref': _(u"Ref.")} + BASE_SEARCH_VECTORS = ['act_type__label', 'act_object', + 'towns_label'] + INT_SEARCH_VECTORS = ["year", "index"] + PARENT_SEARCH_VECTORS = ['operator', 'scientist', 'signatory', + 'associated_file', 'operation', 'treatment_file', + 'treatment'] # fields act_type = models.ForeignKey(ActType, verbose_name=_(u"Act type")) @@ -1248,25 +1256,23 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter): if 'force' in kwargs: force = kwargs.pop('force') - if not self.signature_date: - return super(AdministrativeAct, self).save(*args, **kwargs) - self.year = self.signature_date.year - - if not self.act_type.indexed: - return super(AdministrativeAct, self).save(*args, **kwargs) - - if not force: - self._get_index() - else: - try: - self._get_index() - except: - pass - + if self.signature_date: + self.year = self.signature_date.year + if self.act_type.indexed: + if not force: + self._get_index() + else: + try: + self._get_index() + except: + pass super(AdministrativeAct, self).save(*args, **kwargs) if hasattr(self, 'associated_file') and self.associated_file: self.associated_file.update_has_admin_act() self.associated_file.update_short_menu_class() + updated = self.update_search_vector() + if updated: + self.save() def strip_zero(value): diff --git a/archaeological_operations/templates/ishtar/sheet_administrativeact.html b/archaeological_operations/templates/ishtar/sheet_administrativeact.html index 92246ba80..1ea2a789d 100644 --- a/archaeological_operations/templates/ishtar/sheet_administrativeact.html +++ b/archaeological_operations/templates/ishtar/sheet_administrativeact.html @@ -1,9 +1,9 @@ {% extends "ishtar/sheet.html" %} {% load i18n window_header window_field %} -{% block head_title %}{% trans "Administrative act" %}{% endblock %} +{% block head_title %}<strong>{% trans "Administrative act" %}</strong> - {{item.full_ref}}{% endblock %} -{% block content %} +{% block toolbar %} {% if item.operation %} {% window_nav item window_id 'show-administrativeact' 'operation_administrativeactop_modify' %} {% endif %} @@ -16,31 +16,40 @@ {% if item.treatment_file %} {% window_nav item window_id 'show-administrativeact' 'treatmentfile_administrativeacttreatmentfile_modify' %} {% endif %} +{% endblock %} + +{% block content %} <h3>{% trans "General"%}</h3> -<ul class='form-flex'> - {% field_li "Year" item.year %} - {% field_li "Index" item.index %} - {% field_li "Internal reference" item.ref_sra %} - {% field_li "Type" item.act_type %} - {% field_li "Object" item.act_object %} - {% field_li "Signature date" item.signature_date %} - {% field_li "In charge" item.in_charge %} - {% field_li "Archaeological preventive operator" item.operator %} - {% field_li_detail "Associated file" item.associated_file %} - {% field_li_detail "Operation" item.operation %} - {% field_li_detail "Treatment" item.treatment %} - {% field_li_detail "Treatment request" item.treatment_file %} +<div class="row"> + {% field_flex "Year" item.year %} + {% field_flex "Index" item.index %} + {% field_flex "Internal reference" item.ref_sra %} + {% field_flex "Type" item.act_type %} + {% field_flex "Object" item.act_object %} + {% field_flex "Signature date" item.signature_date %} + {% field_flex "In charge" item.in_charge %} + {% field_flex "Archaeological preventive operator" item.operator %} + {% field_flex_detail "Associated file" item.associated_file %} + {% field_flex_detail "Operation" item.operation %} + {% field_flex_detail "Treatment" item.treatment %} + {% field_flex_detail "Treatment request" item.treatment_file %} {% if item.operation and item.operation.surface %} - <li><label>{% trans "Surface"%}</label> <span class='value'>{{ item.operation.surface }} m<sup>2</sup> ({{ item.operation.surface_ha }} ha)</span></li> + <div class="col-12 col-md-6 col-lg-4 d-flex flex-wrap row"> + <dt class="col-5">{% trans "Surface"%}</dt> + <dd class='col-7'> + {{ item.operation.surface }} m<sup>2</sup> ({{ item.operation.surface_ha }} ha) + </dd> + </div> {% endif %} - {% field_li_detail "Created by" item.history_creator.ishtaruser.person %} -{% comment %}{% if item.general_contractor.attached_to %}<p> + {% field_flex_detail "Created by" item.history_creator.ishtaruser.person %} + + {% comment %}{% if item.general_contractor.attached_to %}<p> <label>{% trans "General contractor organisation"%}</label> <span class='value'>{{ item.general_contractor.attached_to }}</span></p>{% endif %} <!-- Contractor's organisation displayed as concat of Name/Adress/postal_code/city --> -{% if item.general_contractor %}<p><label>{%trans "General contractor"%}</label> <span class='value'>{{ item.general_contractor.full_label }}</span></p>{% endif %} -{% endcomment %} -</ul> + {% if item.general_contractor %}<p><label>{%trans "General contractor"%}</label> <span class='value'>{{ item.general_contractor.full_label }}</span></p>{% endif %} + {% endcomment %} +</div> {% endblock %} diff --git a/ishtar_common/models.py b/ishtar_common/models.py index eb84f8a7e..3af92a39e 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1030,6 +1030,10 @@ class FullSearch(models.Model): :param save: True if you want to save the object immediately :return: True if modified """ + if not self.pk: + logger.warning("Cannot update search vector before save or " + "after deletion.") + return if not self.BASE_SEARCH_VECTORS and not self.M2M_SEARCH_VECTORS \ and not self.INT_SEARCH_VECTORS \ and not self.PARENT_SEARCH_VECTORS: diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 4ecddfc92..23020ac95 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -129,11 +129,11 @@ def cached_label_changed(sender, **kwargs): if hasattr(instance, '_cascade_change') and instance._cascade_change: instance.skip_history_when_saving = True instance.save() - if hasattr(instance, 'update_search_vector'): - instance.update_search_vector() updated = False + if hasattr(instance, 'update_search_vector'): + updated = instance.update_search_vector() if hasattr(instance, '_cached_labels_bulk_update'): - updated = instance._cached_labels_bulk_update() + updated = instance._cached_labels_bulk_update() or updated if not updated and hasattr(instance, '_get_associated_cached_labels'): for item in instance._get_associated_cached_labels(): item._cascade_change = True |