Source code for shuup.simple_supplier.admin_module.forms
# -*- coding: utf-8 -*-
# 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 django import forms
from shuup.admin.form_part import FormPart, TemplatedFormDef
from shuup.core.models import Product, Supplier
from shuup.simple_supplier.module import SimpleSupplierModule
from shuup.simple_supplier.utils import get_stock_adjustment_div, get_stock_information_html
[docs]class SimpleSupplierForm(forms.Form):
def __init__(self, **kwargs):
self.product = kwargs.pop("product")
self.request = kwargs.pop("request")
super(SimpleSupplierForm, self).__init__(**kwargs)
self.products = []
self.module_name = SimpleSupplierModule.name
self.supplier_model = Supplier
if self.product:
self._build_fields()
def _build_fields(self):
if self.product.is_variation_parent():
self.products = Product.objects.filter(variation_parent=self.product)
else:
self.products = [self.product]
[docs] def save(self):
return # No need to save anything since all stock adjustments are made by AJAX.
[docs] def get_suppliers(self, product):
return Supplier.objects.filter(
shop_products__product=product, supplier_modules__module_identifier="simple_supplier"
).distinct()
[docs] def can_manage_stock(self):
return Supplier.objects.filter(
supplier_modules__module_identifier="simple_supplier", stock_managed=True
).exists()
[docs] def get_stock_information(self, supplier, product):
return get_stock_information_html(supplier, product)
[docs] def get_stock_adjustment_form(self, supplier, product):
return get_stock_adjustment_div(self.request, supplier, product)
[docs]class SimpleSupplierFormPart(FormPart):
priority = 15
name = "simple_supplier"
form = SimpleSupplierForm
[docs] def get_form_defs(self):
if self.object.pk: # Don't yield form if product is in new mode
yield TemplatedFormDef(
name=self.name,
form_class=self.form,
template_name="shuup/simple_supplier/admin/product_form_part.jinja",
required=False,
kwargs={"product": self.object.product, "request": self.request},
)
[docs] def form_valid(self, form):
return # No need to save anything since all stock adjustments are made by AJAX