devicehub-django/lot/forms.py

40 lines
1.1 KiB
Python

from django import forms
from lot.models import Lot
class LotsForm(forms.Form):
lots = forms.ModelMultipleChoiceField(
queryset=Lot.objects.filter(archived=False),
widget=forms.CheckboxSelectMultiple,
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
#grouping lots by their lot group for more readability
self.grouped_lots = {}
for lot in self.fields['lots'].queryset:
group_name = lot.type.name if lot.type else "No group"
if group_name not in self.grouped_lots:
self.grouped_lots[group_name] = []
self.grouped_lots[group_name].append(lot)
def clean(self):
self._lots = self.cleaned_data.get("lots")
return self._lots
def save(self, commit=True):
if not commit:
return
for dev in self.devices:
for lot in self._lots:
lot.add(dev.id)
return
def remove(self):
for dev in self.devices:
for lot in self._lots:
lot.remove(dev.id)
return