loko/streetup/inspections/registry.py

37 lines
1.2 KiB
Python

import os
from django.template.loader import get_template
from django.template.exceptions import TemplateDoesNotExist
def get_inspection_partial_template(model_or_name):
"""
Retourne le chemin relatif du partial template d'inspection pour un type d'asset donné
si ce fichier existe (ex: 'inspections/components/asset_fields/_parkingspot.html').
Sinon retourne None.
"""
if not model_or_name:
return None
if hasattr(model_or_name, '_meta'):
model_name = model_or_name._meta.model_name.lower()
else:
model_name = str(model_or_name).lower()
template_path = f"inspections/components/asset_fields/_{model_name}.html"
try:
get_template(template_path)
return template_path
except TemplateDoesNotExist:
return None
# Registre des processeurs / formulaires d'inspection spécialisés par modèle
INSPECTION_FORM_REGISTRY = {}
def register_inspection_handler(model_name):
"""Décorateur pour enregistrer une classe/fonction de traitement d'inspection spécialisée."""
def decorator(cls_or_func):
INSPECTION_FORM_REGISTRY[model_name.lower()] = cls_or_func
return cls_or_func
return decorator