Source code for shuup.admin.modules.categories.form_parts

from django.conf import settings

from shuup.admin.form_part import FormPart, TemplatedFormDef
from shuup.admin.modules.categories.forms import CategoryBaseForm, CategoryProductForm
from shuup.core.models import Category


[docs] class CategoryBaseFormPart(FormPart): priority = -1000 # Show this first, no matter what
[docs] def get_form_defs(self): yield TemplatedFormDef( "base", CategoryBaseForm, template_name="shuup/admin/categories/_edit_base_form.jinja", required=True, kwargs={ "instance": self.object, "request": self.request, "languages": settings.LANGUAGES, }, )
[docs] def form_valid(self, form): rebuild = "parent" in form["base"].changed_data self.object = form["base"].save() if rebuild: Category.objects.rebuild()
[docs] class CategoryProductFormPart(FormPart): priority = 1 name = "products"
[docs] def get_form_defs(self): if not self.object.pk: return shop = self.request.shop yield TemplatedFormDef( self._get_form_name(shop), CategoryProductForm, template_name="shuup/admin/categories/_edit_products_form.jinja", required=True, kwargs={"shop": shop, "category": self.object}, )
def _get_form_name(self, shop): return f"{shop.pk}_{self.name}"
[docs] def form_valid(self, form): for shop in self.object.shops.all(): form_name = self._get_form_name(shop) if form_name in form.forms: form[self._get_form_name(shop)].save()