summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/models_finds.py22
-rw-r--r--archaeological_warehouse/models.py3
-rw-r--r--docs/fr/source/annexe-tech-3-variables-gen.rst34
-rw-r--r--docs/fr/source/annexe-tech-4-jinja-filters.rst22
-rw-r--r--docs/generate_values_doc.py11
-rw-r--r--ishtar_common/models.py4
6 files changed, 70 insertions, 26 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index c292cd368..933f14237 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -1710,6 +1710,8 @@ class Find(
"alteration_causes",
"cultural_attributions",
]
+ GET_VALUES_EXTRA = ValueGetter.GET_VALUES_EXTRA + ["complete_id",
+ "context_record_label"]
GET_VALUES_EXTRA_TYPES = ValueGetter.GET_VALUES_EXCLUDE_FIELDS + [
"material_types",
"object_types",
@@ -2096,6 +2098,24 @@ class Find(
lbl += " ({})".format(base)
return lbl
+ @property
+ def complete_id(self):
+ """
+ Return complete id of associated base find
+ """
+ return " ; ".join(
+ list(self.base_finds.values_list("cache_complete_id", flat=True))
+ )
+
+ @property
+ def context_record_label(self):
+ """
+ Return label of associated context records
+ """
+ return " ; ".join(
+ list(self.base_finds.values_list("context_record__label", flat=True))
+ )
+
def get_first_base_find(self):
if not self.base_finds.count():
return
@@ -2106,6 +2126,8 @@ class Find(
("material_types_label", _("Material types string")),
("material_types_code", _("Material types code string")),
("material_types_recommendations", _("Recommendations string from material")),
+ ("complete_id", _("Complete ID of associated base finds")),
+ ("context_record_label", _("Label of associated context records")),
]
def get_material_types_code(self) -> str:
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 268a0466a..b1dc6a54f 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -1659,9 +1659,10 @@ class Container(
and "finds" not in kwargs.get("exclude", [])
):
kwargs["exclude"] = base_exclude[:]
+ kwargs["no_base_finds"] = True
# prevent recursive call
values[prefix + "finds"] = [
- f.get_values(prefix=prefix, no_values=True, filtr=None, **kwargs)
+ f.get_values(prefix=prefix, no_values=True, filtr=filtr, **kwargs)
for f in self.finds.distinct().all()
]
diff --git a/docs/fr/source/annexe-tech-3-variables-gen.rst b/docs/fr/source/annexe-tech-3-variables-gen.rst
index 7561afff9..4e09ca4d7 100644
--- a/docs/fr/source/annexe-tech-3-variables-gen.rst
+++ b/docs/fr/source/annexe-tech-3-variables-gen.rst
@@ -7,9 +7,9 @@ Annexe technique 3 - Variables
==============================
:Auteurs: Étienne Loks, Ishtar team
-:Date: 2021-10-20
+:Date: 2022-03-09
:Copyright: CC-BY 3.0
-:Ishtar Version: v3.1.36
+:Ishtar Version: v3.1.50
----------------------------------
@@ -301,9 +301,9 @@ Chaque opération dispose des :ref:`champs géographiques <valeurs-champs-geo>`,
- **comment** : *Texte* - Commentaire
- **common_name** : *Texte* - Nom générique
- **complete_identifier** : *Texte* - Identifiant complet
-- **containers** : Liste des contenants associés - **Field not available for imports**
+- **containers** : Liste des contenants associés - **Champ non disponible pour les imports**
- **context_record__** : *→ Unité d'Enregistrement (opération)*
-- **context_records** : Liste des unités d'enregistrement associées - **Field not available for imports**
+- **context_records** : Liste des unités d'enregistrement associées - **Champ non disponible pour les imports**
- **cost** : *Entier* - Coût (euros)
- **creation_date** : *Date* - Date de création
- **custom_index** : *Entier* - Custom index
@@ -460,7 +460,7 @@ Chaque unité d'enregistrement dispose des :ref:`champs géographiques <valeurs-
- **activity__** : *→ Type d'activité* (**label** Dénomination, **txt_idx** Identifiant textuel) - Activité
- **archaeological_site__** : *→ Entité archéologique* - Entité archéologique
-- **base_finds** : Liste du mobilier de base associé - **Field not available for imports**
+- **base_finds** : Liste du mobilier de base associé - **Champ non disponible pour les imports**
- **base_finds__** : *→ Mobilier d'origine (unité d'enregistrement)*
- **cached_label** : *Texte* - Nom en cache
- **cached_periods** : *Texte* - Nom en cache des périodes - Généré automatiquement - ne pas éditer
@@ -531,7 +531,7 @@ Chaque mobilier d'origine dispose des :ref:`champs géographiques <valeurs-champ
- **label** : *Texte* - Identifiant libre
- **line** : *Ligne* - Ligne
- **material_index** : *Entier* - Index matériel
-- **material_type_label** : Concatenation of associated material types codes - **Field not available for imports**
+- **material_type_label** : Concaténation des types de matériaux associés - **Champ non disponible pour les imports**
- **qrcode** : *Image (255)* - qrcode
- **spatial_reference_system__** : *→ Système de référence spatiale* (**label** Dénomination, **txt_idx** Identifiant textuel, **srid** SRID, **auth_name** Registre) - Système de référence spatiale
- **special_interest** : *Chaîne de caractères (120)* - Intérêt spécifique
@@ -546,7 +546,7 @@ Chaque élément mobilier dispose du champ `data__` ainsi que des champs suivant
- **alteration_causes__** : *→ Type de cause d'altération* (**label** Dénomination, **txt_idx** Identifiant textuel) - Cause d'altération
- **alterations__** : *→ Type d'altération* (**label** Dénomination, **txt_idx** Identifiant textuel) - Altération
- **appraisal_date** : *Date* - Date d'évaluation
-- **base_finds** : Liste du mobilier de base associé - **Field not available for imports**
+- **base_finds** : Liste du mobilier de base associé - **Champ non disponible pour les imports**
- **base_finds__** : *→ Mobilier d'origine* - Mobilier d'origine
- **basket__** : *→ Paniers (items)*
- **cached_label** : *Texte* - Nom en cache - Généré automatiquement - ne pas éditer
@@ -562,11 +562,13 @@ Chaque élément mobilier dispose du champ `data__` ainsi que des champs suivant
- **collection__** : *→ Lieu de conservation* - Collection - Ne pas utiliser - Nécessite des évolutions
- **comment** : *Texte* - Commentaire
- **communicabilities__** : *→ Type de communicabilité* (**label** Dénomination, **txt_idx** Identifiant textuel) - Communicabilité
+- **complete_id** : Complete ID of associated base finds - **Champ non disponible pour les imports**
- **complete_identifier** : *Texte* - Identifiant complet
- **conservatory_comment** : *Texte* - Commentaire relatif à la conservation
- **conservatory_state__** : *→ Type d'état de conservation* (**label** Dénomination, **txt_idx** Identifiant textuel) - État de conservation
- **container__** : *→ Contenant* - Contenant
- **container_ref__** : *→ Contenant* - Contenant de référence
+- **context_record_label** : Label of associated context records - **Champ non disponible pour les imports**
- **cultural_attributions__** : *→ Type d'attribution culturelle* (**label** Dénomination, **txt_idx** Identifiant textuel) - Attribution culturelle
- **custom_index** : *Entier* - Custom index
- **dating_comment** : *Texte* - Commentaire relatif aux datations
@@ -585,7 +587,7 @@ Chaque élément mobilier dispose du champ `data__` ainsi que des champs suivant
- **findnonmodiftreatments_related__** : *→ find non modif treatmentss (mobilier)*
- **findtreatments_related__** : *→ find treatmentss (mobilier)*
- **findupstreamtreatments_related__** : *→ find upstream treatmentss (mobilier)*
-- **functional_areas__** : *→ Functional area* (**label** Dénomination, **txt_idx** Identifiant textuel) - Functional area
+- **functional_areas__** : *→ Domaine fonctionnel* (**label** Dénomination, **txt_idx** Identifiant textuel) - Domaine fonctionnel
- **height** : *Nombre à virgule* - Hauteur (cm)
- **index** : *Entier* - Index
- **inscription** : *Texte* - Inscription
@@ -602,9 +604,9 @@ Chaque élément mobilier dispose du champ `data__` ainsi que des champs suivant
- **material_comment** : *Texte* - Commentaire relatif au matériau
- **material_type_quality__** : *→ Type de qualité du type de matériaux* (**label** Dénomination, **txt_idx** Identifiant textuel) - Qualité du type de matériaux
- **material_types__** : *→ Type de matériau* (**label** Dénomination, **txt_idx** Identifiant textuel) - Types de matériau
-- **material_types_code** : Code des types de matériau - **Field not available for imports**
-- **material_types_label** : Chaîne de caractère des types de matériau - **Field not available for imports**
-- **material_types_recommendations** : Recommendations string from material - **Field not available for imports**
+- **material_types_code** : Code des types de matériau - **Champ non disponible pour les imports**
+- **material_types_label** : Chaîne de caractère des types de matériau - **Champ non disponible pour les imports**
+- **material_types_recommendations** : Chaîne de caractères - recommandations pour le matériau - **Champ non disponible pour les imports**
- **min_number_of_individuals** : *Entier* - Nombre minimum d'individus (NMI)
- **museum_id** : *Texte* - Identifiant musée
- **object_type_quality__** : *→ Type de qualité du type d'objet* (**label** Dénomination, **txt_idx** Identifiant textuel) - Qualité du type d'objet
@@ -745,21 +747,21 @@ Chaque contenant dispose des :ref:`champs géographiques <valeurs-champs-geo>`,
- **container_tree_child__** : *→ container tree (contenant)*
- **container_tree_parent__** : *→ container trees (contenant parent)*
- **container_type__** : *→ Type de contenant* (**label** Dénomination, **txt_idx** Identifiant textuel) - Type de contenant
-- **context_record_** : Unité d'Enregistrement associée - à utiliser avec précaution seule la première unité d'enregistrement trouvée est retournée - **Field not available for imports**
+- **context_record_** : Unité d'Enregistrement associée - à utiliser avec précaution seule la première unité d'enregistrement trouvée est retournée - **Champ non disponible pour les imports**
- **custom_index** : *Entier* - Custom index
- **division__** : *→ Localisations de contenant (contenant)*
- **documents__** : *→ Document* - Documents
- **external_id** : *Texte* - Identifiant
-- **finds** : Liste du mobilier associé - **Field not available for imports**
+- **finds** : Liste du mobilier associé - **Champ non disponible pour les imports**
- **finds__** : *→ Mobilier (contenant)*
- **finds_ref__** : *→ Mobilier (contenant de référence)*
- **index** : *Entier* - ID contenant
- **location__** : *→ Lieu de conservation* - Lieu de conservation
- **main_image__** : *→ Document* - Image principale
-- **material_types** : Types de matériaux dans le contenant - chaîne de caractères - **Field not available for imports**
-- **material_types_code** : Code des types de matériau - chaîne de caractères - **Field not available for imports**
+- **material_types** : Types de matériaux dans le contenant - chaîne de caractères - **Champ non disponible pour les imports**
+- **material_types_code** : Code des types de matériau - chaîne de caractères - **Champ non disponible pour les imports**
- **old_reference** : *Texte* - Ancienne référence
-- **operation_** : Opération associée - à utiliser avec précaution seule la première opération trouvée est retournée - **Field not available for imports**
+- **operation_** : Opération associée - à utiliser avec précaution seule la première opération trouvée est retournée - **Champ non disponible pour les imports**
- **parent__** : *→ Contenant* - Contenant parent
- **qrcode** : *Image (255)* - qrcode
- **reference** : *Texte* - Réf. du contenant
diff --git a/docs/fr/source/annexe-tech-4-jinja-filters.rst b/docs/fr/source/annexe-tech-4-jinja-filters.rst
index 6f2a13a47..9dc499312 100644
--- a/docs/fr/source/annexe-tech-4-jinja-filters.rst
+++ b/docs/fr/source/annexe-tech-4-jinja-filters.rst
@@ -75,16 +75,22 @@ Manipulation des chaînes de caractères
Ce filtre permet d'extraire un élément depuis une chaîne de
caractères en prenant en compte un séparateur. Par exemple depuis la chaîne
-`2,3,10`, accéder au troisième élément : `10`. Ce filtre nécessite au minimum
-un argument, le numéro de l'élément souhaité (en commençant le compte à 0) : pour
-avoir le second élément, il faut indiquer en argument `1`.
+`"2,3,10"`, accéder au troisième élément : `"10"`.
+
+Ce filtre nécessite au minimum un argument, le numéro de l'élément souhaité (en
+commençant le compte à 0) : pour avoir le second élément, il faut indiquer en argument
+`"1"`.
+
Le second argument correspond à la borne de fin non incluse (en commençant le
compte à 0) : ainsi pour avoir jusqu'au deuxième élément il faut indiquer en argument
-`2`. Si l'on ne souhaite avoir qu'un seul élément, on indique `0`.
-Par défaut le séparateur `,` est utilisé si l'on souhaite un autre
-séparateur, on spécifie celui-ci en troisème argument. On peut associer un
-dernier argument qui permet de spécifier le(s) caractère(s) de concatnation que l'on
-souhaite utiliser pour la chaîne en retour.
+`"2"`. Si l'on ne souhaite avoir qu'un seul élément, on indique `"0"`.
+
+Par défaut le séparateur `","` est utilisé si l'on souhaite un autre
+séparateur, on spécifie celui-ci en troisème argument.
+
+On peut associer un dernier argument qui permet de spécifier le(s) caractère(s) de
+concaténation que l'on souhaite utiliser pour la chaîne en retour.
+
- `{{\"9,2,10\"|splitpart(1)}}` -> `2`
- `{{\"chaise;bureau;papier;paragraphe\"|splitpart(0,0,\";\")}}` -> `chaise`
diff --git a/docs/generate_values_doc.py b/docs/generate_values_doc.py
index b335634eb..acff81ff8 100644
--- a/docs/generate_values_doc.py
+++ b/docs/generate_values_doc.py
@@ -4,6 +4,7 @@ from django.utils.translation import activate, ugettext as _
import datetime
from jinja2 import Template
+import locale
import os
@@ -64,8 +65,16 @@ MODELS = {
"archaeological_warehouse": ["warehouse", "container"],
}
+lc = settings.LANGUAGE_CODE
+lc = lc[:2] + "_" + lc[-2:].upper() + ".UTF-8"
+locale.setlocale(locale.LC_ALL, lc)
+
+MESSAGES = {
+ 'value_only_message': str(_("Field not available for imports"))
+}
+
MESSAGES = {
- 'value_only_message': _("Field not available for imports")
+ 'value_only_message': "Champ non disponible pour les imports"
}
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index f483020e0..7d634a680 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -297,6 +297,10 @@ class ValueGetter(object):
values[prefix + field_name] = value
values.update(self._get_values_documents(prefix=prefix, filtr=filtr))
for extra_field in self.GET_VALUES_EXTRA:
+ if filtr and not any(
+ extra_field for f in filtr if f.startswith(prefix + extra_field)
+ ):
+ continue
values[prefix + extra_field] = getattr(self, extra_field) or ""
for key, val in values.items():
if val is None: