@@ -44,14 +44,28 @@ class Meta:
44
44
verbose_name_plural = "Contenus réutilisable"
45
45
46
46
47
- class ProduitIndexPage (Page ):
47
+ class CompiledFieldMixin :
48
+ @cached_property
49
+ def famille (self ):
50
+ if famille := self .get_ancestors ().type (FamilyPage ).first ():
51
+ return famille
52
+ return famille
53
+
54
+ @cached_property
55
+ def compiled_body (self ):
56
+ if not getattr (self , "body" ) and self .famille :
57
+ return self .famille .specific .body
58
+ return self .body
59
+
60
+
61
+ class ProduitIndexPage (Page , CompiledFieldMixin ):
48
62
subpage_types = ["qfdmd.produitpage" , "qfdmd.familypage" ]
49
63
50
64
class Meta :
51
65
verbose_name = "Index des familles & produits"
52
66
53
67
54
- class ProduitPage (Page ):
68
+ class ProduitPage (Page , CompiledFieldMixin ):
55
69
subpage_types = [
56
70
"qfdmd.synonymepage" ,
57
71
]
@@ -71,18 +85,6 @@ class ProduitPage(Page):
71
85
null = True ,
72
86
)
73
87
74
- @cached_property
75
- def famille (self ):
76
- if famille := self .get_ancestors ().type (FamilyPage ).first ():
77
- return famille
78
- return famille
79
-
80
- @cached_property
81
- def compiled_body (self ):
82
- if not getattr (self , "body" ) and self .famille :
83
- return self .famille .specific .body
84
- return self .body
85
-
86
88
genre = models .CharField ("Genre" , choices = [("m" , "Masculin" ), ("f" , "Féminin" )])
87
89
nombre = models .IntegerField ("Nombre" , choices = [(1 , "singulier" ), (2 , "pluriel" )])
88
90
usage_unique = models .BooleanField (
0 commit comments