wcs: don't lose settings fields when there are multiple sites (#12339)

This commit is contained in:
Frédéric Péters 2016-06-27 17:04:48 +02:00
parent a01b9829ac
commit 68386f7e27
2 changed files with 18 additions and 10 deletions

View File

@ -180,16 +180,24 @@ class WcsDataBaseCell(CellBase, WcsBlurpMixin):
class Meta:
abstract = True
def get_default_form_class(self):
def get_form_fields(self):
if len(get_wcs_services()) == 1:
return None
return []
return ['wcs_site']
def get_form_widgets(self):
if len(get_wcs_services()) == 1:
return {}
combo_wcs_sites = [('', _('All'))]
wcs_sites = [(x, y.get('title')) for x, y in get_wcs_services().items()]
wcs_sites.sort(key=lambda x: x[1])
combo_wcs_sites.extend(wcs_sites)
return {'wcs_site': Select(choices=combo_wcs_sites)}
def get_default_form_class(self):
return model_forms.modelform_factory(self.__class__,
fields=['wcs_site'],
widgets={'wcs_site': Select(choices=combo_wcs_sites)})
fields=self.get_form_fields(),
widgets=self.get_form_widgets())
def render(self, context):
context[self.variable_name] = self.get_data(context)
@ -217,12 +225,10 @@ class WcsCurrentFormsCell(WcsUserDataBaseCell):
class Meta:
verbose_name = _('User Forms')
def get_default_form_class(self):
form_class = super(WcsCurrentFormsCell, self).get_default_form_class()
if not form_class:
return model_forms.modelform_factory(self.__class__,
fields=['current_forms', 'done_forms'])
return form_class
def get_form_fields(self):
fields = super(WcsCurrentFormsCell, self).get_form_fields()
fields.extend(['current_forms', 'done_forms'])
return fields
@property
def template_name(self):

View File

@ -254,6 +254,8 @@ def test_current_forms_cell_setup():
form = form_class()
assert form.fields['wcs_site'].widget.choices == [
('', 'All'), (u'default', u'test'), (u'other', u'test2')]
assert 'current_forms' in form.fields
try:
# check there is not wcs_site field if there's a single one defined in
# the configuration