diff options
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 |
commit | 109cdf59691e616bb94dbd90cf966fb305d28314 (patch) | |
tree | fc8dab2be2d899fb0e645ede1b91e9eaf99cd1c8 /archaeological_operations/models.py | |
parent | 435797a54e4d322a46711f303c2fc1fd5286330e (diff) | |
download | Ishtar-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/models.py')
-rw-r--r-- | archaeological_operations/models.py | 42 |
1 files changed, 25 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")}, } |