wcs: rely on global render method (#20374)

This commit is contained in:
Frédéric Péters 2018-01-03 17:28:30 +01:00
parent a129bda7c9
commit 921ab9f484
1 changed files with 30 additions and 32 deletions

View File

@ -202,9 +202,7 @@ class WcsBlurpMixin(object):
return wcs_sites
def get_cell_extra_context(self, context):
extra_context = super(WcsBlurpMixin, self).get_cell_extra_context(context)
extra_context[self.variable_name] = self.get_data()
return extra_context
return {self.variable_name: self.get_data(context)}
class WcsDataBaseCell(CellBase, WcsBlurpMixin):
@ -241,10 +239,10 @@ class WcsDataBaseCell(CellBase, WcsBlurpMixin):
fields=self.get_form_fields(),
widgets=self.get_form_widgets())
def render(self, context):
if not self.variable_name in context:
context[self.variable_name] = self.get_data(context)
return super(WcsDataBaseCell, self).render(context)
def get_cell_extra_context(self, context):
extra_context = super(WcsDataBaseCell, self).get_cell_extra_context(context)
extra_context.update(WcsBlurpMixin.get_cell_extra_context(self, context))
return extra_context
class WcsUserDataBaseCell(WcsDataBaseCell):
@ -293,8 +291,8 @@ class WcsCurrentFormsCell(WcsUserDataBaseCell):
return '%s - %s' % (initial_label, label)
return label
def render(self, context):
context[self.variable_name] = self.get_data(context)
def get_cell_extra_context(self, context):
context = super(WcsCurrentFormsCell, self).get_cell_extra_context(context)
if not (self.current_forms and self.done_forms):
for wcs_site in context['user_forms']:
if not context['user_forms'].get(wcs_site):
@ -308,8 +306,7 @@ class WcsCurrentFormsCell(WcsUserDataBaseCell):
context['user_forms'][wcs_site]['data'] = [x for x in
context['user_forms'][wcs_site]['data'] if x.get('form_status_is_endpoint')]
context['current_forms'] = context['user_forms'] # legacy
return super(WcsCurrentFormsCell, self).render(context)
return context
@register_cell_class
class WcsCurrentDraftsCell(WcsUserDataBaseCell):
@ -356,43 +353,44 @@ class WcsFormsOfCategoryCell(WcsCommonCategoryCell, WcsBlurpMixin):
def is_relevant(self, context):
return bool(self.category_reference)
def render(self, context):
def get_cell_extra_context(self, context):
extra_context = super(WcsFormsOfCategoryCell, self).get_cell_extra_context(context)
extra_context.update(WcsBlurpMixin.get_cell_extra_context(self, context))
if not self.category_reference:
return ''
context[self.variable_name] = self.get_data(context)
context['slug'] = self.category_reference.split(':')[-1]
context['title'] = self.cached_title
context['description'] = self.cached_description
return extra_context
extra_context['slug'] = self.category_reference.split(':')[-1]
extra_context['title'] = self.cached_title
extra_context['description'] = self.cached_description
try:
context['forms'] = list(context['forms'][self.wcs_site]['data'])
extra_context['forms'] = list(extra_context['forms'][self.wcs_site]['data'])
except (KeyError, TypeError) as e:
# an error occured when getting the data
context['forms'] = []
extra_context['forms'] = []
# default sort is alphabetical, it's always done as this will serve as
# secondary sort key (thanks to Python stable sort)
context['forms'] = sorted(context['forms'], key=lambda x: x.get('title'))
context['more_forms'] = []
extra_context['forms'] = sorted(extra_context['forms'], key=lambda x: x.get('title'))
extra_context['more_forms'] = []
if self.ordering == 'popularity':
context['forms'] = sorted(context['forms'], key=lambda x: x.get('count'), reverse=True)
extra_context['forms'] = sorted(extra_context['forms'], key=lambda x: x.get('count'), reverse=True)
elif self.ordering == 'manual':
if self.manual_order:
manual_order = self.manual_order.get('data')
for form in context['forms']:
for form in extra_context['forms']:
form_reference = '%s:%s' % (self.category_reference, form['slug'])
try:
form['order'] = manual_order.index(form_reference)
except ValueError:
form['order'] = 9999
context['forms'] = sorted(context['forms'], key=lambda x: x.get('order'))
extra_context['forms'] = sorted(extra_context['forms'], key=lambda x: x.get('order'))
if self.limit:
if len(context['forms']) > self.limit:
context['more_forms'] = context['forms'][self.limit:]
context['forms'] = context['forms'][:self.limit]
if len(extra_context['forms']) > self.limit:
extra_context['more_forms'] = extra_context['forms'][self.limit:]
extra_context['forms'] = extra_context['forms'][:self.limit]
return super(WcsFormsOfCategoryCell, self).render(context)
return extra_context
def render_for_search(self):
return ''
@ -437,9 +435,9 @@ class TrackingCodeInputCell(CellBase):
fields=['wcs_site'],
widgets={'wcs_site': Select(choices=combo_wcs_sites)})
def render(self, context):
tmpl = template.loader.get_template(self.template_name)
def get_cell_extra_context(self, context):
extra_context = super(TrackingCodeInputCell, self).get_cell_extra_context(context)
if not self.wcs_site:
self.wcs_site = get_wcs_services().keys()[0]
context['url'] = get_wcs_services().get(self.wcs_site).get('url')
return tmpl.render(context, context.get('request'))
extra_context['url'] = get_wcs_services().get(self.wcs_site).get('url')
return extra_context