class FormResource(AjaxModelForm): description = forms.CharField(widget=MarkItUpWidget()) kind = forms.CharField(required=False, widget=AutocompleteWithFavorites( ResourceKind, '/resource/search_by_kind/', ResourceKind.favorites(number=10), can_add=True)) contact = forms.CharField(required=False, widget=MarkItUpWidget()) tags = forms.Field(required=False, widget=TaggitWidget( autocomplete_url="/resource/search_tags/")) community = AutoCompleteSelectMultipleField('community', help_text='', required=False) files = FileuploadField(required=False) class Meta: model = Resource fields = ('name', 'description', 'kind', 'contact', 'tags', 'community', 'id', 'files') _field_labels = { 'name': _('Name'), 'description': _('Description'), 'kind': _('Kind'), 'contact': _('Contact'), 'tags': _('Tags'), 'community': _('Community'), 'files': _('Images'), } def __init__(self, *args, **kwargs): self.helper = MooHelper(form_id='form_resource') r = super(FormResource, self).__init__(*args, **kwargs) self.fields['name'].initial = '' return r @notify_on_update def save(self, *args, **kwargs): resource = super(FormResource, self).save(*args, **kwargs) UploadedFile.bind_files( self.cleaned_data.get('files', '').split('|'), resource) return resource def clean_kind(self): field_data = self.cleaned_data['kind'] model = ResourceKind can_add = self.fields['kind'].widget.can_add try: if not field_data or field_data == 'None': if can_add and self.data.get('kind_autocomplete', ''): new_kind = model(name=self.data['kind_autocomplete']) new_kind.save() return new_kind else: return model() else: return model.objects.get(pk=field_data) except: raise forms.ValidationError(_('invalid field data'))
class SignUpForm(forms.Form): username = forms.CharField(label="Email", widget=forms.EmailInput(attrs={ 'id': 'user_email', 'class': 'form-control' })) password = forms.Field(label="Password", widget=forms.PasswordInput(attrs={ 'class': 'form-control', })) password2 = forms.Field(label="Confirm Password", widget=forms.PasswordInput(attrs={ 'class': 'form-control', })) def clean_username(self): new_email = self.cleaned_data.get("username") emails = User.objects.filter(email=new_email) if emails.exists(): raise forms.ValidationError("Email is taken") return new_email def clean_password(self): password = self.cleaned_data.get("password") password2 = self.cleaned_data.get("password2") return password def clean(self): error_messages = [ 'Your passwords must match.', 'Your password must have 8 characters at least', "Your password can't have all numbers" ] data = self.cleaned_data password = self.cleaned_data.get("password") password2 = self.cleaned_data.get("password2") password_valid = password == password2 and len(password) > 7 and ( not str(password).isdigit()) if not password_valid: raise forms.ValidationError(error_messages) return data
class BeamsForm(forms.ModelForm): pair = forms.CharField(label='Pair', widget=forms.TextInput( attrs={ 'class': 'form-control input-lg', 'name': 'title', 'type': 'text', 'id': 'title', 'placeholder': 'Title' })) tags = TagField(label_suffix=mark_safe( '<br/><small style="">Add Comma separated tags here</small>'), widget=TagWidget(attrs={ 'class': 'form-control input-lg', 'placeholder': 'Tags' }), required=False) entry = forms.Field(label='Entry', widget=forms.Textarea(attrs={ 'style': 'width:100%;', 'rows': '3' })) targets = forms.Field(label='Targets', widget=forms.Textarea(attrs={ 'style': 'width:100%;', 'rows': '3' })) stop_loss = forms.Field(label='Stop Loss', widget=forms.Textarea(attrs={ 'style': 'width:100%;', 'rows': '3' })) exchange = forms.CharField(label='Exchange', widget=forms.Select(choices=EXCHANGE_NAMES)) color_class = forms.CharField(label='Beam Color', widget=forms.Select(choices=BEAMS_COLORS)) class Meta: model = Beam fields = ('pair', 'tags', 'entry', 'targets', 'stop_loss', 'exchange', 'color_class')
class VersionForm(forms.ModelForm): uuid = forms.UUIDField(disabled=True, required=False) timestamp = forms.DateTimeField(disabled=True, required=False) file_checksum = forms.Field(disabled=True, required=False) name = forms.CharField(max_length=50) creator = forms.IntegerField(disabled=True, min_value=0, required=False) class Meta: model = Version exclude = ['id', 'versioned_object', 'object_id', 'content_type']
class FormPost(forms.ModelForm): """ Formulario de Cadastro de Post""" class Meta: model = Post fields = ( 'titulo', 'texto', ) texto = forms.Field( widget=forms.Textarea(attrs={'style': 'height:200px;'}), required=True)
class GenerateForm(forms.Form): region = forms.ChoiceField(required=True, choices=REGIONS) seed = forms.Field(required=False) mode = forms.ChoiceField(required=True, choices=MODES) debug_mode = forms.BooleanField(required=False, initial=False) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for flag in FLAGS: self.fields[flag[0]] = forms.BooleanField(required=False, initial=False)
class AppleStoreVerifyReceipt(forms.Form): receipt_data = forms.Field() response_data = None def clean(self): data = app_store_verify_receipt(self.cleaned_data['receipt_data']) if not data or 'receipt' not in data: log.error('app store verify receipt returned:\n%s\n for:\n%s' % (data, self.cleaned_data['receipt_data'])) raise forms.ValidationError('apple verify receipt does not return correct data') self.response_data = data return self.cleaned_data
class EditItemsForm(ActiveProjectFilesForm): """ Abstract form for manipulating existing files/directories. """ items = forms.Field(required=False) def clean_items(self): items = self.data.getlist('items') for item in items: validators.validate_oldfilename(item) return items
class SpecsUpdateForm(forms.ModelForm): endpoint = forms.Field() class Meta: model = m.Profile fields = [ 'endpoint', 'async_func', 'async_result_url', 'async_result_time_delay', 'json_spec' ] labels = { 'async_func': 'Async', 'async_result_time_delay': '', 'async_result_url': '' } def clean_json_spec(self): async_func = self.cleaned_data['async_func'] json_spec = self.cleaned_data['json_spec'] print(async_func) try: # print(json_spec) json_spec_check = json.loads( json_spec.replace('\r', '').replace('\t', '').replace('\n', '')) for pack in json_spec_check: if (async_func): self.validator(pack, 4) else: self.validator(pack, 3) # print(json_spec_check) except json.decoder.JSONDecodeError: raise forms.ValidationError( '''Please enter a valid jason object list using " as quotations for keys and values and ' inside request and respond packets where quotes are needed''' ) return json_spec def is_int(self, s): check = False try: int(s) check = True return check except (TypeError, ValueError): return check def validator(self, pack, length): if len(pack) != length: raise forms.ValidationError( f'''Please make sure each list inside the jason object contains {length} elements.''' ) if not self.is_int(pack[2]): raise forms.ValidationError( 'Please specify a valid response status code')
class CommentForm(forms.ModelForm): user_name = forms.CharField(label=u'Nome') user_email = forms.EmailField(label=u'E-mail') comment = forms.Field(label=u'Comentário', widget=forms.Textarea) captcha = CaptchaField() class Meta: model = Comment fields = ('user_name', 'user_email', 'comment', 'submit_date') exclude = "submit_date",
class SurveyChoiceForm(forms.Form): """ Choose how to proceed with a survey """ survey_id = forms.Field(widget=forms.HiddenInput) proceed_choice = forms.ChoiceField( widget=RadioSelect, choices=_SURVEY_CHOICES, label=_('Would you like to participate?'), initial='now') as_div = as_div
class ChangeUserPasswordForm(forms.Form): password1 = forms.Field(label='New Password', widget=forms.PasswordInput) password2 = forms.Field(label='Password confirmation', widget=forms.PasswordInput) current_password = forms.Field(label='Old Password', widget=forms.PasswordInput) def __init__(self, *args, **kwargs): self.user = kwargs.pop('user', None) super(ChangeUserPasswordForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super().clean() if ('password1' not in cleaned_data) or ('password2' not in cleaned_data) \ or cleaned_data['password1'] != cleaned_data['password2']: raise forms.ValidationError("Podane hasła nie są takie same!") if ('current_password' not in cleaned_data) or not self.user.check_password( cleaned_data['current_password'] ): raise forms.ValidationError("Podane hasło jest błędne!") return cleaned_data
class UploadForm(forms.Form): file = forms.FileField(label='File:') # 由于文件不能单独上传,设置一个隐藏字段帮助正确识别文件字段 assist = forms.Field(label='', widget=forms.HiddenInput, required=False) def clean_file(self): file = self.cleaned_data.get('file') ext = file.name.split('.')[-1].lower() if ext not in 'txt': raise forms.ValidationError('file must not none') return file
class ResultsForm(forms.ModelForm): endpoint = forms.Field(required=False, disabled="disabled", label="") result = forms.CharField(required=False, disabled="disabled", widget=forms.Textarea, label="") class Meta: model = m.Profile fields = ['endpoint', 'result'] labels = {'endpoint': '', 'result': ''}
class EnterpriseCustomerCatalogAdminForm(forms.ModelForm): """ form for EnterpriseCustomerCatalogAdmin class. """ class Meta: model = EnterpriseCustomerCatalog fields = "__all__" preview_button = forms.Field( required=False, label='Actions', widget=SubmitInput(attrs={'value': _('Preview')}), help_text=_( "Hold Ctrl when clicking on button to open Preview in new tab")) @staticmethod def get_enterprise_customer_catalog_preview_button(post_data): # pylint: disable=invalid-name """ Return name of the preview button clicked by user from POST data. e.g: 'enterprise_customer_catalogs-0-preview_button' """ catalog_preview_button = re.compile( r'enterprise_customer_catalogs-\d+-preview_button') for key, _ in post_data.items(): if catalog_preview_button.match(key): return key return None @classmethod def get_clicked_preview_content_filter(cls, post_data): """ Return content_filter for the EnterpriseCustomerCatalog against preview button clicked. """ catalog_preview_button = cls.get_enterprise_customer_catalog_preview_button( post_data) if not catalog_preview_button: return None content_filter_key = catalog_preview_button.replace( 'preview_button', 'content_filter') enterprise_catalog_query_key = catalog_preview_button.replace( 'preview_button', 'enterprise_catalog_query') enterprise_catalog_query_id = post_data.get( enterprise_catalog_query_key) if enterprise_catalog_query_id: content_filter = EnterpriseCatalogQuery.objects.filter( id=enterprise_catalog_query_id).first().content_filter content_filter = json.dumps(content_filter) else: content_filter = post_data.get(content_filter_key) if not content_filter: return None return json.loads(content_filter)
class CompanyBankConfigForm(forms.Form): choices = ((True, 'SÍ'), (False, 'NO')) bank_code = forms.ChoiceField(label="Seleccionar banco") agreement = forms.Field(widget=forms.NumberInput(attrs={'min': 0}), label="Número de convenio") cashinAvailable = forms.ChoiceField(choices=choices, label="Habilitar cashin automático") maxAcceptedRate = forms.Field(widget=forms.NumberInput(attrs={ 'step': 0.01, 'min': 0 }), label="Tasa máxima de aceptación de cashin", required=False) validationAmountActive = forms.ChoiceField( choices=choices, label="Validacion de montos maximos") cashoutAvailable = forms.ChoiceField(choices=choices, label="Desembolso Automatico") cashoutMaxAmountByDay = forms.Field( widget=forms.NumberInput(attrs={'min': 0}), label="Monto máximo de desembolsos por día", required=False) refundAvailable = forms.ChoiceField(choices=choices, label="Devolucion automática") refundMaxAmountByDay = forms.Field( widget=forms.NumberInput(attrs={'min': 0}), label="Monto máximo de devoluciones por día", required=False) company_code = forms.Field(widget=forms.HiddenInput) def __init__(self, *args, **kwargs): super(CompanyBankConfigForm, self).__init__(*args, **kwargs) core_middleware_client = CoreMiddlewareClient() self.fields['bank_code'].choices = [ (banks.get("code"), banks.get("name")) for banks in core_middleware_client.banks().json() ] self.helper = FormHelper() self.helper.form_method = 'POST' self.helper.form_class = 'form-horizontal' self.helper.form_action = 'company_bank_config_send' self.helper.add_input(Submit('submit', 'Guardar'))
class NeedForm(AjaxModelForm): class Meta: model = Need fields = need_form_fields _field_labels = need_form_field_labels class Media: js = ('lib/jquery.imagetick-original.js', ) community = AutoCompleteSelectMultipleField('community', help_text='', required=False) description = forms.CharField(widget=MarkItUpWidget()) categories = forms.ModelMultipleChoiceField( queryset=NeedCategory.objects.all().order_by('name'), widget=ImageSwitchMultiple( get_image_tick=NeedCategory.get_image, get_image_no_tick=NeedCategory.get_image_off)) target_audiences = forms.Field(widget=Tagsinput( TargetAudience, autocomplete_url="/need/target_audience_search")) tags = forms.Field( widget=TaggitWidget(autocomplete_url="/need/tag_search"), required=False) files = FileuploadField(required=False) def __init__(self, *a, **kw): self.helper = MooHelper(form_id="need_form") return super(NeedForm, self).__init__(*a, **kw) @notify_on_update def save(self, *args, **kwargs): need = super(NeedForm, self).save(*args, **kwargs) UploadedFile.bind_files( self.cleaned_data.get('files', '').split('|'), need) return need
class DomicilioFormSet(forms.ModelForm): calle_numero_apartado_postal = forms.Field( label='Apartado Postal o Calle y número', widget=forms.TextInput( attrs={'placeholder': 'Apartado Postal o Calle y número'}), required=False, help_text='') colonia = forms.Field( label='Colonia', widget=forms.TextInput(attrs={'placeholder': 'Colonia'}), required=False, help_text='') municipio_delegacion = forms.Field( label='Delegación o Municipio', widget=forms.TextInput( attrs={'placeholder': 'Delegación o Municipio'}), required=False, help_text='') codigo_postal = forms.IntegerField( widget=forms.TextInput(attrs={'placeholder': 'Código postal'}), required=False, help_text='') ciudad = forms.Field( label='Ciudad', widget=forms.TextInput(attrs={'placeholder': 'Ciudad'}), required=False, help_text='') estado = forms.ChoiceField(label=_("Estado"), choices=OPCIONES_ESTADOS, required=False) telefono = forms.Field( widget=forms.TextInput(attrs={'placeholder': 'Telefono'}), required=False, help_text='') class Meta: domicilioProfesional = forms.ChoiceField( #widget=forms.TextInput(attrs={'placeholder': 'Institución'}), required=False) model = Domicilio exclude = ['socio']
class RegistrationForm(UserCreationForm): email = forms.EmailField(required=True) firstName = forms.Field(required=True) lastName = forms.Field(required=True) class Meta: model = User fields = [ 'username', 'firstName', 'lastName', 'email', 'password1', 'password2' ] def save(self, commit=True): user = super(RegistrationForm, self).save(commit=False) user.firstName = self.cleaned_data['firstName'] user.lastName = self.cleaned_data['lastName'] user.email = self.cleaned_data['email'] if commit: user.save() return user
class SettingsForm(forms.Form): """ Django Form for Settings. This should change in the future (and not use Django Forms at all). """ email = forms.EmailField(required=True, label=_('Email')) firstname = forms.CharField(required=True, label=_('Full name')) # lastname = forms.CharField(required=True, label='Last name') description = forms.CharField(widget=forms.Textarea(), required=False, label=_("Blurb about yourself")) image = forms.Field(widget=forms.FileInput(), required=False, label=_('Image')) notification_filter = forms.CharField(required=False, label=_('Notification filter'))
class SuggestNews(forms.Form): text = forms.Field(label='Текст новини', widget=forms.Textarea( attrs={ 'rows': 8, 'placeholder': 'Опишіть вашу новину.', 'style': 'width: 100%;' })) file_field = forms.FileField( label='Матеріали', widget=forms.ClearableFileInput(attrs={'multiple': True}), validators=[validate_file_extension])
class objetoForm(forms.ModelForm): nota = forms.Field() class Meta: models = objeto #exclude = ['created_by', 'deleted_by'] def __init__(self, *args, **kwargs): super(objetoForm, self).__init__(*args, **kwargs) self.fields['nota'] = forms.CharField(label='Nota', widget=forms.Textarea) self.fields['nota'].required = False
class MultipleSelectionQuestionForm(QuestionForm): catalog = forms.ChoiceField() display_fields = forms.Field(required=False) CHECKBOX = 0 MULTIPLE_SELECT = 1 COMBOBOX = 2 WIDGET_CHOICES = ( (CHECKBOX, _('Checkbox')), (MULTIPLE_SELECT, _('Multiple Select')), (COMBOBOX, _('Combobox')) ) widget = forms.ChoiceField( widget=forms.RadioSelect(attrs={ 'id': str(random.randint(50, 10000)) + '_select' }), required=True, choices=WIDGET_CHOICES ) def __init__(self, *args, **kwargs): super(MultipleSelectionQuestionForm, self).__init__(*args, **kwargs) # Catalog catalog_choices = ((index, model[1].capitalize()) for index, model in enumerate(models)) self.fields['catalog'].choices = catalog_choices if 'instance' in kwargs: instance = kwargs.get('instance') if instance is not None: answer_options = json.loads(instance.answer_options) if 'widget' in answer_options: self.fields['widget'].initial = answer_options['widget'] class Meta: model = Question fields = ('text', 'help', 'required', 'id', 'widget') widgets = { 'text': forms.Textarea(attrs={ 'rows': 6, 'placeholder': _('Write your question here'), 'class': 'form-control' }), 'help': forms.Textarea(attrs={ 'cols': 80, 'rows': 5, 'placeholder': _('A little help never hurts'), 'class': 'form-control' }), 'required': forms.Select(attrs={ 'class': 'form-control' }) }
class UniqueSelectionQuestionForm(QuestionForm): catalog = forms.ChoiceField() display_fields = forms.Field(required=False) extra = None class Meta: model = Question fields = ('text', 'help', 'required', 'id') widgets = { 'text': forms.Textarea(attrs={ 'rows': 6, 'placeholder': _('Write your question here'), 'class': 'form-control' }), 'help': forms.Textarea(attrs={ 'cols': 80, 'rows': 5, 'placeholder': _('A little help never hurts'), 'class': 'form-control' }), 'required': forms.Select(attrs={ 'class': 'form-control' }) } def __init__(self, *args, **kwargs): if 'extra' in kwargs: self.extra = kwargs.pop('extra') super(UniqueSelectionQuestionForm, self).__init__(*args, **kwargs) if self.extra is not None and 'widgets' in self.extra: widgets_choices = self.extra['widgets'] else: widgets_choices = () # Catalog catalog_choices = ((index, model[1].capitalize()) for index, model in enumerate(models)) self.fields['catalog'].choices = catalog_choices initial_widget = None if self.extra and 'answer_options' in self.extra and self.extra['answer_options'] is not None: initial_widget = self.extra['answer_options']['widget'][0] # Widget if widgets_choices is not None: self.fields['widget'] = forms.ChoiceField( widget=forms.RadioSelect(attrs={ 'id': str(random.randint(50, 10000)) + '_select' }), required=True, choices=widgets_choices, initial=initial_widget )
class ReporteForm(forms.Form): instalacion = forms.Field( label="Instalacion:", widget=forms.Select(attrs={'class': 'col-md-4 form-control'})) puntocontrol = forms.Field( label="Punto de Control:", widget=forms.Select(attrs={'class': 'col-md-4 form-control'})) empleado = forms.Field( label="Empleado:", widget=forms.Select(attrs={'class': 'col-md-4 form-control'})) fecha_inicio = forms.Field(label="De", widget=forms.DateInput( format='%Y-%m-%d', attrs={ 'class': 'js-datepicker form-control', 'data-date-format': 'yyyy-mm-dd', 'placeholder': 'AAAA-MM-DD' })) fecha_fin = forms.Field(label="A", widget=forms.DateInput( format='%Y-%m-%d', attrs={ 'class': 'js-datepicker form-control', 'data-date-format': 'yyyy-mm-dd', 'placeholder': 'AAAA-MM-DD' })) evento = forms.Field( label="Evento:", widget=forms.Select(attrs={'class': 'col-md-4 form-control'}))
class UserRegistrationForm(UserCreationForm): username = forms.Field( required=True, widget=forms.TextInput(attrs={'class': 'form-control'})) email = forms.Field( required=True, widget=forms.EmailInput(attrs={'class': 'form-control'})) password1 = forms.Field( label='Password', required=True, widget=forms.PasswordInput(attrs={'class': 'form-control'})) password2 = forms.Field( label='Password Confirmation', required=True, widget=forms.PasswordInput(attrs={'class': 'form-control'})) first_name = forms.Field( required=True, widget=forms.TextInput(attrs={'class': 'form-control'})) last_name = forms.Field( required=True, widget=forms.TextInput(attrs={'class': 'form-control'})) class Meta: model = User exclude = ['id', 'enabled', 'address', 'image'] fields = [ 'username', 'email', 'password1', 'password2', 'first_name', 'last_name' ] def save(self, commit=True): user = super(UserRegistrationForm, self).save(commit=False) user_address = Address() user_address.save() user.address = user_address if commit: user.save()
class LogEntryAdminForm(forms.ModelForm): object_link = forms.Field( required=False, label=_('Entry'), widget=LinkWidget, ) user_link = forms.Field( required=False, label=_('User'), widget=LinkWidget, ) class Meta: model = LogEntry fields = '__all__' widgets = { 'action_flag': forms.Select(choices=ACTION_CHOICES), 'change_message': forms.Textarea(attrs={'class': 'input-block-level', 'rows': 4}), } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) try: obj = self.instance.get_edited_object() except ObjectDoesNotExist: self.fields['object_link'].widget = forms.HiddenInput() self.fields['object_link'].help_text = '--//--' else: self.initial['object_link'] = self.instance.get_admin_url() self.fields['object_link'].widget.text = str(obj) if self.instance.user: admin_user_model = settings.AUTH_USER_MODEL.lower().replace('.', '_') self.initial['user_link'] = resolve_url('admin:{}_change'.format(admin_user_model), self.instance.user.pk) self.fields['user_link'].widget.text = str(self.instance.user) else: self.fields['user_link'].widget = forms.HiddenInput() self.fields['user_link'].help_text = '--//--'
class AjustesDetailCreate(forms.Form): id_funcionario = forms.Field() funcionario = forms.CharField() anho = forms.IntegerField(label='Año', min_value=date.today().year - 2, max_value=date.today().year) libres = forms.IntegerField(label='Días Libres', min_value=min_dias, max_value=max_dias) helper = FormHelperHorizontal() helper.layout = Layout( Field('id_funcionario', type="hidden"), Field('funcionario', readonly=""), Field('anho', placeholder="Año"), Field('libres', placeholder="Días Libres", readonly="")) def clean(self): cleaned_data = super(AjustesDetailCreate, self).clean() anho = cleaned_data.get("anho") id_funcionario = cleaned_data.get("id_funcionario") libres = cleaned_data.get("libres") periodos = Periodo.objects.filter(funcionario_id=id_funcionario, anho=anho) if periodos.count() > 0: raise forms.ValidationError({ "anho": "El periodo " + str(anho) + " ya se encuentra creado para el funcionario" }) if anho is None: return try: antiguedad = Antiguedad.objects.filter( anhos_antiguedad__lte=anho).order_by( '-anhos_antiguedad')[:1].get() if antiguedad.dias_libres < libres: raise forms.ValidationError({ "libres": "La antiguedad del funcionario correspondiente al " + str(anho) + " es hasta " + str(antiguedad.dias_libres) + " dias" }) except Antiguedad.DoesNotExist, e: raise forms.ValidationError({ "libres": "El funcionario no puede solicitar vacaciones porque no tiene antiguedad suficiente" })
class UploadImageForm(forms.Form): title = forms.CharField(label='Title', max_length=200) up_file = forms.ImageField(label='Image URL', ) description = forms.Field(widget=forms.Textarea(attrs={ 'cols': 50, }), label='Description', required=False) public_share = forms.BooleanField( initial=False, required=False, label='Public Sharing', )
def __init__(self, *args, **kwargs): algorithms = kwargs.pop('algorithms') variables = kwargs.pop('variables') objectives = kwargs.pop('objectives') variable_type = kwargs.pop('variable_type') super(ProblemInputVariable, self).__init__(*args, **kwargs) self.fields['variables'] = forms.IntegerField( label='Number of variables', widget=forms.TextInput(attrs={'readonly': True})) self.fields['variable_type'] = forms.Field( label='Solution type', widget=forms.TextInput(attrs={'readonly': True})) for i in range(variables): self.fields['variable_name_%s' % i] = forms.Field( label='Variable Name %s' % (i + 1), required=False) self.fields['objectives'] = forms.IntegerField( label='Number of objectives', widget=forms.TextInput(attrs={'readonly': True})) for i in range(objectives): self.fields['objectives_name_%s' % i] = forms.Field( label='Objectives Name %s' % (i + 1), required=False) self.fields['variables'].initial = variables self.fields['variable_type'].initial = variable_type self.fields['objectives'].initial = objectives self.fields['input_csv'] = forms.FileField( label='Select the csv or rs file with the best solutions you have', required=False, validators=[validate_file_ext(['.csv', '.rf'])]) self.fields['algorithm_choice_method'] = forms.ChoiceField( label='Select the algorithm choice method', choices=(('Manual', 'Manual'), ('Automatic', 'Automatic'), ('Mixed', 'Mixed'))) self.fields['choices'] = forms.MultipleChoiceField( label='Select the algorithms to run the problem with', choices=zip(algorithms, [algorithm.split('.')[-1] for algorithm in algorithms]), widget=forms.CheckboxSelectMultiple, required=True)