import itertools from django import forms from common.models import Location, LiveImageUpload from .models import WorkSell, WorkSellPhoto from specializations.models import Specialization class ContractorWorkSellTrashForm(forms.Form): pk = forms.ModelChoiceField(queryset=WorkSell.objects.none()) def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super().__init__(*args, **kwargs) self.fields['pk'].queryset = self.request.user.work_sell.all() class WorkSellForm(forms.ModelForm): # Define a form field manually for a reverse model vield: photos = forms.ModelMultipleChoiceField( queryset=WorkSellPhoto.objects.none(), widget=forms.CheckboxSelectMultiple, required=False, ) live_images = forms.ModelMultipleChoiceField( queryset=LiveImageUpload.objects.all(), widget=forms.CheckboxSelectMultiple, required=False, ) class Meta: model = WorkSell fields = ( 'building_classification', 'construction_type', 'specialization', 'budget', 'currency', 'description', 'name', 'term', 'term_type', 'work_type', ) widgets = { 'building_classification': forms.Select(attrs={'class': 'selectpicker'}), 'construction_type': forms.Select(attrs={'class': 'selectpicker'}), 'currency': forms.Select(attrs={'class': 'selectpicker'}), 'term_type': forms.Select(attrs={'class': 'selectpicker'}), 'work_type': forms.Select(attrs={'class': 'selectpicker -project-work-type-select-field'}), } def __init__(self, *args, **kwargs): # self.request = kwargs.pop('request') super().__init__(*args, **kwargs) self.fields['photos'].queryset = self.instance.photos.all() class WorkSellFilterForm(forms.ModelForm): keywords = forms.CharField(required=False, max_length=255) class Meta: model = WorkSell fields = ( 'location', 'building_classification', 'construction_type', 'specialization', ) widgets = { 'building_classification': forms.Select(attrs={'class': 'selectpicker'}), 'construction_type': forms.Select(attrs={'class': 'selectpicker'}), } def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super().__init__(*args, **kwargs) self.fields['specialization'].required = False self.fields['specialization'].queryset = Specialization.objects.root_nodes()[0].get_descendants()