@@ -83,34 +83,6 @@ def render_as_object(self):
8383
8484
8585class PermissionsPanel (FieldPanel ):
86- object_template = "wagtailadmin/panels/permissions_panel.html"
87- field_template = "wagtailadmin/panels/permissions_panel.html"
88-
89- def render_as_object (self ):
90- return mark_safe (render_to_string (self .object_template , {
91- 'self' : self ,
92- self .TEMPLATE_VAR : self ,
93- 'field' : self .bound_field ,
94- 'permission_terms_json' : self .load_permission_terms (),
95- 'permission_terms_error_message' : self .permission_terms_error_message ,
96- 'permission_actions' : json .dumps (self .permission_actions ),
97- 'permission_type' : self .permission_type ,
98- }))
99-
100- def load_permission_terms (self ):
101- permission_terms_json = None
102- try :
103- data = TaxonomyTerms .objects .get (taxonomy_id = self .permission_terms_id )
104- try :
105- json .loads (data .terms_json )
106- except json .decoder .JSONDecodeError :
107- self .permission_terms_error_message = '"Permission Terms" json wrong format'
108- permission_terms_json = data .terms_json
109- except TaxonomyTerms .DoesNotExist :
110- self .permission_terms_error_message = 'No "Permission Terms" for this id: "{}"' .format (
111- self .permission_terms_id
112- )
113- return permission_terms_json
11486
11587 def __init__ (self , field_name , permission_terms_id , permission_actions , permission_type , * args , ** kwargs ):
11688 super ().__init__ (field_name , * args , ** kwargs )
@@ -129,3 +101,56 @@ def clone_kwargs(self):
129101 widget = self .widget if hasattr (self , 'widget' ) else None ,
130102 )
131103 return kwargs
104+
105+ def get_bound_panel (self , instance = None , request = None , form = None ):
106+ if self .model is None :
107+ raise ImproperlyConfigured (
108+ "%s.bind_to_model(model) must be called before get_bound_panel"
109+ % type (self ).__name__
110+ )
111+
112+ if not issubclass (self .BoundPanel , EditHandler .BoundPanel ):
113+ raise ImproperlyConfigured (
114+ "%s.BoundPanel must be a subclass of EditHandler.BoundPanel"
115+ % type (self ).__name__
116+ )
117+
118+ return self .BoundPanel (
119+ panel = self , instance = instance , request = request , form = form
120+ )
121+
122+ class BoundPanel (FieldPanel .BoundPanel ):
123+
124+ object_template = "wagtailadmin/panels/permissions_panel.html"
125+ field_template = "wagtailadmin/panels/permissions_panel.html"
126+
127+ def render_as_object (self ):
128+ return mark_safe (render_to_string (self .object_template , {
129+ 'self' : self ,
130+ self .panel .TEMPLATE_VAR : self ,
131+ 'field' : self .bound_field ,
132+ 'permission_terms_json' : self .load_permission_terms (),
133+ 'permission_terms_error_message' : self .permission_terms_error_message ,
134+ 'permission_actions' : json .dumps (self .panel .permission_actions ),
135+ 'permission_type' : self .panel .permission_type ,
136+ }))
137+
138+ def load_permission_terms (self ):
139+ permission_terms_json = None
140+ try :
141+ data = TaxonomyTerms .objects .get (taxonomy_id = self .panel .permission_terms_id )
142+ try :
143+ json .loads (data .terms_json )
144+ except json .decoder .JSONDecodeError :
145+ self .permission_terms_error_message = '"Permission Terms" json wrong format'
146+ permission_terms_json = data .terms_json
147+ except TaxonomyTerms .DoesNotExist :
148+ self .permission_terms_error_message = 'No "Permission Terms" for this id: "{}"' .format (
149+ self .panel .permission_terms_id
150+ )
151+ return permission_terms_json
152+
153+ def __init__ (self , panel , instance , request , form ,):
154+ super ().__init__ (panel = panel , instance = instance , request = request , form = form )
155+ self .permission_terms_error_message = None
156+
0 commit comments