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 |
|
-
|