feat: backoffice setup
CI / ci (ubuntu-24.04, 3.13) (push) Has been cancelled

This commit is contained in:
2026-07-23 13:31:53 +02:00
parent 87405f31fa
commit 2a9407e676
45 changed files with 2148 additions and 1 deletions
+35
View File
@@ -0,0 +1,35 @@
from django import forms
from django.core.exceptions import ValidationError
from shop.models import ProductVariant
class ProductVariantForm(forms.ModelForm):
class Meta:
model = ProductVariant
fields = ('sku', 'stock', 'attribute_values')
widgets = {'attribute_values': forms.CheckboxSelectMultiple}
def __init__(self, *args, product=None, **kwargs):
super().__init__(*args, **kwargs)
self.product = product or self.instance.product
def clean(self):
cleaned_data = super().clean()
attribute_values = cleaned_data.get('attribute_values')
if attribute_values is not None:
combination = set(attribute_values.values_list('pk', flat=True))
siblings = ProductVariant.objects.filter(product=self.product).exclude(pk=self.instance.pk)
for sibling in siblings:
if set(sibling.attribute_values.values_list('pk', flat=True)) == combination:
raise ValidationError(
'Ya existe una variante de este producto con la misma combinación de atributos.'
)
return cleaned_data
def save(self, commit=True):
self.instance.product = self.product
return super().save(commit=commit)