summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-10-14 18:52:02 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-10-14 19:20:44 +0200
commit109cdf59691e616bb94dbd90cf966fb305d28314 (patch)
treefc8dab2be2d899fb0e645ede1b91e9eaf99cd1c8 /archaeological_operations
parent435797a54e4d322a46711f303c2fc1fd5286330e (diff)
downloadIshtar-109cdf59691e616bb94dbd90cf966fb305d28314.tar.bz2
Ishtar-109cdf59691e616bb94dbd90cf966fb305d28314.zip
⚡ improve performance on search vector generation
- prevent multi-save - simplify parent search vector - improve in obtaining M2M attribute
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/models.py42
-rw-r--r--archaeological_operations/views.py1
2 files changed, 26 insertions, 17 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 63904bebe..9119a5c72 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -336,6 +336,18 @@ class GeographicTownItem(GeoItem):
return changed
+def add_oa_prefix(value):
+ if not value:
+ return []
+ profile = get_current_profile()
+ values = []
+ if profile.operation_prefix:
+ values.append(profile.operation_prefix + value)
+ if profile.default_operation_prefix:
+ values.append(profile.default_operation_prefix + value)
+ return values
+
+
class SiteManager(models.Manager):
def get_by_natural_key(self, txt_idx):
return self.get(reference=txt_idx)
@@ -390,12 +402,12 @@ class ArchaeologicalSite(
SearchVectorConfig("precise_locality", "local"),
SearchVectorConfig("locality_cadastral", "local"),
SearchVectorConfig("locality_ngi", "local"),
- SearchVectorConfig("name"),
+ SearchVectorConfig("name", "raw"),
SearchVectorConfig("oceanographic_service_localisation"),
SearchVectorConfig("reference", "raw"),
SearchVectorConfig("other_reference", "raw"),
SearchVectorConfig("shipwreck_code", "raw"),
- SearchVectorConfig("shipwreck_name"),
+ SearchVectorConfig("shipwreck_name", "raw"),
SearchVectorConfig("drassm_number", "raw"),
SearchVectorConfig("affmar_number", "raw"),
]
@@ -403,10 +415,11 @@ class ArchaeologicalSite(
SearchVectorConfig("periods__label", "local"),
SearchVectorConfig("remains__label", "local"),
SearchVectorConfig("types__label", "local"),
- SearchVectorConfig("towns__name"),
+ SearchVectorConfig("towns__name", "raw"),
SearchVectorConfig("towns__numero_insee", "raw"),
+ SearchVectorConfig("operations__code_patriarche", "raw"),
+ SearchVectorConfig("operations__code_patriarche", "raw", func=add_oa_prefix),
]
- PARENT_ONLY_SEARCH_VECTORS = ["operations"]
GET_VALUES_M2M = [
"periods",
"remains",
@@ -1095,15 +1108,6 @@ class ParcelItem:
parcels[key] = p
-def add_oa_prefix(value):
- if not value:
- return ""
- profile = get_current_profile()
- if not profile.operation_prefix:
- return ""
- return profile.operation_prefix + value
-
-
class Operation(
ClosedItem,
DocumentItem,
@@ -1254,6 +1258,9 @@ class Operation(
SearchVectorConfig("scientific_documentation_comment", "local"),
SearchVectorConfig("seizure_name"),
SearchVectorConfig("drassm_code", "raw"),
+ SearchVectorConfig("associated_file__name", "raw"),
+ SearchVectorConfig("associated_file__operation_name", "raw"),
+ SearchVectorConfig("associated_file__internal_reference", "raw"),
]
PROPERTY_SEARCH_VECTORS = [
SearchVectorConfig("full_reference", "raw"),
@@ -1265,11 +1272,12 @@ class Operation(
M2M_SEARCH_VECTORS = [
SearchVectorConfig("periods__label", "local"),
SearchVectorConfig("remains__label", "local"),
- SearchVectorConfig("towns__name"),
- SearchVectorConfig("towns__numero_insee"),
+ SearchVectorConfig("towns__name", "raw"),
+ SearchVectorConfig("towns__numero_insee", "raw"),
+ SearchVectorConfig("archaeological_sites__name", "raw"),
+ SearchVectorConfig("archaeological_sites__other_reference", "raw"),
+ SearchVectorConfig("archaeological_sites__reference", "raw"),
]
- PARENT_SEARCH_VECTORS = ["associated_file"]
- PARENT_ONLY_SEARCH_VECTORS = ["archaeological_sites"]
ASSOCIATED = {
"scientist": {("person_types", PersonType): ("head_scientist", "sra_agent")},
}
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index bf33e45b6..9ebd0a371 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -684,6 +684,7 @@ def operation_site_modify(model, related_model, related_key, formset_class, url_
q_relations.add(new_item)
initial, __, __ = get_initial(q_relations)
formset = formset_class(initial=initial)
+ item.update_search_vector()
else:
formset = formset_class(initial=initial)