All checks were successful
Deploy MES Core / deploy (push) Successful in 3m32s
51 lines
2.3 KiB
Python
51 lines
2.3 KiB
Python
from django import forms
|
|
|
|
from warehouse.models import Material
|
|
|
|
from .models import Deal
|
|
|
|
|
|
class ProductionTaskCreateForm(forms.Form):
|
|
drawing_name = forms.CharField(label="Наименование детали", max_length=255, required=False)
|
|
quantity_ordered = forms.IntegerField(label="Требуется (шт)", min_value=1)
|
|
size_value = forms.FloatField(label="Размер (мм)", min_value=0)
|
|
is_bend = forms.BooleanField(label="Гибка", required=False)
|
|
|
|
drawing_file = forms.FileField(label="Исходник (DXF/IGES)", required=False)
|
|
extra_drawing = forms.FileField(label="Доп. чертеж (PDF)", required=False)
|
|
|
|
deal = forms.ModelChoiceField(
|
|
label="Сделка",
|
|
queryset=Deal.objects.all().order_by("number"),
|
|
required=True,
|
|
empty_label="— выбрать —",
|
|
)
|
|
|
|
material = forms.ModelChoiceField(
|
|
label="Материал",
|
|
queryset=Material.objects.all().order_by("full_name"),
|
|
required=True,
|
|
empty_label="— выбрать —",
|
|
)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
existing = self.fields["drawing_name"].widget.attrs.get("class", "")
|
|
self.fields["drawing_name"].widget.attrs["class"] = (existing + " w-100").strip()
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
# Приводим поля формы к единому Bootstrap-оформлению.
|
|
# Это решает проблему, когда input «Наименование» выглядит как стандартный HTML и не занимает всю ширину.
|
|
for name, field in self.fields.items():
|
|
w = field.widget
|
|
if isinstance(w, forms.CheckboxInput):
|
|
w.attrs.setdefault('class', 'form-check-input')
|
|
elif isinstance(w, (forms.Select, forms.SelectMultiple)):
|
|
w.attrs.setdefault('class', 'form-select border-secondary')
|
|
else:
|
|
w.attrs.setdefault('class', 'form-control border-secondary')
|
|
|
|
# Явно делаем поле «Наименование детали» растягиваемым на всю ширину.
|
|
self.fields['drawing_name'].widget.attrs['class'] += ' w-100' |