Source code for shuup.front.admin_module.sorts_and_filters.form_parts
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from __future__ import unicode_literals
from django import forms
from django.utils.translation import ugettext_lazy as _
from shuup.admin.form_part import FormPart, TemplatedFormDef
from shuup.apps.provides import get_provide_objects
from shuup.front.utils.sorts_and_filters import FORM_MODIFIER_PROVIDER_KEY, get_configuration, set_configuration
[docs]class ConfigurationForm(forms.Form):
def __init__(self, *args, **kwargs):
super(ConfigurationForm, self).__init__(*args, **kwargs)
self.form_module_map = dict()
for extend_class in get_provide_objects(FORM_MODIFIER_PROVIDER_KEY) or []:
for field_key, field in extend_class().get_admin_fields() or []:
self.fields[field_key] = field
self.form_module_map[field_key] = extend_class
[docs]class ConfigurationShopFormPart(FormPart):
priority = 7
name = "product_list_facets"
form = ConfigurationForm
[docs] def get_form_defs(self):
if not self.object.pk:
return
yield TemplatedFormDef(
name=self.name,
form_class=self.form,
template_name="shuup/front/admin/sorts_and_filters.jinja",
required=False,
kwargs={"initial": get_configuration(shop=self.object)},
)
[docs] def form_valid(self, form):
if self.name in form.forms and form[self.name].has_changed():
set_configuration(shop=self.object, data=form[self.name].cleaned_data)
[docs]class ConfigurationCategoryForm(ConfigurationForm):
override_default_configuration = forms.BooleanField(
label=_("Override shop's default configuration"),
required=False,
help_text=_("If checked, this configuration will be used instead of the shop's default configuration."),
)
[docs]class ConfigurationCategoryFormPart(FormPart):
priority = 7
name = "product_list_facets"
form = ConfigurationCategoryForm
[docs] def get_form_defs(self):
if not self.object.pk:
return
yield TemplatedFormDef(
name=self.name,
form_class=self.form,
template_name="shuup/front/admin/sorts_and_filters_category.jinja",
required=False,
kwargs={"initial": get_configuration(category=self.object, force_category_override=True)},
)
[docs] def form_valid(self, form):
if self.name in form.forms and form[self.name].has_changed():
set_configuration(category=self.object, data=form[self.name].cleaned_data)