Projet

Général

Profil

0001-views-explicitly-get-form_class-from-generic-connect.patch

Nicolas Roche, 15 octobre 2020 15:30

Télécharger (2,49 ko)

Voir les différences:

Subject: [PATCH 1/2] views: explicitly get form_class from generic connector
 mixin (#45333)

 passerelle/views.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
passerelle/views.py
137 137

  
138 138

  
139 139
class GenericConnectorMixin(object):
140 140
    exclude_fields = ('slug', 'users')
141 141

  
142 142
    def get_connector(self, **kwargs):
143 143
        return kwargs.get('connector')
144 144

  
145
    def get_form_class(self):
146
        return self.model.get_manager_form_class(exclude=self.exclude_fields)
147

  
145 148
    def init_stuff(self, request, *args, **kwargs):
146 149
        connector = self.get_connector(**kwargs)
147 150
        for app in apps.get_app_configs():
148 151
            if not hasattr(app, 'get_connector_model'):
149 152
                continue
150 153
            if app.get_connector_model().get_connector_slug() == connector:
151 154
                break
152 155
        else:
153 156
            raise Http404()
154 157

  
155 158
        self.model = app.get_connector_model()
156
        self.form_class = self.model.get_manager_form_class(exclude=self.exclude_fields)
157 159

  
158 160
    def dispatch(self, request, *args, **kwargs):
159 161
        self.init_stuff(request, *args, **kwargs)
160 162
        return super(GenericConnectorMixin, self).dispatch(
161 163
            request, *args, **kwargs)
162 164

  
163 165

  
164 166
class GenericConnectorView(GenericConnectorMixin, DetailView):
......
184 186
        with transaction.atomic():
185 187
            response = super(GenericCreateConnectorView, self).form_valid(form)
186 188
        self.object.availability()
187 189
        return response
188 190

  
189 191
    def init_stuff(self, request, *args, **kwargs):
190 192
        super(GenericCreateConnectorView, self).init_stuff(request, *args, **kwargs)
191 193
        # tell JS to prepopulate 'slug' field using the 'title' field
192
        self.form_class.base_fields['title'].widget.attrs['data-slug-sync'] = 'slug'
194
        self.get_form_class().base_fields['title'].widget.attrs['data-slug-sync'] = 'slug'
193 195

  
194 196

  
195 197
class GenericEditConnectorView(GenericConnectorMixin, UpdateView):
196 198
    template_name = 'passerelle/manage/service_form.html'
197 199

  
198 200
    def form_valid(self, form):
199 201
        with transaction.atomic():
200 202
            response = super(GenericEditConnectorView, self).form_valid(form)
201
-