Filtres "Objet incomplet" et "médias manquants"
Actuellement il faut aller sur la page individuelle d'un itinéraire pour savoir grâce à l'avertissement "L'objet semble incomplet" que des champs sont manquants, et sur l'onglet des fichiers liés de cet itinéraire pour se rendre compte que certains fichiers liés n'existent plus.
Sur le même principe que le filtre "Géométrie valide" présent sur les pages list des modules, deux filtres spécifiques à ces anomalies permettraient de repérer et corriger beaucoup plus facilement les itinéraires qui ont besoin d'une intervention.
En complement script permettant de trouver les fichiers physiquement manquant mais présents en base
A lancer avec sudo geotrek shell
"""
Script permettant de tester si les fichiers associés
aux "attachments" (en base de données)
sont bien présent physiquement
"""
import os
from django.apps import apps
from geotrek.common.models import Attachment
for attachment in Attachment.objects.exclude(attachment_file='').all():
# Test if file exist
if not os.path.exists(os.path.join('/opt/geotrek-admin/var/media', str(attachment.attachment_file))):
# Get related object
current_model = apps.get_model(
app_label=attachment.content_type.app_label,
model_name=attachment.content_type.model
)
related_object = current_model.objects.get(id = attachment.object_id)
# Print message
print(f"Missing file {attachment.content_type} - {attachment.object_id} - {related_object} - {attachment.attachment_file}")
Merci.
A noter aussi l'existence d'une commande Geotrek (clean_attachments) permettant de "Remove files for deleted attachments".