Files
MES_Core/shiftflow/forms.py
ackFromRedmi cddbfeadde
All checks were successful
Deploy MES Core / deploy (push) Successful in 3m32s
Добавил превьюшки дхф и настройки сервера
2026-04-02 23:52:04 +03:00

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'