125 lines
2.8 KiB
Python
125 lines
2.8 KiB
Python
import logging
|
|
from django import forms
|
|
|
|
from core import OrderStatus
|
|
from core.models import (
|
|
ProductVariant,
|
|
Order,
|
|
OrderLine,
|
|
ShippingRate,
|
|
TrackingNumber,
|
|
Coupon,
|
|
ProductPhoto
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class ProductVariantUpdateForm(forms.ModelForm):
|
|
class Meta:
|
|
model = ProductVariant
|
|
fields = [
|
|
'name',
|
|
'sku',
|
|
'price',
|
|
'weight',
|
|
'visible_in_listings',
|
|
'track_inventory',
|
|
'stock',
|
|
'sorting',
|
|
'order_limit',
|
|
'image'
|
|
]
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
if self.instance:
|
|
self.fields['image'].queryset = ProductPhoto.objects.filter(
|
|
product=self.instance.product
|
|
)
|
|
|
|
def clean_weight(self):
|
|
data = self.cleaned_data['weight']
|
|
if not data:
|
|
data = 0
|
|
|
|
return data
|
|
|
|
|
|
class CouponForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Coupon
|
|
fields = (
|
|
'type',
|
|
'name',
|
|
'code',
|
|
'valid_from',
|
|
'valid_to',
|
|
'discount_value_type',
|
|
'discount_value',
|
|
'variants',
|
|
)
|
|
widgets = {
|
|
'valid_from': forms.DateInput(attrs={
|
|
'type': 'date'
|
|
}),
|
|
'valid_to': forms.DateInput(attrs={
|
|
'type': 'date'
|
|
}),
|
|
}
|
|
|
|
|
|
class OrderLineFulfillForm(forms.ModelForm):
|
|
# send_shipment_details_to_customer = forms.BooleanField(initial=True)
|
|
|
|
class Meta:
|
|
model = OrderLine
|
|
fields = ('quantity_fulfilled',)
|
|
widgets = {
|
|
'quantity_fulfilled': forms.NumberInput(attrs={
|
|
'min': 0,
|
|
})
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.fields['quantity_fulfilled'].widget.attrs['max'] = self.instance.quantity
|
|
|
|
|
|
OrderLineFormset = forms.inlineformset_factory(
|
|
Order, OrderLine, form=OrderLineFulfillForm,
|
|
extra=0, can_delete=False
|
|
)
|
|
|
|
|
|
class OrderCancelForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Order
|
|
fields = ('status',)
|
|
widgets = {
|
|
'status': forms.HiddenInput()
|
|
}
|
|
|
|
|
|
class OrderTrackingForm(forms.ModelForm):
|
|
# send_shipment_details_to_customer = forms.BooleanField(initial=True)
|
|
|
|
class Meta:
|
|
model = TrackingNumber
|
|
fields = ['tracking_id']
|
|
labels = {
|
|
'tracking_id': 'Tracking Number'
|
|
}
|
|
|
|
|
|
OrderTrackingFormset = forms.inlineformset_factory(
|
|
Order, TrackingNumber, form=OrderTrackingForm,
|
|
extra=1, can_delete=False
|
|
)
|
|
|
|
|
|
class ProductPhotoForm(forms.ModelForm):
|
|
class Meta:
|
|
model = ProductPhoto
|
|
fields = ('image',)
|