def __init__(self, href1=None, href2=None, is_new_button=False, is_get_button=True, label="", *argi, **argv): ModelSelect2Widget.__init__(self, *argi, label=label, **argv) self.href1 = href1 self.href2 = href2 self.is_new_button = is_new_button self.is_get_button = is_get_button self._label = label
def __init__(self, *args, **kwargs): self.catalogues = kwargs.pop('catalogues', None) self.lots = kwargs.pop('lots', None) super().__init__(*args, **kwargs) fields = self.fields d = self.__dict__ if self.catalogues: self.forms['item'].fields['catalogue'] = forms.ModelChoiceField( queryset=self.catalogues, widget=ModelSelect2Widget( queryset=self.catalogues, search_fields=['name__icontains'], ), ) if self.lots: self.forms['item'].fields['lot'] = forms.ModelChoiceField( queryset=self.lots, widget=ModelSelect2Widget( queryset=self.lots, search_fields=['lot_as_listed_in_collection__icontains'], ), )
class AddressChainedSelect2WidgetForm(forms.Form): country = forms.ModelChoiceField( queryset=Country.objects.all(), label="Country", widget=ModelSelect2Widget( search_fields=["name__icontains"], max_results=500, dependent_fields={"city": "cities"}, attrs={"data-minimum-input-length": 0}, ), ) city = forms.ModelChoiceField( queryset=City.objects.all(), label="City", widget=ModelSelect2Widget( search_fields=["name__icontains"], dependent_fields={"country": "country"}, max_results=500, attrs={"data-minimum-input-length": 0}, ), ) city2 = forms.ModelChoiceField( queryset=City.objects.all(), label="City not Interdependent", widget=ModelSelect2Widget( search_fields=["name__icontains"], dependent_fields={"country": "country"}, max_results=500, attrs={"data-minimum-input-length": 0}, ), )
def __init__(self, *args, **kwargs): self.catalogues = kwargs.pop('catalogues', None) self.lots = kwargs.pop('lots', None) super().__init__(*args, **kwargs) if self.catalogues: self.fields['catalogue'] = forms.ModelChoiceField( queryset=self.catalogues, widget=ModelSelect2Widget( queryset=self.catalogues, search_fields=['name__icontains'], ), ) if self.lots: self.fields['lot'] = forms.ModelChoiceField( queryset=self.lots, widget=ModelSelect2Widget( queryset=self.lots, search_fields=['lot_as_listed_in_collection__icontains'], ), ) super().__init__(**kwargs) self.content_type = ContentType.objects.get_for_model(self.instance) self.add_tag_field() self.add_languages_field() self.add_publishers_field() self.add_material_details_field() self.add_itemtype_field()
class Meta: model = CourseStudy fields = [ 'study_year', ] + (['course'] if has_course_field else ['study']) if has_course_field: widgets = { 'course': AddAnotherWidgetWrapper( ModelSelect2Widget(model=Course, search_fields=[ 'name__icontains', 'course_code__icontains' ]), reverse_lazy('boecie:index')), 'study': HiddenInput(), } else: widgets = { 'study': AddAnotherWidgetWrapper( ModelSelect2Widget(model=Study, search_fields=[ 'name__icontains', 'slug__icontains' ]), reverse_lazy('boecie:index')), 'course': HiddenInput(), }
class EstoqueForm(forms.ModelForm): quantidade = forms.IntegerField(label='Quantidade de Vacinas', widget=forms.NumberInput(attrs={'class': "form-control", 'min': 0})) campanha = forms.ModelChoiceField(label='Campanha', queryset=Campanha.objects, required=False, widget=ModelSelect2Widget(model=Campanha, search_fields=['nome__icontains'], attrs={'class': "form-control", "data-minimum-input-length": "0", "data-placeholder": "Busque e selecione uma campanha"})) estabelecimento = forms.ModelChoiceField(label='Estabelecimento', queryset=Estabelecimento.objects, required=False, widget=ModelSelect2Widget(model=Estabelecimento, search_fields=['nome__icontains'], attrs={'class': "form-control", "data-minimum-input-length": "0", "data-placeholder": "Busque e selecione um estabelecimento"})) lote = forms.CharField(label='Lote de Vacinas', max_length=20, widget=forms.TextInput(attrs={'placeholder': 'código de Identificação do Lote', 'class': "form-control"})) class Meta: model = Estoque exclude = () def __init__(self, *args, **kwargs): self.estabelecimento = kwargs.pop('estabelecimento', None) self.campanha = kwargs.pop('campanha', None) super(EstoqueForm, self).__init__(*args,**kwargs) if self.estabelecimento: self.fields['estabelecimento'].initial = self.estabelecimento self.fields['estabelecimento'].disabled = True if self.campanha: self.fields['campanha'].initial = self.campanha self.fields['campanha'].disabled = True def clean(self): quantidade = self.cleaned_data.get('quantidade') if int(quantidade) < 0: self.add_error('quantidade', 'A quantidade não pode ser menor que zero')
class AddressChainedSelect2WidgetForm(forms.Form): country = forms.ModelChoiceField( queryset=Country.objects.all(), label='Country', widget=ModelSelect2Widget( search_fields=['name__icontains'], max_results=500, dependent_fields={'city': 'cities'}, attrs={'data-minimum-input-length': 0}, )) city = forms.ModelChoiceField(queryset=City.objects.all(), label='City', widget=ModelSelect2Widget( search_fields=['name__icontains'], dependent_fields={'country': 'country'}, max_results=500, attrs={'data-minimum-input-length': 0}, )) city2 = forms.ModelChoiceField(queryset=City.objects.all(), label='City not Interdependent', widget=ModelSelect2Widget( search_fields=['name__icontains'], dependent_fields={'country': 'country'}, max_results=500, attrs={'data-minimum-input-length': 0}, ))
class Meta: """Form configuration""" model = models.Game fields = ( "name", "year", "developer", "publisher", "website", "platforms", "genres", "description", "title_logo", "reason", ) widgets = { "platforms": Select2MultipleWidget, "genres": Select2MultipleWidget, "developer": ModelSelect2Widget(model=models.Company, search_fields=["name__icontains"]), "publisher": ModelSelect2Widget(model=models.Company, search_fields=["name__icontains"]), }
class ExperimentSearchForm(forms.Form): text = forms.CharField(required=False) cas = forms.CharField(label='CAS', required=False) exp_type = forms.ModelChoiceField(widget=ModelSelect2Widget( queryset=ExperimentType.objects.all(), search_fields=['exp_type__icontains'], attrs={'data-tags': 'false'}), queryset=ExperimentType.objects.all(), required=False) target = forms.ModelChoiceField(widget=ModelSelect2Widget( queryset=ProteinTarget.objects.all(), search_fields=['target__icontains'], attrs={'data-tags': 'false'}), queryset=ProteinTarget.objects.all(), required=False) smiles = forms.CharField(label='smiles', required=False) cutoff = forms.DecimalField( widget=forms.NumberInput(attrs={'value': "0.4"}), min_value=0.00, max_value=1.00, decimal_places=2, required=False, initial=0.40) stype = forms.ChoiceField(widget=Select2Widget, choices=(('sim', 'Similarity'), ('sub', 'Substructure')), required=False)
def __init__(self, *args, **kwargs): super(CuuHoLocationForm, self).__init__(*args, **kwargs) self.fields['volunteer'] = ModelChoiceField( queryset=TinhNguyenVien.objects.order_by("-status"), widget=ModelSelect2Widget( model=TinhNguyenVien, search_fields=['name__unaccent__icontains'], attrs={ 'style': 'min-width:250px', 'data-minimum-input-length': 0 }), required=False) self.fields["tinh"] = ModelChoiceField( queryset=Tinh.objects.order_by("name"), widget=ModelSelect2Widget( model=Tinh, search_fields=['name__unaccent__icontains'], attrs={ 'style': 'min-width:250px', 'data-minimum-input-length': 0 }), required=False) self.fields["huyen"] = ModelChoiceField( queryset=Huyen.objects.order_by("name"), widget=ModelSelect2Widget( model=Huyen, search_fields=['name__unaccent__icontains'], dependent_fields={'tinh': 'tinh'}, attrs={ 'style': 'min-width:250px', 'data-minimum-input-length': 0 }), required=False) self.fields["xa"] = ModelChoiceField( queryset=Xa.objects.order_by("name"), widget=ModelSelect2Widget( model=Xa, search_fields=['name__unaccent__icontains'], dependent_fields={'huyen': 'huyen'}, attrs={ 'style': 'min-width:250px', 'data-minimum-input-length': 0 }), required=False) self.fields["tinh"].label = "Tỉnh" self.fields["tinh"].help_text = "Nhấn vào để chọn tỉnh" self.fields["huyen"].label = "Huyện" self.fields["huyen"].help_text = "Bạn phải chọn tỉnh trước" self.fields["xa"].label = "Xã" self.fields["xa"].help_text = "Bạn phải chọn tỉnh, và huyện trước"
class Meta(BaseForm.Meta): model = SubFuncFlow widgets = { 'func_flow': ModelSelect2Widget(queryset=FuncFlow.objects.filter( status__in=('On going', 'Released')).all(), search_fields=['name__icontains', ]), 'requester': ModelSelect2Widget(queryset=Application.objects.filter( status__in=('On going', 'Released')).all(), search_fields=['name__icontains', ]), 'receiver': ModelSelect2Widget(queryset=Application.objects.filter( status__in=('On going', 'Released')).all(), search_fields=['name__icontains', ]), }
class Meta: model = WorkAuthor fields = "__all__" widgets = { 'author': ModelSelect2Widget(model=Person, search_fields=['short_name__icontains']), 'work': ModelSelect2Widget(model=Work, search_fields=['title__icontains']), }
class Meta: model = CollectionPlaceRelation fields = "__all__" widgets = { 'place': ModelSelect2Widget(model=Place, search_fields=['name__icontains']), 'type': ModelSelect2Widget(model=CollectionPlaceRelationType, search_fields=['name__icontains']) }
class AgendamentoForm(forms.ModelForm): data = forms.DateField(label=u'Data de Início', input_formats=['%d/%m/%Y'], widget=forms.DateInput(format='%d/%m/%Y', attrs={'placeholder': 'dia/mês/ano', 'class': 'form-control', 'data-toggle': "input-mask", 'data-mask-format': "00/00/0000"})) quantidade = forms.IntegerField(label='Quantidade de Vacinas', widget=forms.NumberInput(attrs={'class': "form-control", 'min': 0})) campanha = forms.ModelChoiceField(label='Campanha', queryset=Campanha.objects, required=False, widget=ModelSelect2Widget(model=Campanha, search_fields=['nome__icontains'], attrs={'class': "form-control", "data-minimum-input-length": "0", "data-placeholder": "Busque e selecione uma empresa"})) estabelecimento = forms.ModelChoiceField(label='Estabelecimento', queryset=Estabelecimento.objects, required=False, widget=ModelSelect2Widget(model=Estabelecimento, search_fields=['nome__icontains'], attrs={'class': "form-control", "data-minimum-input-length": "0", "data-placeholder": "Busque e selecione uma empresa"})) class Meta: model = Agendamento exclude = ('status', 'paciente', 'data_aplicacao', 'estoque') def __init__(self, *args, **kwargs): self.estabelecimento = kwargs.pop('estabelecimento', None) self.campanha = kwargs.pop('campanha', None) super(AgendamentoForm, self).__init__(*args,**kwargs) if self.estabelecimento: self.fields['estabelecimento'].initial = self.estabelecimento self.fields['estabelecimento'].disabled = True if self.campanha: self.fields['campanha'].initial = self.campanha self.fields['campanha'].disabled = True def clean(self): quantidade = self.cleaned_data.get('quantidade') data = self.cleaned_data.get('data') campanha = self.cleaned_data.get('campanha') if int(quantidade) < 0: self.add_error('quantidade', 'A quantidade não pode ser menor que zero') if int(quantidade) > campanha.estoque_disponivel(): estoque_disponivel = Estoque.objects.filter(estabelecimento=self.estabelecimento, campanha=self.campanha).aggregate(qtd=Sum('quantidade'))['qtd'] self.add_error('quantidade', 'O número de agendamentos supera as vacinas disponíveis para este estabelecimento: {}'.format(estoque_disponivel or 0)) if data < datetime.date(2020, 12, 10): self.add_error('data', 'A data não pode ser inferior a 12/2020') def save(self): agendamentos = [] quantidade_agendamentos = self.cleaned_data.get('quantidade') for x in range(quantidade_agendamentos): agendamentos.append( Agendamento(status=Agendamento.DISPONIVEL, data=self.cleaned_data.get('data'), campanha=self.cleaned_data.get('campanha'), estabelecimento=self.cleaned_data.get('estabelecimento')) ) Agendamento.objects.bulk_create(agendamentos)
class SalaForm(forms.ModelForm): campus = forms.ModelChoiceField(required=True, queryset=Campus.objects.all(), label="", widget=ModelSelect2Widget( model=Campus, search_fields=['nome__icontains'], attrs={ 'style': "width:100%", 'data-minimum-input-length': "0", 'data-placeholder': "Selecione o campus..." })) edificio = forms.ModelChoiceField( required=True, queryset=Edificio.objects.all(), label="", widget=ModelSelect2Widget(model=Edificio, search_fields=['nome__icontains'], dependent_fields={'campus': 'campus'}, attrs={ 'style': "width:100%", 'data-minimum-input-length': "0", 'data-placeholder': "Selecione o edificio..." })) identificacao = forms.CharField( label="", widget=forms.TextInput(attrs={ 'class': "input", 'type': "text", 'placeholder': "Sala" }), error_messages={ 'unique': 'Uma sala com o mesmo nome já existe! Por favor coloque outra sala.' }) mapa = forms.CharField(required=False, label="", widget=forms.TextInput(attrs={ 'class': "input", 'type': "text" })) class Meta: model = Sala fields = ('campus', 'edificio', 'identificacao', 'mapa', 'mapa_imagem') error_messages = { NON_FIELD_ERRORS: { 'unique_together': "A Sala com este Nome, Edifício e Campus já existe!", } }
class Meta(BaseForm.Meta): model = BatchFlow widgets = { 'subfunc_flow': ModelSelect2Widget(queryset=SubFuncFlow.objects.filter( status__in=('On going', 'Released')).all(), search_fields=['name__icontains', ]), 'input_flow': ModelSelect2Widget(queryset=AsynchronousFlow.objects.filter( status__in=('On going', 'Released')).all(), search_fields=['name__icontains', ]), 'output_flow': ModelSelect2Widget(queryset=AsynchronousFlow.objects.filter( status__in=('On going', 'Released')).all(), search_fields=['name__icontains', ]) }
class Meta: model = PersonItemRelation fields = ['item', 'person', 'role', 'notes'] widgets = { 'person': ModelSelect2Widget(model=Person, search_fields=['short_name__icontains']), 'role': ModelSelect2Widget(model=PersonItemRelationRole, search_fields=['name__icontains']) }
def __init__(self, href1=None, href2=None, label="", *argi, **argv): if href1: if "attrs" in argv: argv["attrs"]["href1"] = href1 else: argv["attrs"] = {"href1": href1} if href2: if "attrs" in argv: argv["attrs"]["href2"] = href2 else: argv["attrs"] = {"href2": href2} ModelSelect2Widget.__init__(self, *argi, label=label, **argv)
class Meta: model = Publisher fields = "__all__" widgets = { 'publisher': ModelSelect2Widget(model=Person, search_fields=['short_name__icontains']), 'edition': ModelSelect2Widget( model=Edition, search_fields=['year__icontains', 'place__name__icontains']) }
class WorkForm(forms.ModelForm): ''' Crispy form for publication create/update(edit). Added field with buttons for inline add. Is almost the same as PublicationForm but has a submit button. ''' date_precision = forms.ModelChoiceField(widget=ModelSelect2Widget( model=Date_precision, search_fields=['date_precision__icontains', ], attrs={'data-minimum-input-length': 0}, ), queryset=Date_precision.objects.all()) genre = forms.ModelChoiceField(widget=ModelSelect2Widget( model=Genre, search_fields=['date_precision__icontains', ], attrs={'data-minimum-input-length': 0}, ), queryset=Genre.objects.all()) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.fields['text'].required = False self.fields['year'].required = False self.fields['title'].required = False self.fields['publisher'].required = False self.fields['location'].required = False self.fields['detail_descriptions'].required = False self.fields['date_precision'].required = False self.fields['genre'].required = False self.helper.layout = Layout( 'text', 'year', 'title', 'publisher', 'location', 'detail_descriptions', 'date_precision', HTML("""{% include "_date_precision_modal.html" %}"""), 'genre', HTML("""{% include "_genre_modal.html" %}"""), ButtonHolder( Submit('save_add_another', 'Save and add another', css_class='btn-save btn-danger'), Submit('save_and_continue_editing', 'Save and continue editing', css_class='btn-save btn-danger'), Submit('save', 'Save', css_class='btn-save btn-danger'), ) ) # do unsubscribe class Meta: model = Works # See note here: https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form fields = ('text', 'year', 'title', 'publisher', 'location', 'detail_descriptions', 'date_precision', 'genre',)
class Meta: model = StylizedPhoto fields = ('paint', 'based_photo') widgets = { 'paint': ModelSelect2Widget( model=Paint, queryset=Paint.objects.filter(is_approved=True), search_fields=['name__contains'], ), 'based_photo': ModelSelect2Widget(model=Photo, search_fields=['name__contains']), }
class Meta: model = GroupProfile fields = ['name', 'nickname', 'parent', 'superadmin'] widgets = { 'parent': ModelSelect2Widget(search_fields=[ 'name__icontains', ]), 'superadmin': ModelSelect2Widget(search_fields=[ 'username__icontains', ]) }
class Meta: model = AidRequest exclude = ["examination_dttm"] widgets = { 'applicant': ModelSelect2Widget(model=User, search_fields=['userprofile__student_info__fio__icontains', 'first_name', 'last_name'], attrs={'data-width': '30em'} ), 'author': ModelSelect2Widget(model=User, search_fields=['userprofile__student_info__fio__icontains', 'first_name', 'last_name'], attrs={'data-width': '30em'} ) }
class Meta: model = models.Album fields = ( 'artist', 'primary_genre', ) widgets = { 'artist': ModelSelect2Widget(model=models.Artist, search_fields=['title__icontains']), 'primary_genre': ModelSelect2Widget(model=models.Genre, search_fields=['title__icontains']), }
class Meta: model = PersonCollectionRelation fields = "__all__" widgets = { 'person': ModelSelect2Widget(model=Person, search_fields=[ 'short_name__icontains', 'surname__icontains', 'first_names__icontains' ]), 'role': ModelSelect2Widget(model=PersonCollectionRelationRole, search_fields=['name__icontains']) }
class DiffInstallerForm(forms.Form): installer_1 = forms.ChoiceField( widget=ModelSelect2Widget( model=models.Installer, search_fields=['slug__contains'] ) ) installer_2 = forms.ChoiceField( widget=ModelSelect2Widget( model=models.Installer, search_fields=['slug__contains'] ) )
class AgendarVacinacaoDataForm(forms.Form): data = forms.ChoiceField(label='Data de Vacinação', choices=[], widget=Select2Widget(attrs={'class': "form-control", "data-placeholder": "Selecione a data disponível"})) campanha = forms.ModelChoiceField(label='Campanha', queryset=Campanha.objects, required=False, widget=ModelSelect2Widget(model=Campanha, search_fields=['nome__icontains'], attrs={'class': "form-control", "data-minimum-input-length": "0", "data-placeholder": "Busque e selecione uma empresa"})) estabelecimento = forms.ModelChoiceField(label='Estabelecimento', queryset=Estabelecimento.objects, required=False, widget=ModelSelect2Widget(model=Estabelecimento, search_fields=['nome__icontains'], attrs={'class': "form-control", "data-minimum-input-length": "0", "data-placeholder": "Busque e selecione uma empresa"})) def __init__(self, *args, **kwargs): self.estabelecimento = kwargs.pop('estabelecimento', None) self.campanha = kwargs.pop('campanha', None) self.paciente = kwargs.pop('paciente', None) super(AgendarVacinacaoDataForm, self).__init__(*args,**kwargs) if self.estabelecimento: self.fields['estabelecimento'].initial = self.estabelecimento self.fields['estabelecimento'].disabled = True if self.campanha: self.fields['campanha'].initial = self.campanha self.fields['campanha'].disabled = True agendamentos = Agendamento.objects.filter(campanha=self.campanha, status=Agendamento.DISPONIVEL, estabelecimento=self.estabelecimento).order_by('data')\ .values_list('data', flat=True) if agendamentos: agendamentos = set(agendamentos) data_agendamento_choices = [] for dia in agendamentos: data_agendamento_choices.append((dia, dia.strftime('%d/%m/%Y'))) self.fields['data'].choices = set(data_agendamento_choices) @transaction.atomic def save(self): self.data = self.cleaned_data.get('data') agendamento = Agendamento.objects.filter(campanha=self.campanha, status=Agendamento.DISPONIVEL, estabelecimento=self.estabelecimento, data=self.data).order_by('pk').first() agendamento.paciente = self.paciente agendamento.status = Agendamento.OCUPADO agendamento.save()
def test_pagination(self, genres, client): url = reverse('django_select2-json') widget = ModelSelect2Widget(max_results=10, model=Genre, search_fields=['title__icontains']) widget.render('name', None) field_id = signing.dumps(id(widget)) response = client.get(url, {'field_id': field_id, 'term': ''}) assert response.status_code == 200 data = json.loads(response.content.decode('utf-8')) assert data['more'] is True response = client.get(url, { 'field_id': field_id, 'term': '', 'page': 1000 }) assert response.status_code == 404 response = client.get(url, { 'field_id': field_id, 'term': '', 'page': 'last' }) assert response.status_code == 200 data = json.loads(response.content.decode('utf-8')) assert data['more'] is False
class Meta: model = Course fields = [ 'id', 'course_code', 'name', 'materials', 'teachers', 'updated_associations', 'updated_teacher', 'calendar_year', 'coordinator', 'period', *(['study_year'] if course_id is None else []), ] widgets = { 'id': HiddenInput(), "materials": AddAnotherWidgetWrapper( ModelSelect2MultipleWidget( queryset=MSP.objects.all(), search_fields=[ "mspline__materials__name__icontains", "mspline__materials__book__ISBN__icontains", "mspline__materials__book__author__icontains", "mspline__materials__book__year_of_publishing__icontains", "mspline__materials__scientificarticle__DOI__icontains", "mspline__materials__scientificarticle__author__icontains", "mspline__materials__scientificarticle__year_of_publishing__icontains", ]), reverse_lazy('boecie:msp.create', kwargs={'course': course_id})) if course_id else MultipleHiddenInput(), 'teachers': AddAnotherWidgetWrapper( ModelSelect2MultipleWidget(model=Teacher, search_fields=[ 'titles__icontains', 'initials__icontains', 'first_name__icontains', 'surname_prefix__icontains', 'last_name__icontains', 'email__icontains' ]), reverse_lazy('boecie:teacher.create')), 'coordinator': AddAnotherWidgetWrapper( ModelSelect2Widget(model=Teacher, search_fields=[ 'titles__icontains', 'initials__icontains', 'first_name__icontains', 'surname_prefix__icontains', 'last_name__icontains', 'email__icontains' ]), reverse_lazy('boecie:teacher.create')), }
class GroupSlipAdminForm(forms.ModelForm): trainees = forms.ModelMultipleChoiceField( queryset=Trainee.objects.all(), label='Trainees', required=False, widget=TraineeSelect2MultipleInput, ) service_assignment = forms.ModelChoiceField( label='Service Assignment', queryset=Assignment.objects.all(), required=False, widget=ModelSelect2Widget( model=Assignment, search_fields=['service__name__icontains'], ), ) def __init__(self, *args, **kwargs): super(GroupSlipAdminForm, self).__init__(*args, **kwargs) self.fields['trainee'].widget.attrs['class'] = 'select-fk' self.fields['TA'].widget.attrs['class'] = 'select-fk' self.fields['TA_informed'].widget.attrs['class'] = 'select-fk' self.fields['finalized'].widget = DatetimePicker() self.fields['start'].widget = DatetimePicker() self.fields['end'].widget = DatetimePicker() class Meta: model = GroupSlip fields = "__all__"
class Meta(BaseForm.Meta): model = SynchronousFlow widgets = { 'subfunc_flow': ModelSelect2Widget(queryset=SubFuncFlow.objects.filter( status__in=('On going', 'Released')).all(), search_fields=['name__icontains', ]), 'servers': ModelSelect2MultipleWidget(queryset=Server.objects.none(), search_fields=['name__icontains', ]) }