88from utilities .string import title
99
1010__all__ = (
11+ 'CommentsPanel' ,
12+ 'CustomFieldsPanel' ,
13+ 'ImageAttachmentsPanel' ,
1114 'NestedGroupObjectPanel' ,
1215 'ObjectPanel' ,
16+ 'RelatedObjectsPanel' ,
1317 'Panel' ,
18+ 'TagsPanel' ,
1419)
1520
1621
1722class Panel (ABC ):
1823
24+ def __init__ (self , title = None ):
25+ if title is not None :
26+ self .title = title
27+
1928 @abstractmethod
2029 def render (self , obj ):
2130 pass
@@ -51,9 +60,6 @@ def __new__(mcls, name, bases, namespace, **kwargs):
5160class ObjectPanel (Panel , metaclass = ObjectPanelMeta ):
5261 template_name = 'ui/panels/object.html'
5362
54- def __init__ (self , title = None ):
55- self .title = title
56-
5763 def get_attributes (self , obj ):
5864 return [
5965 {
@@ -74,3 +80,65 @@ class NestedGroupObjectPanel(ObjectPanel, metaclass=ObjectPanelMeta):
7480 name = attrs .TextAttr ('name' , label = _ ('Name' ))
7581 description = attrs .TextAttr ('description' , label = _ ('Description' ))
7682 parent = attrs .NestedObjectAttr ('parent' , label = _ ('Parent' ), linkify = True )
83+
84+
85+ class CustomFieldsPanel (Panel ):
86+ template_name = 'ui/panels/custom_fields.html'
87+ title = _ ('Custom Fields' )
88+
89+ def render (self , context ):
90+ obj = context .get ('object' )
91+ custom_fields = obj .get_custom_fields_by_group ()
92+ if not custom_fields :
93+ return ''
94+ return render_to_string (self .template_name , {
95+ 'title' : self .title ,
96+ 'custom_fields' : custom_fields ,
97+ })
98+
99+
100+ class TagsPanel (Panel ):
101+ template_name = 'ui/panels/tags.html'
102+ title = _ ('Tags' )
103+
104+ def render (self , context ):
105+ return render_to_string (self .template_name , {
106+ 'title' : self .title ,
107+ 'object' : context .get ('object' ),
108+ })
109+
110+
111+ class CommentsPanel (Panel ):
112+ template_name = 'ui/panels/comments.html'
113+ title = _ ('Comments' )
114+
115+ def render (self , context ):
116+ obj = context .get ('object' )
117+ return render_to_string (self .template_name , {
118+ 'title' : self .title ,
119+ 'comments' : obj .comments ,
120+ })
121+
122+
123+ class RelatedObjectsPanel (Panel ):
124+ template_name = 'ui/panels/related_objects.html'
125+ title = _ ('Related Objects' )
126+
127+ def render (self , context ):
128+ return render_to_string (self .template_name , {
129+ 'title' : self .title ,
130+ 'object' : context .get ('object' ),
131+ 'related_models' : context .get ('related_models' ),
132+ })
133+
134+
135+ class ImageAttachmentsPanel (Panel ):
136+ template_name = 'ui/panels/image_attachments.html'
137+ title = _ ('Image Attachments' )
138+
139+ def render (self , context ):
140+ return render_to_string (self .template_name , {
141+ 'title' : self .title ,
142+ 'request' : context .get ('request' ),
143+ 'object' : context .get ('object' ),
144+ })
0 commit comments