def __init__(self, *args, **kwargs): super(Code.ComponentForm, self).__init__(*args, **kwargs) self.fields['description'].widget = Textarea(attrs={ 'cols': 50, 'rows': 5 }) self.fields['max_size'].widget = TextInput( attrs={'style': 'width:5em'}) self.fields['allowed'].widget = SelectMultiple(choices=CODE_TYPES, attrs={ 'style': 'width:40em', 'size': 15 }) self.initial['allowed'] = self._initial_allowed
class NoticeForm(forms.Form): """ """ title = forms.CharField(max_length=48, required=True, widget=forms.TextInput(attrs={'class':'form-control'}), help_text=_('Maximum 48 characters are allowed')) to = forms.ModelMultipleChoiceField(Group.objects.all(), required=True, widget=SelectMultiple(attrs={'class': 'form-control select', 'data-live-search': "true"}), help_text=_('Select groups who can see this notice.')) notice = forms.CharField(widget=forms.Textarea(attrs={'class':'summernote'}))
class NotificationForm(ModelForm): recipients = forms.ChoiceField(choices=(("contributors", "Contributors"), ("clients", "Clients"), ("custom", "Custom"))) recipient = forms.ModelMultipleChoiceField( models.SowarStockUser.objects.all(), label="Recipient (select multiple)", widget=SelectMultiple(attrs={'style': 'height:200%'})) class Meta: model = Notification fields = ["recipients", "recipient", "level", "verb"] labels = { 'verb': _('Message'), 'level': _('Type'), }
class Meta: model = Question fields = ("content", "parents", "items", "tags") widgets = { "content": Textarea( attrs={ "class": "input-block-level", "rows": 2, "placeholder": _("Ask something specific.") }), "items": SelectMultiple(attrs={"class": "input-block-level"}), "tags": TagWidget(attrs={"class": "input-block-level"}) }
class TeamUpdateForm(forms.ModelForm): name = forms.CharField(required=True, widget=TextInput(attrs={'class': 'form-control'})) description = forms.CharField( required=False, widget=TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Description' })) members = forms.ModelMultipleChoiceField( required=False, queryset=Account.objects.all(), widget=SelectMultiple(attrs={'class': 'form-control'})) class Meta: model = Team fields = ['name', 'description', 'members']
def get_form_field_instances(self, request=None, form_entry=None, form_element_entries=None, **kwargs): """Get form field instances.""" queryset = self.get_queryset() field_kwargs = { 'label': self.data.label, 'help_text': self.data.help_text, 'initial': self.data.initial, 'required': self.data.required, 'queryset': queryset, 'widget': SelectMultiple( attrs={'class': theme.form_element_html_class} ), } return [(self.data.name, ModelMultipleChoiceField, field_kwargs)]
def __init__(self, *args, **kwargs): user = kwargs.pop("user") super().__init__(*args, **kwargs) is_instance = "instance" in kwargs and kwargs["instance"] self.fields["authorized_users"].initial = ( get_user_model().objects.filter( visualisationuserpermission__visualisation=kwargs["instance"]) if is_instance else get_user_model().objects.none()) if not user.is_superuser and not user.has_perm( self.can_change_user_permission_codename): self.fields["user_access_type"].disabled = True self.fields["authorized_users"].disabled = True self.fields["authorized_users"].widget = SelectMultiple(choices=( (user.id, user.email) for user in self.fields["authorized_users"].queryset.all()))
class RoleCombinePreview(forms.Form): """ Django form to preview Role combinations. """ roles = forms.MultipleChoiceField( required=False, widget=SelectMultiple(attrs={ 'class': 'multiselect', 'style': 'height: auto;' })) error_css_class = 'error' required_css_class = 'required' def __init__(self, *args, **kwargs): super(RoleCombinePreview, self).__init__(*args, **kwargs) self.fields['roles'].choices = [(c.name, c.name) for c in get_item_names(Role, True)]
def get_form_field_instances(self, request=None): """ Get form field instances. """ choices = get_select_field_choices(self.data.choices) kwargs = { 'label': self.data.label, 'help_text': self.data.help_text, 'initial': self.data.initial, 'required': self.data.required, 'choices': choices, 'widget': SelectMultiple(attrs={'class': theme.form_element_html_class}), } if self.data.max_choices: kwargs['max_choices'] = self.data.max_choices return [(self.data.name, MultipleChoiceWithMaxField, kwargs)]
def get_form_field_instances(self, request=None, form_entry=None, form_element_entries=None, **kwargs): """Get form field instances.""" app_label, model_name = get_app_label_and_model_name(self.data.model) model = apps.get_model(app_label, model_name) queryset = model._default_manager.all() field_kwargs = { 'label': self.data.label, 'help_text': self.data.help_text, 'initial': self.data.initial, 'required': self.data.required, 'queryset': queryset, 'widget': SelectMultiple( attrs={'class': theme.form_element_html_class} ), } return [(self.data.name, TreeNodeMultipleChoiceField, field_kwargs)]
class ReportForm(forms.Form): from_date = forms.DateField(required=True) to_date = forms.DateField(required=True) regions = forms.ModelMultipleChoiceField( queryset=Region.objects.all(), required=False, widget=SelectMultiple(attrs={"class": "hidden"})) def __init__(self, *args, **kwargs): super(ReportForm, self).__init__(*args, **kwargs) today = datetime.today() if today.month < 7: self.fields['from_date'].initial = date(today.year - 1, 7, 1) self.fields['to_date'].initial = date(today.year, 6, 30) else: self.fields['from_date'].initial = date(today.year, 7, 1) self.fields['to_date'].initial = date(today.year + 1, 6, 30)
class CSVOptions(forms.Form): _selected_action = forms.CharField(widget=forms.MultipleHiddenInput) header = forms.BooleanField(required=False) delimiter = forms.ChoiceField(choices=zip(delimiters, delimiters)) quotechar = forms.ChoiceField(choices=zip(quotes, quotes)) quoting = forms.ChoiceField(choices=((csv.QUOTE_ALL, 'All'), (csv.QUOTE_MINIMAL, 'Minimal'), (csv.QUOTE_NONE, 'None'), (csv.QUOTE_NONNUMERIC, 'Non Numeric'))) escapechar = forms.ChoiceField(choices=(('', ''), ('\\', '\\')), required=False) datetime_format = forms.CharField( initial=formats.get_format('DATETIME_FORMAT')) date_format = forms.CharField(initial=formats.get_format('DATE_FORMAT')) time_format = forms.CharField(initial=formats.get_format('TIME_FORMAT')) columns = forms.MultipleChoiceField(widget=SelectMultiple( attrs={'size': 20}))
class RoleSourceEdit(forms.Form): """ Django form to edit sources for a Role. """ sources = forms.MultipleChoiceField( required=False, widget=SelectMultiple(attrs={ 'class': 'multiselect', 'style': 'height: auto;' })) error_css_class = 'error' required_css_class = 'required' def __init__(self, *args, **kwargs): super(RoleSourceEdit, self).__init__(*args, **kwargs) self.fields['sources'].choices = [ (c.name, c.name) for c in get_source_names(False, False, None) ]
class MirrorlistForm(forms.Form): country = forms.MultipleChoiceField( required=False, widget=SelectMultiple(attrs={'size': '12'})) protocol = forms.MultipleChoiceField(required=False, widget=CheckboxSelectMultiple) ip_version = forms.MultipleChoiceField(required=False, label="IP version", choices=(('4', 'IPv4'), ('6', 'IPv6')), widget=CheckboxSelectMultiple) use_mirror_status = forms.BooleanField(required=False) def __init__(self, *args, **kwargs): super(MirrorlistForm, self).__init__(*args, **kwargs) fields = self.fields fields['country'].choices = [('all', 'All')] + self.get_countries() fields['country'].initial = ['all'] protos = [(p.protocol, p.protocol) for p in MirrorProtocol.objects.filter(is_download=True)] initial = MirrorProtocol.objects.filter(is_download=True, default=True) fields['protocol'].choices = protos fields['protocol'].initial = [p.protocol for p in initial] fields['ip_version'].initial = ['4'] def get_countries(self): country_codes = set() country_codes.update( MirrorUrl.objects.filter(active=True, mirror__active=True).exclude( country='').values_list('country', flat=True).order_by().distinct()) code_list = [(code, countries.name(code)) for code in country_codes] return sorted(code_list, key=itemgetter(1)) def as_div(self): "Returns this form rendered as HTML <divs>s." return self._html_output( normal_row= u'<div%(html_class_attr)s>%(label)s %(field)s%(help_text)s</div>', error_row=u'%s', row_ender='</div>', help_text_html=u' <span class="helptext">%s</span>', errors_on_separate_row=True)
def get(self, request, *args, **kwargs): self._validate_args(request, *args) tags = Tag.objects.all().values_list('id', 'tag') tags_list = SelectMultiple(choices=tags) voter_opts = Voter._meta tag_field = voter_opts.many_to_many[0] model_admin = site._registry[Voter] admin_tags_list = RelatedFieldWidgetWrapper(tags_list, tag_field.remote_field, site, True, False, False) media = model_admin.media kwargs['media'] = media kwargs['tags_related'] = admin_tags_list.render('tags', None, attrs={ 'id': 'id_tags', }) return super().get(request, *args, **kwargs)
class Meta: model = EDM fields = ('title', 'cover_image', 'cover_hype_link', 'cover_description', 'selection_articles', 'publish_time') widgets = { 'publish_time': DateTimeInput(attrs={'class': 'form-control'}), 'cover_description': Textarea(attrs={'class': 'form-control'}), 'selection_articles': SelectMultiple(attrs={'class': 'chosen-select'}), 'title': TextInput(attrs={'class': 'form-control'}), 'cover_hype_link': URLInput(attrs={'class': 'form-control'}) } labels = { 'title': _('title'), 'cover_image': _('cover image'), 'cover_hype_link': _('cover hype link'), 'cover_description': _('cover description'), 'selection_articles': _('selection articles'), 'publish_time': _('publish time') }
class Meta: model = Profile exclude = [ 'id', 'creator', 'updater', 'date_added', 'date_updated', 'user', 'current_shop', 'is_deleted' ] widgets = { 'user_type': Select( attrs={ 'placeholder': 'Select User Type', 'class': 'required form-control' }), 'shops': SelectMultiple(attrs={ 'placeholder': 'Select Shops', 'class': 'form-control' }), 'tax_only': CheckboxInput() }
class CSVOptions(forms.Form): _selected_action = forms.CharField(widget=forms.MultipleHiddenInput) select_across = forms.BooleanField(label='', required=False, initial=0, widget=forms.HiddenInput({'class': 'select-across'})) action = forms.CharField(label='', required=True, initial='', widget=forms.HiddenInput()) header = forms.BooleanField(label=_('Header'), required=False) delimiter = forms.ChoiceField(label=_('Delimiter'), choices=list(zip(delimiters, delimiters)), initial=',') quotechar = forms.ChoiceField(label=_('Quotechar'), choices=list(zip(quotes, quotes)), initial="'") quoting = forms.ChoiceField( label=_('Quoting'), choices=((csv.QUOTE_ALL, _('All')), (csv.QUOTE_MINIMAL, _('Minimal')), (csv.QUOTE_NONE, _('None')), (csv.QUOTE_NONNUMERIC, _('Non Numeric'))), initial=csv.QUOTE_ALL) escapechar = forms.ChoiceField(label=_('Escapechar'), choices=(('', ''), ('\\', '\\')), required=False) datetime_format = forms.CharField(label=_('Datetime format'), initial=formats.get_format('DATETIME_FORMAT')) date_format = forms.CharField(label=_('Date format'), initial=formats.get_format('DATE_FORMAT')) time_format = forms.CharField(label=_('Time format'), initial=formats.get_format('TIME_FORMAT')) columns = forms.MultipleChoiceField(label=_('Columns'), widget=SelectMultiple(attrs={'size': 20}))
class XLSOptions(forms.Form): _selected_action = forms.CharField(widget=forms.MultipleHiddenInput) select_across = forms.BooleanField(label='', required=False, initial=0, widget=forms.HiddenInput({'class': 'select-across'})) action = forms.CharField(label='', required=True, initial='', widget=forms.HiddenInput()) header = forms.BooleanField(label=_('Header'), required=False) use_display = forms.BooleanField(label=_('Use display'), required=False) # delimiter = forms.ChoiceField(choices=zip(delimiters, delimiters), initial=',') # quotechar = forms.ChoiceField(choices=zip(quotes, quotes), initial="'") # quoting = forms.ChoiceField( # choices=((csv.QUOTE_ALL, 'All'), # (csv.QUOTE_MINIMAL, 'Minimal'), # (csv.QUOTE_NONE, 'None'), # (csv.QUOTE_NONNUMERIC, 'Non Numeric')), initial=csv.QUOTE_ALL) # # escapechar = forms.ChoiceField(choices=(('', ''), ('\\', '\\')), required=False) # datetime_format = forms.CharField(initial=formats.get_format('DATETIME_FORMAT')) # date_format = forms.CharField(initial=formats.get_format('DATE_FORMAT')) # time_format = forms.CharField(initial=formats.get_format('TIME_FORMAT')) columns = forms.MultipleChoiceField(label=_('Columns'), widget=SelectMultiple(attrs={'size': 20}))
class NewHostForm(forms.ModelForm): name = forms.CharField(widget=TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Host name', 'autofocus': 'true' })) description = forms.CharField( required=False, widget=TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Description' })) ip = forms.GenericIPAddressField(widget=TextInput( attrs={ 'class': 'form-control', 'placeholder': 'IP' })) environment = forms.ModelChoiceField( queryset=Environment.objects.all(), widget=Select(attrs={'class': 'form-control'})) groups = forms.ModelMultipleChoiceField( required=False, queryset=Hostgroup.objects.all(), widget=SelectMultiple(attrs={'class': 'form-control'}), help_text='Select multiple groups') class Meta: model = Host fields = ['name', 'description', 'ip', 'environment', 'groups'] def clean_ip(self): ip = self.cleaned_data['ip'] if Host.objects.filter(ip=ip, ip__iexact=ip).exists(): host = Host.objects.get(ip=ip) raise ValidationError( mark_safe(( 'Host {0} with that ip already exists, click <a href="{0}">here</a>' ).format(host))) return ip
class SourceAccessForm(forms.Form): """ Django form for updating a user's profile and source access. """ error_css_class = 'error' required_css_class = 'required' username = forms.CharField(widget=forms.TextInput(attrs={'size': '50'}), required=True) first_name = forms.CharField(widget=forms.TextInput(attrs={'size': '50'}), required=True) last_name = forms.CharField(widget=forms.TextInput(attrs={'size': '50'}), required=True) email = forms.CharField(widget=forms.TextInput(attrs={'size': '50'}), required=True) sources = forms.MultipleChoiceField(required=True, widget=SelectMultiple(attrs={'class':'multiselect', 'style': 'height: auto;'})) organization = forms.ChoiceField(required=True, widget=forms.Select) role = forms.ChoiceField(required=True, widget=forms.Select) password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'textbox'}), required=False) totp = forms.BooleanField(initial=False, required=False) secret = forms.CharField(widget=forms.TextInput(attrs={'size': '50'}), required=False) subscriptions = forms.CharField(required=False, widget=forms.HiddenInput()) def __init__(self, *args, **kwargs): super(SourceAccessForm, self).__init__(*args, **kwargs) self.fields['sources'].choices = [(c.name, c.name) for c in get_source_names(False, False, None)] self.fields['role'].choices = [(c.name, c.name) for c in get_item_names(UserRole, True)] self.fields['organization'].choices = [(c.name, c.name) for c in get_source_names(True, False, None)]
class HostUpdateForm(forms.ModelForm): name = forms.CharField(required=True, widget=TextInput(attrs={'class': 'form-control'})) description = forms.CharField( required=False, widget=TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Description' })) ip = forms.GenericIPAddressField( required=True, widget=TextInput(attrs={'class': 'form-control'})) environment = forms.ModelChoiceField( queryset=Environment.objects.all(), widget=Select(attrs={'class': 'form-control'})) groups = forms.ModelMultipleChoiceField( required=False, queryset=Hostgroup.objects.all(), widget=SelectMultiple(attrs={'class': 'form-control'})) class Meta: model = Host fields = ['name', 'description', 'ip', 'environment', 'groups']
class SendTasksForm(forms.Form): project = SelectProjectField(Project.objects.all().order_by("name"), empty_label=None, help_text=help_select_project) topics = SelectTopicsField( Topic.objects.filter(parent=None).order_by("name"), help_text=help_select_topics, widget=SelectMultiple(attrs={"size": 11})) starting_article_id = forms.IntegerField(min_value=0) ending_article_id = forms.IntegerField(min_value=0) add_nlp_hints = forms.BooleanField(required=False, label="Begin NLP processing", help_text=help_with_nlp) debug_presenter = forms.BooleanField(required=False, initial=False, widget=HiddenInput) debug_server = forms.CharField(required=False, label="Debug presenter flag active", max_length=200, initial="http://localhost:3001", help_text=help_with_debug_server, widget=TextInput(attrs={"size": 40}))
def __init__(self, *args, **kwargs): # Формируем список возможных значений queryset = Terms.objects.filter(vocabulary=self.admin_field.vocabulary) if self.admin_field.lang_depended: queryset = queryset.filter(language=self.language) # Определяем язык language = self.admin_field.lang_depended and self.language or '' # Обращаемся к обработчику по-умолчанию super().__init__(*args, **kwargs) old_widget = self.fields['terms'].widget if self.admin_field.multiple: # Если поле множественного выбора widget = SelectMultiple(old_widget.widget.attrs, queryset) widget_wrapped = SCMSRelatedFieldWidgetWrapper( widget, old_widget.rel, old_widget.admin_site, self.admin_field.vocabulary, language) self.fields['terms'] = ModelMultipleChoiceField( queryset, required=False, widget=widget_wrapped) else: # Если поле одиночного выбора widget = Select(old_widget.widget.attrs, queryset) widget_wrapped = SCMSRelatedFieldWidgetWrapper( widget, old_widget.rel, old_widget.admin_site, self.admin_field.vocabulary, language) self.fields['terms'] = ModelChoiceField(queryset, required=False, widget=widget_wrapped) try: # Определяем значение по умолчанию -- первое в списке значений initial = instance.terms.get_queryset()[0].id except: initial = None self.initial['terms'] = initial self.fields['terms'].initial = initial pass
class Meta: model = Article fields = [ 'title', 'overview', 'content', 'author', 'thumbnail', 'categories', ] widgets = { 'title': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter article title', }), 'overview': forms.Textarea(attrs={ 'class': 'form-control', 'placeholder': 'Enter article overview', }), 'author': forms.HiddenInput(attrs={ 'class': 'form-control', }), 'categories': SelectMultiple(attrs={ 'class': 'form-control', 'data-height': '100%', }), 'thumbnail': FileInput(attrs={ 'class': 'form-control', }), }
def get_form_field_instances(self): """ Get form field instances. """ app_label, model_name = self.data.model.split('.') model = models.get_model(app_label, model_name) queryset = model._default_manager.all() kwargs = { 'label': self.data.label, 'help_text': self.data.help_text, 'initial': self.data.initial, 'required': self.data.required, 'queryset': queryset, 'widget': SelectMultiple(attrs={'class': theme.form_element_html_class}), } return [(self.data.name, ModelChoiceField, kwargs)]
class SolicitacaoPassagemRotaForm(forms.Form): tipo = forms.ChoiceField(choices=TIPO_CHOICE) origem = forms.ModelChoiceField(queryset=Aeroporto.objects.all(), required=False) destino = forms.ModelChoiceField(queryset=Aeroporto.objects.all(), required=False) data_ida = forms.DateField(required=False) data_volta = forms.DateField(required=False) passageiros = forms.ModelMultipleChoiceField( queryset=Passageiro.objects.all(), widget=SelectMultiple(), required=False) def __init__(self, *args, **kwargs): self.orgao = kwargs.pop('orgao') super(SolicitacaoPassagemRotaForm, self).__init__(*args, **kwargs) self.fields['tipo'].widget.attrs['class'] = 'form-control tipo' self.fields['origem'].widget.attrs[ 'class'] = 'form-control chosen-select ' self.fields['destino'].widget.attrs[ 'class'] = 'form-control chosen-select' self.fields['data_ida'].widget.attrs[ 'class'] = 'form-control data_ida date-picker' self.fields['data_volta'].widget.attrs[ 'class'] = 'form-control data_volta date-picker' self.fields['passageiros'].widget.attrs[ 'class'] = 'form-control chosen-select multiple' # verificação para saber se o campo justificativa da urgência deve ser preenchido ou não (considerando somente dias úteis "seg a sex") def clean(self, **kwargs): cleaned_data = super(SolicitacaoPassagemRotaForm, self).clean() tipo = cleaned_data.get('tipo') origem = cleaned_data.get('origem') destino = cleaned_data.get('destino') passageiros = cleaned_data.get('passageiros') data_ida = cleaned_data.get('data_ida') data_volta = cleaned_data.get('data_volta') cota_quantidade = verifica_quantidade_cota(self.orgao) rota_ida = Rota.objects.filter(origem=origem, destino=destino) rota_volta = Rota.objects.filter(origem=destino, destino=origem) if not origem: self._errors['origem'] = self.error_class(['Campo obrigatório']) if not destino: self._errors['destino'] = self.error_class(['Campo obrigatório']) if not passageiros: self._errors['passageiros'] = self.error_class( ['Campo obrigatório']) if tipo == 'IV' and not data_volta: self._errors['data_volta'] = self.error_class( ['Campo obrigatório']) if tipo == 'I' and origem and destino and not rota_ida: self.add_error(None, ' #Rota de ida inexistente.') if tipo == 'IV' and origem and destino and not rota_ida: self.add_error(None, ' #Rota de ida inexistente.') if tipo == 'IV' and origem and destino and not rota_volta: self.add_error(None, ' #Rota de volta inexistente.') if passageiros and tipo == 'I' and cota_quantidade < len(passageiros): self.add_error( None, ' #Você não tem mais cota para solicitar passagem! Entre em contato com a Gestão de Passagens Aéreas da AMGESP.' ) if passageiros and tipo == "IV" and cota_quantidade < len( passageiros) * 2: self.add_error( None, ' #Você não tem mais cota para solicitar passagem! Entre em contato com a Gestão de Passagens Aéreas da AMGESP.' ) if tipo == "IV" and data_volta and data_ida > data_volta: self.add_error( None, ' #A data de ida informada é maior que a data de volta.') if data_ida and data_ida < date.today(): self.add_error( None, ' #A data de ida informada é menor que a data atual.') return cleaned_data
def render(self, name, value, attrs=None, choices=()): return SelectMultiple.render(self, name, value, attrs, choices)
def value_from_datadict(self, data, files, name): return SelectMultiple.value_from_datadict(self, data, files, name)
def _has_changed(self, initial, data): return SelectMultiple._has_changed(initial, data)
UNKNOWN_REQUIREMENT_STATUS = 1 # it's unknown status. Check init.json fixture OWNER_STATUS_PERMISSION = 'panopticum.change_owner_status' SIGNEE_STATUS_PERMISSION = 'panopticum.change_signee_status' formfields_large = { models.ForeignKey: { 'widget': Select(attrs={ 'width': '300px', 'style': 'width:300px' }) }, models.ManyToManyField: { 'widget': SelectMultiple(attrs={ 'size': '7', 'width': '300px', 'style': 'width:300px' }) }, models.IntegerField: { 'widget': NumberInput(attrs={ 'width': '300px', 'style': 'width:300px' }) }, models.CharField: { 'widget': TextInput(attrs={ 'width': '300px', 'style': 'width:300px' }) },
from django.utils.translation import gettext_lazy as _ import django.core.exceptions from django.contrib.auth.models import AnonymousUser # Register your models here. import panopticum.fields from panopticum.models import * SIGNEE_STATUS_TYPE = 2 # Requirement status type with name = "approver person". Check init.json OWNER_STATUS_TYPE = 1 UNKNOWN_REQUIREMENT_STATUS = 1 # it's unknown status. Check init.json fixture OWNER_STATUS_PERMISSION = 'panopticum.change_owner_status' SIGNEE_STATUS_PERMISSION = 'panopticum.change_signee_status' formfields_large = {models.ForeignKey: {'widget': Select(attrs={'width': '300px', 'style': 'width:300px'})}, models.ManyToManyField: {'widget': SelectMultiple(attrs={'size': '7', 'width': '300px', 'style': 'width:300px'})}, models.IntegerField: {'widget': NumberInput(attrs={'width': '300px', 'style': 'width:300px'})}, models.CharField: {'widget': TextInput(attrs={'width': '300px', 'style': 'width:300px'})}, models.URLField: {'widget': TextInput(attrs={'width': '300px', 'style': 'width:300px'})}, models.TextField: {'widget': Textarea(attrs={'rows': 2, 'cols': 60})}, } formfields_small = {models.ForeignKey: {'widget': Select(attrs={'width': '150px', 'style': 'width:150px'})}, models.ManyToManyField: {'widget': SelectMultiple(attrs={'size': '3', 'width': '150px', 'style': 'width:150px'})}, models.IntegerField: {'widget': NumberInput(attrs={'width': '150px', 'style': 'width:150px'})}, models.CharField: {'widget': TextInput(attrs={'width': '150px', 'style': 'width:150px'})}, models.URLField: {'widget': TextInput(attrs={'width': '150px', 'style': 'width:150px'})}, models.TextField: {'widget': Textarea(attrs={'rows': 2, 'cols': 30})}, }
class Meta: model = Oportunidad fields = ('titulo', 'carga_horaria', 'remuneracion', 'remuneracion_min', 'remuneracion_max', 'ciudad', 'pais', 'distrito', 'fecha_cese', 'resumen', 'edad_desde', 'edad_hasta', 'genero', 'carga_horaria', 'tipo_puesto', 'estado', 'estado_oportunidad', 'grado_estudio', 'idioma', 'conocimiento', 'carrera', 'direccion_map', 'longitud', 'latitud', 'tipo_carrera', 'rama_carrera', 'area_experiencia', 'tiempo_experiencia', 'numero_vacantes', 'beneficio', 'nivel_academico') widgets = { 'titulo': TextInput( attrs={ 'placeholder': 'Escriba el título de su vacante', 'class': 'form-control' }), 'carga_horaria': RadioSelect(attrs={'class': 'form-check-input'}), 'tipo_puesto': RadioSelect(attrs={ 'class': 'form-check-input', 'required': 'required' }), 'remuneracion': RadioSelect(attrs={'class': 'form-check-input'}), 'resumen': Textarea(attrs={ 'class': 'form-control', 'required': 'required' }), 'remuneracion_min': TextInput(attrs={ 'placeholder': 'Valor mínimo', 'class': 'form-control' }), 'remuneracion_max': TextInput(attrs={ 'placeholder': 'Valor máximo', 'class': 'form-control' }), 'fecha_cese': Input(attrs={ 'type': 'date', 'class': 'form-control' }), 'direccion_map': TextInput(attrs={ 'placeholder': 'Dirección', 'class': 'form-control' }), 'distrito': Select(attrs={'class': 'form-control'}), 'pais': Select(attrs={'class': 'form-control'}), 'ciudad': Select(attrs={'class': 'form-control'}), 'rama_carrera': SelectMultiple( attrs={ 'class': 'select2 m-b-10 select2-multiple', 'style': 'width:100%;', 'multiple': 'multiple', 'required': 'required', 'data-placeholder': 'Seleccione una o más opciones' }), 'idioma': SelectMultiple( attrs={ 'class': 'select2 m-b-10 select2-multiple', 'style': 'width:100%;', 'multiple': 'multiple', 'data-placeholder': 'Seleccione una o más opciones' }), 'grado_estudio': CheckboxSelectMultiple(attrs={ 'class': 'form-check-input', 'required': 'required' }), 'nivel_academico': CheckboxSelectMultiple(attrs={'class': 'form-control'}), 'conocimiento': SelectMultiple( attrs={ 'class': 'select2 m-b-10 select2-multiple', 'style': 'width:100%;', 'multiple': 'multiple', 'data-placeholder': 'Seleccione una o más opciones' }), 'estado_oportunidad': Select(attrs={ 'class': 'form-control', 'disabled': 'disabled' }), 'edad_desde': TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Desde', 'type': 'number' }), 'edad_hasta': TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Hasta', 'type': 'number' }), 'numero_vacantes': TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Número de vacantes', 'type': 'number', 'value': '0' }), 'genero': Select(attrs={'class': 'form-control'}), 'division': Select(attrs={'class': 'form-control'}), 'area_experiencia': Select(attrs={'class': 'form-control'}), 'tiempo_experiencia': Select(attrs={'class': 'form-control'}), 'beneficio': CheckboxSelectMultiple(attrs={'class': 'form-check-input'}), }