diff --git a/core/admin.py b/core/admin.py index 4db58fc4..d7ce8e99 100644 --- a/core/admin.py +++ b/core/admin.py @@ -16,7 +16,7 @@ from modeltranslation.translator import NotRegistered, translator from modeltranslation.utils import get_translation_fields from mptt.admin import DraggableMPTTAdmin -from core.forms import CRMForm, OrderForm, OrderProductForm, VendorForm +from core.forms import CRMForm, OrderForm, OrderProductForm, StockForm, VendorForm from core.models import ( Address, Attribute, @@ -743,6 +743,7 @@ class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # typ class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg] # noinspection PyClassVar model = Stock # type: ignore [misc] + form = StockForm list_display = ( "product", "vendor", @@ -777,6 +778,9 @@ class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: i "purchase_price", "digital_asset", ] + additional_fields = [ + "system_attributes", + ] relation_fields = [ "product", "vendor", diff --git a/core/forms.py b/core/forms.py index fc7a2b18..99e1401f 100644 --- a/core/forms.py +++ b/core/forms.py @@ -42,6 +42,15 @@ class OrderProductForm(forms.ModelForm): } +class StockForm(forms.ModelForm): + class Meta: + model = Product + fields = "__all__" + widgets = { + "system_attributes": JSONTableWidget(), + } + + class OrderForm(forms.ModelForm): class Meta: model = Order diff --git a/core/migrations/0051_stock_system_attributes.py b/core/migrations/0051_stock_system_attributes.py new file mode 100644 index 00000000..ffe61cf4 --- /dev/null +++ b/core/migrations/0051_stock_system_attributes.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.7 on 2025-10-26 16:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0050_remove_attribute_categories'), + ] + + operations = [ + migrations.AddField( + model_name='stock', + name='system_attributes', + field=models.JSONField(default=dict, verbose_name='system attributes'), + ), + ] diff --git a/core/models.py b/core/models.py index 6d4bcedf..286d0843 100644 --- a/core/models.py +++ b/core/models.py @@ -551,6 +551,7 @@ class Stock(ExportModelOperationsMixin("stock"), NiceModel): # type: ignore [mi verbose_name=_("digital file"), upload_to="downloadables/", ) + system_attributes = JSONField(default=dict, verbose_name=_("system attributes")) def __str__(self) -> str: return f"{self.vendor.name} - {self.product!s}"