def render(self, context): user = context['user'] # TODO: DRY if isinstance(self.field_name, basestring): field_name = self.field_name else: field_name = self.field_name.resolve(context) if isinstance(self.save_to, basestring): save_to = self.save_to else: save_to = self.save_to.resolve(context) value = context['request'].GET.get(field_name, None) if value is not None and value in self.allowed_values: if user.is_authenticated(): profile = user.get_profile() setattr(profile, field_name, value) profile.save() elif not settings.DISABLE_PREF_COOKIES: response_update_cookie(context['request'], field_name, value) else: value = get_useroption(context['request'], field_name, self.default_value) context._useroptions_field_name = field_name context._useroptions_value = unicode(value) context[save_to] = unicode(value) out = '<div style="float:right;padding:8px;" class="btn-group">' \ + self.nodelist.render(context) \ + '</div>' return out
def task_view_type_check(context): """ Used for inc_task_list.html. Use select_related('content') if showing the content. Checks the user options and if the 'tasks' is the queryset. """ # TODO: This is temporary solution. Refactor UserOptions! # Takes the old value if the current request updates it. tasks = context['tasks'] if hasattr(tasks, 'select_related'): field_name = context.get('view_type', "task_view_type") # 0 is list, 1 is with content, 2 is with context (two tasks per row) if get_useroption(context['request'], field_name) != 0: context['tasks'] = tasks.select_related('content') return ''