def get_context_data(self, context): """ A custom get_context_data method to return pages, possibly filtering expired pages based on the plugin's ``hide_expired`` setting """ selected_pages = self.config.get("pages", []) show_all_pages = self.config.get("show_all_pages", True) hide_expired = self.config.get("hide_expired", False) pages_qs = Page.objects.prefetch_related("translations").not_deleted() if hide_expired: pages_qs = pages_qs.visible(context["request"].shop, user=context["request"].user) else: pages_qs = pages_qs.for_shop(context["request"].shop).for_user(user=context["request"].user) if not show_all_pages: pages_qs = pages_qs.filter(id__in=selected_pages) pages_qs = order_query_by_values(pages_qs, selected_pages) return { "title": self.get_translated_value("title"), "pages": pages_qs, }
def __init__(self, queryset, required=True, widget=None, label=None, initial=None, help_text='', *args, **kwargs): super(OrderedModelMultipleChoiceField, self).__init__( queryset, required, widget, label, initial, help_text, *args, **kwargs) if initial: # To show current choice order in plugin self.queryset = order_query_by_values(self.queryset, initial)
def __init__(self, queryset, required=True, widget=None, label=None, initial=None, help_text="", *args, **kwargs): super().__init__( queryset, required=required, widget=widget, label=label, initial=initial, help_text=help_text, *args, **kwargs ) if initial: # To show current choice order in plugin self.queryset = order_query_by_values(self.queryset, initial)
def _check_values(self, value): # To save current choice order in DB queryset = super(OrderedModelMultipleChoiceField, self)._check_values(value) return order_query_by_values(queryset, value)