Source code for salesman.admin.forms
from __future__ import annotations
from typing import Any
from django import forms
from salesman.conf import app_settings
from salesman.core.utils import get_salesman_model
from .widgets import OrderStatusSelect, PaymentSelect
Order = get_salesman_model("Order")
OrderPayment = get_salesman_model("OrderPayment")
OrderNote = get_salesman_model("OrderNote")
[docs]class OrderModelForm(forms.ModelForm):
class Meta:
model = Order
exclude: list[str] = []
widgets = {
"status": OrderStatusSelect,
}
def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)
if "status" in self.fields:
self.fields["status"].widget.order = self.instance
def clean_status(self) -> str:
status, order = self.cleaned_data["status"], self.instance
return app_settings.SALESMAN_ORDER_STATUS.validate_transition(status, order)
[docs]class OrderPaymentModelForm(forms.ModelForm):
class Meta:
model = OrderPayment
exclude: list[str] = []
widgets = {
"payment_method": PaymentSelect,
}
[docs]class OrderNoteModelForm(forms.ModelForm):
class Meta:
model = OrderNote
exclude: list[str] = []
widgets = {
"message": forms.Textarea(attrs={"rows": 4, "cols": 60}),
}