def __init__(self, *args, **kwargs): button_text = kwargs.pop('button_text', _("Create SMS Connection")) super(BackendForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = 'form form-horizontal' self.helper.form_method = 'POST' self.helper.layout = crispy.Layout( crispy.Fieldset( _('General Settings'), crispy.Field('name', css_class='input-xxlarge'), crispy.Field('description', css_class='input-xxlarge', rows="3"), crispy.Field('reply_to_phone_number', css_class='input-xxlarge'), crispy.Field('give_other_domains_access', data_bind="checked: share_backend"), crispy.Div( 'authorized_domains', data_bind="visible: showAuthorizedDomains", ), ), self.gateway_specific_fields, crispy.Fieldset( _("Phone Numbers"), crispy.Div(data_bind="template: {" " name: 'ko-load-balancing-template', " " data: $data" "}", ), data_bind="visible: use_load_balancing", ), FormActions( StrictButton(button_text, type="submit", css_class='btn-primary'), ), )
def __init__(self, *args, **kwargs): """Initialise crispy forms.""" super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_id = 'question_update_form' if self.instance.pk else 'question_create_form' choice_fields = [ Div(Field(f'choice_text_{i}', style='height:100px'), css_class='col-md') for i in range(1, 6) ] self.helper.layout = Layout( Div( Div(Field('section', type='hidden'), css_class='col-md-8'), Div(Field('question', style='height:100px;'), css_class='col-md-8'), Div('weight', css_class='col-md-4'), css_class='row', ), Div(*choice_fields, css_class='row'), Div(Div(StrictButton('Update', css_class='btn-primary', css_id='question_update_btn'), css_class='col'), css_class='row'))
def __init__(self, *args, **kwargs): autor_related = Div( FieldWithButtons( Field('q', placeholder=_('Pesquisar por possíveis autores para ' 'o Tipo de Autor selecionado.')), StrictButton( _('Filtrar'), css_class='btn-default btn-filtrar-autor', type='button')), css_class='hidden', data_action='create', data_application='AutorSearch', data_field='autor_related') autor_select = Row(to_column(('tipo', 3)), Div(to_column(('nome', 5)), to_column(('cargo', 4)), css_class="div_nome_cargo"), to_column((autor_related, 9)), to_column((Div( Field('autor_related'), css_class='radiogroup-autor-related hidden'), 12))) row2 = Row(to_column((InlineRadios('action_user'), 8)), to_column((Div('username'), 4))) row3 = Row(to_column(('senha', 3)), to_column(('senha_confirma', 3)), to_column(('email', 3)), to_column(('confirma_email', 3)), css_class='new_user_fields hidden') row4 = Row(to_column(( Div(InlineRadios('status_user'), css_class='radiogroup-status hidden'), 12))) if 'status_user' in self.Meta.fields else None controle_acesso = [row2, row3] if row4: controle_acesso.append(row4) controle_acesso = Fieldset(_('Controle de Acesso do Autor'), *controle_acesso) self.helper = FormHelper() self.helper.layout = SaplFormLayout(autor_select, controle_acesso) super(AutorForm, self).__init__(*args, **kwargs) self.fields['action_user'].initial = 'N' if self.instance.pk: if self.instance.autor_related: self.fields['autor_related'].choices = [ (self.instance.autor_related.pk, self.instance.autor_related)] self.fields['q'].initial = '' self.fields['autor_related'].initial = self.instance.autor_related if self.instance.user: self.fields['username'].initial = getattr( self.instance.user, get_user_model().USERNAME_FIELD) self.fields['action_user'].initial = 'A' self.fields['username'].label = string_concat( self.fields['username'].label, ' (', getattr( self.instance.user, get_user_model().USERNAME_FIELD), ')') if 'status_user' in self.Meta.fields: self.fields['status_user'].initial = 'R' self.fields['status_user'].label = string_concat( self.fields['status_user'].label, ' (', getattr( self.instance.user, get_user_model().USERNAME_FIELD), ')') self.fields['username'].widget.attrs.update({ 'data': getattr( self.instance.user, get_user_model().USERNAME_FIELD) if self.instance.user else ''}) if 'status_user' in self.Meta.fields: self.fields['status_user'].widget.attrs.update({ 'data': getattr( self.instance.user, get_user_model().USERNAME_FIELD) if self.instance.user else ''})
def __init__(self, *args, **kwargs): super(RecetaForm, self).__init__(*args, **kwargs) self.fields[ 'nombre'].help_text = u'<small class="help-error"></small> %s' % ( u' ') self.fields[ 'porcion'].help_text = u'<small class="help-error"></small> %s' % ( u' ') self.fields[ 'tipo_receta'].help_text = u'<small class="help-error"></small> %s' % ( u' ') self.fields[ 'descripcion'].help_text = u'<small class="help-error"></small> %s' % ( u' ') self.fields['nombre'].widget.attrs = { 'placeholder': 'Ingrese nombre de la receta' } self.fields['porcion'].widget.attrs = { 'placeholder': 'Ingrese porciones' } self.fields['tipo_receta'].label = 'Tipo de receta' self.fields['descripcion'].widget.attrs = { 'rows': 2, 'placeholder': 'Ingrese una breve descripción', } self.fields['preparacion'].initial = 'Preparación' self.fields['preparacion'].widget = SummernoteWidget(attrs={ 'width': '100%', 'height': '35em' }) self.helper = FormHelper() self.helper.form_class = 'js-validate form-vertical' self.helper.form_id = 'form' self.helper.layout = Layout( Row( Div(Field('nombre', css_class='input-required'), Field('porcion', css_class='input-required'), Field('descripcion', ), FieldWithButtons( 'tipo_receta', StrictButton("<i class='fa fa-plus'></i>", css_class="btn-default", rel="tooltip", title="Agregar tipo receta", data_toggle="modal", data_target="#modal-id")), Field('imagen', ), Field('publicar', ), css_class='col-md-6'), Div(Field('preparacion', css_class="input-required"), css_class='col-md-6'), ), FormActions( smtSave(), btnCancel(), btnReset(), ), )
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper.form_class = "noAsterisks" self.fields[ "team"].widget.manager = 'team_in_campaign_%s' % self.instance.campaign.slug self.fields["subsidiary"].help_text += format_html( "{}<br/><br/>{}<br/>{}", _("Zadejte adresu, kam jezdíte každý den do práce."), _("Je název nebo adresa společnosti napsaná chybně?"), self.instance.company_coordinator_mail_text(), ) company = self.initial.get('company') subsidiary = self.initial.get('subsidiary') self.helper.form_id = "change-team-form" self.helper.layout = Layout( FieldWithButtons( 'company', StrictButton( format_html( '<span class="glyphicon glyphicon-plus"></span> {}', _('Nová společnost')), href=reverse("register_company"), data_fm_head=_("Přidejte novou společnost"), data_fm_ok=_("Přidat"), data_fm_cancel=_("Zpět"), data_fm_callback="createCompanyCallback", css_class="btn fm-create", id="fm-create-company", ), ), FieldWithButtons( 'subsidiary', StrictButton( format_html( '<span class="glyphicon glyphicon-plus"></span> {}', _('Přidat adresu')), href=reverse("register_subsidiary", args=(company.id, )) if company else "", data_fm_head=_("Přidejte novou adresu"), data_fm_ok=_("Přidat"), data_fm_cancel=_("Zpět"), data_fm_callback="createSubsidiaryCallback", css_class="btn fm-create", id="fm-create-subsidiary", **({ 'disabled': True } if company is None else {}), # Disable button if no company is selected ), ), FieldWithButtons( 'team', StrictButton( format_html( '<span class="glyphicon glyphicon-plus"></span> {}', _('Založit tým')), href=reverse("register_team", args=(subsidiary.id, )) if subsidiary else "", data_fm_head=_("Založte nový tým"), data_fm_ok=_("Založit"), data_fm_cancel=_("Zpět"), data_fm_callback="createTeamCallback", css_class="btn fm-create", id="fm-create-team", **({ 'disabled': True } if subsidiary is None else {}), # Disable button if no subsidiary is selected ), ), ) if not self.instance.campaign.competitors_choose_team( ): # We ask only for comapny and subsidiary self.fields["team"].widget = HiddenInput() self.fields["team"].required = False del self.helper.layout.fields[2]
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = 'form-horizontal' self.helper.form_id = 'sort-form' self.helper.label_class = 'col-md-4' self.helper.field_class = 'col-md-8' self.helper.layout = Layout( TabHolder( Tab( 'Step 1 - Initial Serums Set', StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Next", type='button', css_class='btn-warning col-md-offset-11 btnNext', ), Fieldset( 'Import list of serums', 'serum_file', )), Tab( 'Step 2 - Serum', StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Next", type='button', css_class='btn-warning col-md-offset-11 btnNext', ), Fieldset( 'Serum fields', 'sample_id', 'status', 'site_id', 'coll_num', 'age_min', 'age_max', 'gender', 'coll_date', 'year', 'ward_id', )), Tab( 'Step 3 - Freezer', StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Next", type='button', css_class='btn-warning col-md-offset-11 btnNext', ), Fieldset( 'Freezer fields', 'study_code', 'sample_type', 'aliquot_no', 'volume', 'freezer_section_name', 'subdivision_1_position', 'subdivision_2_position', 'subdivision_3_position', 'subdivision_4_position', )), Tab( 'Step 4 - Tests', StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % 'Previous', type='button', css_class='btn-danger btnPrevious', ), StrictButton('<span class="glyphicon glyphicon-ok" \ aria-hidden="true"></span> %s' % "Submit", type='submit', color='green', css_class='btn-success col-md-offset-10'), Fieldset( 'Select Serum based on the tests performed', 'all_test', 'elisa_chik_test', 'elisa_dengue_test', 'elisa_rickettsia_test', 'pma_test', )), ), )
def __init__(self, *args, **kwargs): yaml_layout = kwargs.pop('yaml_layout') q_field = Div( FieldWithButtons( Field('q', placeholder=_('Filtrar Lista'), autocomplete='off', type='search', onkeypress='atualizaContatos(event)'), StrictButton(_('Filtrar'), css_class='btn-outline-primary', type='button', onclick='atualizaContatos(event)')), Div(css_class='form-group-contato-search ' 'controls-radio-checkbox')) q = [ _('Seleção de Contatos'), [(q_field, 5), (Div(Field('contatos'), css_class='form-group-contatos'), 7)] ] yaml_layout.append(q) for fieldset in yaml_layout: for linha in fieldset: for idx, field in enumerate(linha): if field[0] == 'importancia': linha[idx] = (InlineRadios('importancia'), field[1]) self.helper = FormHelper() self.helper.field_class = 'controls' self.helper.layout = SaplFormLayout(*yaml_layout) super(ProcessoForm, self).__init__(*args, **kwargs) if not self.instance.pk: self.fields['data'].initial = date.today() self.fields['q'].help_text = _('Digite parte do nome, nome social ou ' 'apelido do Contato que você procura.') self.fields['topicos'].widget = forms.SelectMultiple( attrs={'size': '8'}) self.fields['topicos'].queryset = TopicoProcesso.objects.all() self.fields['assuntos'].widget = forms.SelectMultiple( attrs={'size': '8'}) self.fields['assuntos'].queryset = AssuntoProcesso.objects.filter( workspace=self.initial['workspace']) # Utilizando template bootstrap3 customizado self.fields['importancia'].widget = forms.RadioSelect() self.fields['importancia'].choices = IMPORTANCIA_CHOICE self.fields['status'].widget = forms.RadioSelect() # self.fields['status'].inline_class = True self.fields['status'].choices = [ (ass.pk, ass) for ass in StatusProcesso.objects.order_by('id') ] self.fields['classificacoes'].widget = forms.CheckboxSelectMultiple() # self.fields['classificacoes'].inline_class = True self.fields['contatos'].widget = forms.CheckboxSelectMultiple() self.fields['contatos'].queryset = Contato.objects.all() self.fields['contatos'].choices = [ (c.pk, c) for c in self.instance.contatos.order_by('nome')]\ if self.instance.pk else [] self.fields['contatos'].help_text = _( 'Procure por Contatos na caixa de buscas e arraste ' 'para esta caixa os Contatos interessados neste Processo.')
def __init__(self, *args, **kwargs): super(PermisoAusentismoForms, self).__init__(*args, **kwargs) self.helper = FormHelper() # self.helper.form_class = 'form-inline' self.helper.field_template = 'bootstrap3/layout/inline_field.html' self.helper.form_class = 'form-horizontal' self.helper.layout = Layout( Div( #Div(Field('mes_evento'),css_class='col-md-2'), Div(Field('idTrabajador'), css_class='col-md-4'), Div(Field('tipo_evento'), css_class='col-md-3'), Div(FieldWithButtons( 'codigoDiagnostico', StrictButton('...', css_class='btn btn-info', data_toggle='modal', data_target="#myModal")), css_class='col-md-3'), css_class='row'), Div( #Div(Field('periodoIncapacidadInicial'), css_class='col-md-3', ), Div(Div( Field('periodoIncapacidadInicial'), css_class='', ), css_class='col-sm-2'), Div(Div( Field('periodoIncapacidadFinal'), css_class='', ), css_class='col-sm-2'), # HTML('<p>Date: <input name="fechaIngreso" type="text" id="id_date"></p>'), #Div(Field('periodoIncapacidadFinal'), css_class='col-md-3', ), Div( Field('prorroga'), css_class='col-sm-1', ), Div( Field('totalDiasIncapacidad', type="hidden"), css_class='col-sm-1', ), Div( Field('diasCargados'), css_class='col-sm-2', ), Div( Field('horaInicial'), css_class='col-sm-2', ), Div( Field('horaFinal'), css_class='col-sm-2', ), css_class='row', style='', ), Div(css_class='row', ), Field('observaciones'), Div(FormActions( Submit('save', 'Guardar', css_class='btn-default'), HTML( '<a type="button" class="btn btn-danger" href="{% url "listado_permiso_ausentismo" %}" >Cancelar</a>' ), ), style='text-align:right;padding-right:1%;padding-top:1%'), )
def __init__(self, *args, **kwargs): """Create a new form.""" log = logging.getLogger(__name__) log.debug("Enter") # Pop user if given user = None if "user" in kwargs: user = kwargs.pop("user") super(SubmitJobForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.layout = Layout( TabHolder( Tab('File', Field('name', 'diffraction_data', 'email_address')), Tab('Contaminants', ), Tab( 'Advanced', Field('custom_models'), ), ), StrictButton( '<span class="ladda-label">Submit</span>', type="submit", css_class="btn btn-primary ladda-button submit_button", data_style="expand-right", )) # Add confidential button and pre-fill e-mail if user if logged in if user and user.is_authenticated(): self.helper.layout[0][0].append("confidential") self.fields['email_address'] = forms.EmailField(initial=user.email, required=True) else: self.fields['email_address'] = forms.EmailField(required=True) # Add contaminants selection to form try: categories = Category.get_current() except ObjectDoesNotExist: categories = [] for category in categories: log.debug("Category found : " + str(category)) initial = (category.selected_by_default) title = "<h3 onclick=\"toggle_all('" \ + text.slugify(category) + "')\">" \ + category.name \ + " <button type=\"button\" class=\"btn btn-primary "\ + "btn-xs\">" \ + "Toggle all" \ + "</button></h3>" fields = [] for contaminant in Contaminant.objects.filter(category=category): self.fields[contaminant.uniprot_id] = forms.BooleanField( label=contaminant.short_name + " - " + contaminant.long_name, required=False, initial=initial) fields.append(contaminant.uniprot_id) self.helper.layout[0][1].append( Fieldset(title, *fields, css_class=text.slugify(category))) log.debug("Exit")
def __init__(self, *args, **kwargs): """Selects custom layout and placeholders for the form.""" super().__init__(*args, **kwargs) self.helper = FormHelper(self) helper = self.helper helper.form_action = 'users:shipping-billing' helper.form_id = 'shipping_billing_form' helper.form_tag = False self.fields['shipping_phone_number'] = forms.CharField( widget=widgets.PhoneNumberPrefixWidget(), required=False) self.fields['billing_phone_number'] = forms.CharField( widget=widgets.PhoneNumberPrefixWidget(), required=False) self.fields['shipping_full_name'].label = _('Full Name') self.fields['shipping_street_address_1'].label = _('Street Address 1') self.fields['shipping_street_address_2'].label = _('Street Address 2') self.fields['shipping_town_or_city'].label = _('Town or City') self.fields['shipping_county'].label = _('County, State or Locality') self.fields['shipping_country'].label = _('Country') self.fields['billing_full_name'].label = _('Full Name') self.fields['billing_street_address_1'].label = _('Street Address 1') self.fields['billing_street_address_2'].label = _('Street Address 2') self.fields['billing_town_or_city'].label = _('Town or City') self.fields['billing_county'].label = _('County, State or Locality') self.fields['billing_postcode'].label = _('Postcode') self.fields['billing_country'].label = _('Country') helper.layout = Layout( Row( Column( Fieldset( _('SHIPPING DETAILS'), Row( Field('shipping_full_name', placeholder=_('Full Name'), css_class='p-font text-primary'), MultiWidgetField( 'shipping_phone_number', template='bootstrap4/phone_field.html'), Field('shipping_street_address_1', placeholder=_('Street Address 1'), css_class='p-font text-primary'), Field('shipping_street_address_2', placeholder=_('Street Address 2'), css_class='p-font text-primary'), Field('shipping_town_or_city', placeholder=_('Town or City'), css_class='p-font text-primary'), Field('shipping_county', placeholder=_('County, State or Locality'), css_class='p-font text-primary'), Field('shipping_postcode', placeholder=_('Postcode'), css_class='p-font text-primary'), Field( 'shipping_country', css_class='form-select p-font text-primary'))), css_class='col-12 col-md-6 p-2 px-md-4 pt-md-4 pb-md-2'), Column( Fieldset( _('BILLING DETAILS'), Row( Field('billing_full_name', placeholder=_('Full Name'), css_class='p-font text-primary'), MultiWidgetField( 'billing_phone_number', template='bootstrap4/phone_field.html'), Field('billing_street_address_1', placeholder=_('Street Address 1'), css_class='p-font text-primary'), Field('billing_street_address_2', placeholder=_('Street Address 2'), css_class='p-font text-primary'), Field('billing_town_or_city', placeholder=_('Town or City'), css_class='p-font text-primary'), Field('billing_county', placeholder=_('County, State or Locality'), css_class='p-font text-primary'), Field('billing_postcode', placeholder=_('Postcode'), css_class='p-font text-primary'), Field( 'billing_country', css_class='form-select p-font text-primary'))), css_class='col-12 col-md-6 p-2 px-md-4 pt-md-4 pb-md-2'), Column(StrictButton( _('Save Details'), type='submit', css_class='p-font btn-tran btn btn-sm fw-bold \ btn-warning text-primary shadow'), css_class='col-12 col-md-auto ps-2 pb-2 px-md-4 \ pb-md-4 mx-md-auto')))
def __init__(self, *args, **kwargs): super(InformeSemestralForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.form_show_labels = True self.helper.form_class = 'form-horizontal' self.helper.label_class = 'col-sm-4' self.helper.field_class = 'col-sm-8' self.helper.form_action = "." self.helper.all().wrap(Field, css_class='input-sm') self.helper.filter_by_widget(forms.Textarea).wrap( Field, css_class="input-xlarge", rows="3") self.helper.layout = Layout( MultiField( '<b>Plantación*</b>', Div( HTML( '<p class="help-block">Cuantos proyectos misioneros o igleisas hijas fueron plantadas en el ultimo semestre</p>' ), Field('plantacion_nombre_1', css_class='input-sm', placeholder="nombre"), Field('plantacion_lugar_1', css_class='input-sm', placeholder="lugar"), Field('plantacion_fecha_1', css_class='input-sm', placeholder="mes/año"), css_class='informe-semestral-plantacion clearfix', ), Div( Field('plantacion_nombre_2', css_class='input-sm', placeholder="nombre"), Field('plantacion_lugar_2', css_class='input-sm', placeholder="lugar"), Field('plantacion_fecha_2', css_class='input-sm', placeholder="mes/año"), css_class='informe-semestral-plantacion clearfix', ), Div( Field('plantacion_nombre_3', css_class='input-sm', placeholder="nombre"), Field('plantacion_lugar_3', css_class='input-sm', placeholder="lugar"), Field('plantacion_fecha_3', css_class='input-sm', placeholder="mes/año"), css_class='informe-semestral-plantacion clearfix', )), Field('miembros_actuales'), Field('nuevos_miembros'), Field('conversiones'), Field('bautismos_nuevos'), Field('no_bautismos'), Field('asistencia_general'), Field('ofrendas'), Field('plantacion'), Field('grupos_vida'), Field('asistencia_grupos'), Field('peticiones_oracion'), Field('testimonios'), Field('ministerio_ninos'), Field('uso_local'), Field('fotos'), FormActions( StrictButton('Enviar Informe', type="Submit", css_class="btn btn-success pull-right btn-md", autocomplete="off"), ))
class NamedUserTicketForm(UserTicketForm): is_private = forms.ChoiceField( choices=constants.TICKET_PRIVACY, initial=True, label=_('Privacy'), required=False ) issue_type = forms.ChoiceField( choices=constants.ISSUE_TYPE_CREATE, label=_('Issue Type'), ) attachment = forms.FileField(widget=forms.FileInput(attrs={'multiple':"true"}), required=False) #forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True})) #forms.FileField(max_length=255,required=False) # forms.FileField(widget=forms.FileInput(attrs={'multiple':"true"})) file_upload_layout = FieldWithButtons(Div('attachment',StrictButton( 'Add new file', css_id='add_new_file', css_class='btn btn-xs btn-success'), css_class='full-wide layout_sec'), ) fine_uploader_layout= Layout( Div( css_id= 'fine-uploader-manual-trigger', css_class='layout_sec', ), ) uploaded_files_layout = Layout() class Meta(UserTicketForm.Meta): fields = UserTicketForm.Meta.fields + ('issue_type', 'is_private') def __init__(self ,*args, **kwargs): super(NamedUserTicketForm, self).__init__(*args, **kwargs) self.uploaded_files_layout = Layout() if self.instance and self.instance.issue_type: self.fields['issue_type'].choices = constants.ISSUE_TYPE else: self.fields['issue_type'].choices = constants.ISSUE_TYPE_CREATE if self.instance.id and self.instance.owned_by.is_basic: self.fields['issue_type'].required = False if self.instance and self.instance.ticket_documents.all(): for i, d in enumerate(self.instance.ticket_documents.all()): self.uploaded_files_layout.append( HTML( ''' <div class="form-horizontal"> <div class="form-group"> <label class="control-label col-lg-3" for="id_file">File</label> <div class="controls col-lg-8"> <span>{}</span> <a type="button" style="margin-bottom:5px;margin-left:5px" id="{}" class="btn btn-xs btn-danger pull-right delete_file"> Delete file </a> <a class="btn btn-default btn-xs pull-right" target="_blank" href="{}" style="margin-right:15px;"> <span class="glyphicon glyphicon-file"></span>Download </a> </div> </div></div>'''.format(d.filename, d.id, d.file.url) ) ) self.helper.layout = Layout( self.classification_layout, self.uploaded_products_layout, self.product_layout, self.category_layout, self.description_layout, self.additional_layout, self.fine_uploader_layout, # self.file_upload_layout, # self.uploaded_files_layout, self.button_layout ) def clean_issue_type(self): if (self.cleaned_data.get('product') and self.cleaned_data.get('product') in ('GLUU', 'OXD', 'SUP_GLUU') ): if not self.cleaned_data.get('issue_type'): raise forms.ValidationError(_('Please specify the issue type')) return self.cleaned_data.get('issue_type')
class UserTicketForm(forms.ModelForm): gluu_server_version = forms.ChoiceField( label=_('Gluu Server Version'), choices=constants.GLUU_SERVER_VERSION ) gluu_server_version_comments = forms.CharField( label=_('Gluu Server Version'), required=False ) product = forms.ChoiceField( label=_('Select Product'), choices=constants.PRODUCT, required=False ) product_version= forms.ChoiceField( label=_('Version'), choices=constants.Product_Version, required=False ) os_version = forms.ChoiceField( label=_('Operating System'), choices=constants.OS_VERSION ) os_version_name = forms.FloatField( label=_('OS Version') ) product_os_version = forms.ChoiceField( label =_('Operating System'), choices = constants.PRODUCT_OS_VERSION, required=False ) product_os_version_name = forms.FloatField( label = _('OS Version'), required=False ) ios_version_name = forms.FloatField( label = _('iOS Version'), required=False ) set_default_product = forms.BooleanField( label=_('Set as Default (Static Text)'), required=False, ) # set_default_gluu = forms.BooleanField( # label=_('Set as Default'), # required = False # ) description = forms.CharField( widget=forms.Textarea, help_text=( 'This field supports <a target="_blank" href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet">markdown formatting.</a>' ) ) # description_copy = forms.CharField( # widget=AdminPagedownWidget() # ) ticket_category = forms.ChoiceField( label=_('Issue Category'), choices=constants.ISSUE_CATEGORY, required= False ) classification_layout = Layout( Div( Div( Field('gluu_server_version', wrapper_class='col-md-4', css_class='gluu_server_version'), Field('gluu_server_version_comments', wrapper_class='col-md-3 hidden', css_class='gluu_server_version_comments'), Field('os_version',wrapper_class='col-md-4 ', css_class="os_version "), Field('os_version_name',wrapper_class='col-md-4 os_version_icon', placeholder="Which OS are you using?", css_class="os_version_name "), css_class='gluu_layout_div' ), Div( HTML('<div class="col-md-6 add-product ">'), StrictButton('Add Product',css_class='add_product_btn'), HTML('</div>'), # Field('set_default_gluu', css_class='div_set_default '), css_class= 'default_product_div' ), css_class='main_gluu_div' ), ) product_layout= Layout( Div( Div( Field('product',wrapper_class='col-md-3 hidden' , css_class="product"), Field('product_version',wrapper_class='col-md-3 ', css_class="product_version "), Field('product_os_version',wrapper_class='col-md-3 ', css_class="product_os_version "), Field('product_os_version_name',wrapper_class='col-md-2 os_version_icon ', placeholder="os version", css_class="product_os_version_name"), Field('ios_version_name',wrapper_class='col-md-1 hidden os_version_icon', placeholder="ios version", css_class="ios_version_name"), HTML('<div class="col-md-1 remove"><a class="delete_product_row hidden" href="javascript:void(0);"></a></div>'), Field('set_default_product',css_class='div_set_default', wrapper_class='hidden'), css_class='product_layout_div' ), css_class= 'main_product_div layout_sec hidden' ), ) description_layout = Layout( Div( Field( 'title', placeholder='Ticket title',wrapper_class='col-md-12' ), css_class= 'layout_sec' ), Div( Field( 'description',wrapper_class='col-md-12', placeholder='Ticket description.. please include enough ' + 'information for someone to reproduce your issue, ' + 'including all relevant logs.', # data_uk_htmleditor='{mode:\'tab\',markdown:true}' ), css_class= 'layout_sec' ) ) category_layout = Layout( Div( Field('issue_type',wrapper_class='col-md-6'), Field('ticket_category',wrapper_class='col-md-6'), css_class= 'layout_sec' ), ) additional_layout = Layout( Div( PrependedText( 'send_copy', '<span class="glyphicon glyphicon-envelope"></span>', placeholder='Separate emails with commas' ), Field('is_private'), css_class= 'layout_sec' ), Div( PrependedText( 'link_url', '<span class="glyphicon glyphicon-link"></span>', placeholder='URL to download/view ticket info' ), css_class= 'layout_sec' ), ) button_layout = Div( FormActions( Submit('save', 'Submit'), HTML('<a class="btn btn-default" href="{% url \'home\'%}" id="cancelButton">Cancel</a>') ), css_class= 'layout_sec' ) uploaded_products_layout = Layout() class Meta: model = Ticket error_css_class = 'error_form' fields = ('product','product_version','product_os_version','product_os_version_name','ios_version_name','gluu_server_version','gluu_server_version_comments', 'os_version','os_version_name','title', 'description', 'ticket_category', 'link_url', 'send_copy') def __init__(self, user='******', *args, **kwargs): super(UserTicketForm, self).__init__(*args, **kwargs) self.uploaded_products_layout = Layout() # if user: # data = get_last_ticket_data(user) # if data: # if data[0] != "N/A": # self.fields['gluu_server_version'].initial = data[0] # if data[1] != None: # self.fields['os_version'].initial = data[1] # if data[2] != "": # self.fields['os_version_name'].initial = data[2] # data = None if user: data = get_last_ticket_data(user) if data: self.fields['gluu_server_version'].initial = data[0] if data[0] != "N/A" else "" self.fields['os_version'].initial = data[1] if data[1] != None else "" self.fields['os_version_name'].initial = data[2] if data[2] != "" else 0 self.fields['gluu_server_version_comments'].initial = data[3] if data[3] != "" else 0 self.fields['send_copy'].label = "CC Colleagues" self.fields['title'].label = "Subject" self.button_layout[0][0] = Submit('save', 'Submit') self.button_layout[0][1] = HTML( '<a class="btn btn-danger" href="{% url \'home\'%}" id="cancelButton">Cancel</a>') if self.instance.id: self.button_layout[0][0] = Submit('save', 'Save') self.button_layout[0][1] = HTML( '<a class="btn btn-danger" href="{}" id="cancelButton">Cancel</a>'.format( generate_ticket_link(self.instance))) if self.instance.product_ticket_id.all(): for ticket in self.instance.product_ticket_id.all(): if ticket.ios_version_name: html= HTML(''' <div class="product_layout_div"> <div id="div_id_product" class="form-group col-md-3 for-margin"> <label for="id_product" class="control-label requiredField"> Select Product<span class="star">*</span> </label> {} </div> <div id="div_id_product_version" class="form-group col-md-2 for-margin"> <label for="id_product_version" class="control-label requiredField"> Product Version<span class="star">*</span> </label> {} </div> <div id="div_id_product_os_version" class="form-group col-md-2 for-margin"> <label for="id_product_os_version" class="control-label requiredField"> Operating System<span class="star">*</span> </label> {} </div> <div id="div_id_product_os_version_name" style="width:128px;" class="form-group col-md-1 for-margin os_version_icon"> <label for="id_product_os_version_name" class="control-label requiredField"> Android Version<span class="star">*</span></label> <div class="controls "> <input class="numberinput form-control product_os_version_name" id="id_product_os_version_name" name="product_os_version_name" value={} step="any" type="number"> </div></div><div id="div_id_ios_version_name" class="form-group col-md-1 os_version_icon fadeIn animated" style="width:100px;"> <label for="id_ios_version_name" class="control-label "> iOS Version</label> <div class="controls "> <input class="ios_version_name numberinput form-control" value={} id="id_ios_version_name" name="ios_version_name" step="any" type="number"> </div> </div> <div class="col-md-1 remove"><a class="delete_product_row" href="javascript:void(0);"></a></div></div> '''.format(product_select_list(ticket.product),product_version_select_list(ticket.product_version),product_os_version_select_list(ticket.product_os_version),ticket.product_os_version_name,ticket.ios_version_name)) else: html = HTML(''' <div class="product_layout_div"> <div id="div_id_product" class="form-group col-md-3 for-margin"> <label for="id_product" class="control-label requiredField"> Select Product<span class="star">*</span> </label> {} </div> <div id="div_id_product_version" class="form-group col-md-3 for-margin"> <label for="id_product_version" class="control-label requiredField"> Product Version<span class="star">*</span> </label> {} </div> <div id="div_id_product_os_version" class="form-group col-md-3 for-margin"> <label for="id_product_os_version" class="control-label requiredField"> Operating System<span class="star">*</span> </label> {} </div> <div id="div_id_product_os_version_name" class="form-group col-md-2 for-margin os_version_icon"> <label for="id_product_os_version_name" class="control-label requiredField"> OS Version<span class="star">*</span></label> <div class="controls "> <input class="numberinput form-control product_os_version_name" id="id_product_os_version_name" name="product_os_version_name" value={} step="any" type="number"> </div></div><div id="div_id_ios_version_name" class="form-group col-md-1 os_version_icon hidden fadeIn animated" style="width:100px;"> <label for="id_ios_version_name" class="control-label "> iOS Version</label> <div class="controls "> <input class="ios_version_name numberinput form-control" id="id_ios_version_name" name="ios_version_name" step="any" type="number"> </div> </div> <div class="col-md-1 remove"><a class="delete_product_row" href="javascript:void(0);"></a></div></div> '''.format(product_select_list(ticket.product),product_version_select_list(ticket.product_version),product_os_version_select_list(ticket.product_os_version),ticket.product_os_version_name)) self.uploaded_products_layout.append( html ) # if self.instance.ticket_id.all(): # for ticket in self.instance.ticket_id.all(): # self.uploaded_classification_layout.append( # HTML(''' # <div class="gluu_layout_div"> <div id="div_id_gluu_server_version" class="form-group col-md-4"> <label for="id_gluu_server_version" class="control-label requiredField"> # Gluu Server Version<span class="star">*</span> </label> {} </div> <div id="div_id_os_version" class="form-group col-md-4"> <label for="id_os_version" class="control-label requiredField"> # Operating System<span class="star">*</span> </label> {} </div> <div id="div_id_os_version_name" class="form-group col-md-3 os_version_icon"> <label for="id_os_version_name" class="control-label requiredField"> # OS Version<span class="star">*</span> </label> <div class="controls "> <input class="numberinput form-control os_version_name" id="id_os_version_name" name="os_version_name" value={} step="any" type="number"> </div> </div> # <div class="col-md-1 remove"><a class="delete_gluu_row" href="javascript:void(0);"></a></div></div> # '''.format(gluu_server_version_select_list (ticket.gluu_server_version),gluu_os_version_list(ticket.os_version),ticket.os_version_name) # ) # ) self.helper = FormHelper(self) self.helper.form_class = 'form-horizontal ticket_form' self.helper.help_text_inline = True self.helper.layout = Layout( # self.uploaded_classification_layout, self.classification_layout, self.uploaded_products_layout, self.product_layout, self.description_layout, self.category_layout, self.additional_layout, self.button_layout ) def clean_ticket_category(self): if (self.cleaned_data.get('product') and self.cleaned_data.get('product') in ('GLUU', 'OXD', 'SUP_GLUU') ): if not self.cleaned_data.get('ticket_category'): raise forms.ValidationError(_('Please specify the issue category')) return self.cleaned_data.get('ticket_category') def clean_os_version_name(self): if not self.cleaned_data.get('os_version_name') or self.cleaned_data.get('os_version_name') < 0: raise forms.ValidationError(_('Please enter os version in positive numbers.')) return self.cleaned_data.get('os_version_name')
def monster_instance_edit(request, profile_name, instance_id): try: summoner = Summoner.objects.select_related('user').get( user__username=profile_name) except Summoner.DoesNotExist: return HttpResponseBadRequest() instance = get_object_or_404(MonsterInstance, pk=instance_id) is_owner = (request.user.is_authenticated and summoner.user == request.user) if is_owner: # Reconcile skill level with actual skill from base monster skills = [] skill_levels = [ instance.skill_1_level, instance.skill_2_level, instance.skill_3_level, instance.skill_4_level, ] for idx in range(0, instance.monster.skills.count()): skills.append({ 'skill': instance.monster.skills.all()[idx], 'level': skill_levels[idx] }) form = EditMonsterInstanceForm(request.POST or None, instance=instance) form.helper.form_action = request.path if len(skills) >= 1 and skills[0]['skill'].max_level > 1: form.helper['skill_1_level'].wrap( FieldWithButtons, StrictButton("Max", name="Set_Max_Skill_1", data_skill_field=form['skill_1_level'].auto_id), ) form.helper['skill_1_level'].wrap(Field, min=1, max=skills[0]['skill'].max_level) form.fields[ 'skill_1_level'].label = skills[0]['skill'].name + " Level" else: form.helper['skill_1_level'].wrap(Div, css_class="hidden") if len(skills) >= 2 and skills[1]['skill'].max_level > 1: form.helper['skill_2_level'].wrap( FieldWithButtons, StrictButton("Max", name="Set_Max_Skill_2", data_skill_field=form['skill_2_level'].auto_id), min=1, max=skills[1]['skill'].max_level, ) form.helper['skill_2_level'].wrap(Field, min=1, max=skills[1]['skill'].max_level) form.fields[ 'skill_2_level'].label = skills[1]['skill'].name + " Level" else: form.helper['skill_2_level'].wrap(Div, css_class="hidden") if len(skills) >= 3 and skills[2]['skill'].max_level > 1: form.helper['skill_3_level'].wrap( FieldWithButtons, StrictButton("Max", name="Set_Max_Skill_3", data_skill_field=form['skill_3_level'].auto_id), min=1, max=skills[2]['skill'].max_level, ) form.helper['skill_3_level'].wrap(Field, min=1, max=skills[2]['skill'].max_level) form.fields[ 'skill_3_level'].label = skills[2]['skill'].name + " Level" else: form.helper['skill_3_level'].wrap(Div, css_class="hidden") if len(skills) >= 4 and skills[3]['skill'].max_level > 1: form.helper['skill_4_level'].wrap( FieldWithButtons, StrictButton("Max", name="Set_Max_Skill_4", data_skill_field=form['skill_4_level'].auto_id), min=1, max=skills[1]['skill'].max_level, ) form.helper['skill_4_level'].wrap(Field, min=1, max=skills[3]['skill'].max_level) form.fields[ 'skill_4_level'].label = skills[3]['skill'].name + " Level" else: form.helper['skill_4_level'].wrap(Div, css_class="hidden") if not instance.monster.homunculus: form.helper['custom_name'].wrap(Div, css_class="hidden") if request.method == 'POST' and form.is_valid(): mon = form.save() messages.success(request, 'Successfully edited ' + str(mon)) view_mode = request.session.get('profile_view_mode', DEFAULT_VIEW_MODE).lower() if view_mode == 'list': template = loader.get_template( 'herders/profile/monster_inventory/monster_list_row_snippet.html' ) else: template = loader.get_template( 'herders/profile/monster_inventory/monster_box_snippet.html' ) context = { 'profile_name': profile_name, 'instance': mon, 'is_owner': is_owner, } response_data = { 'code': 'success', 'instance_id': mon.pk.hex, 'html': template.render(context), } else: # Return form filled in and errors shown template = loader.get_template( 'herders/profile/monster_view/edit_form.html') context = {'edit_monster_form': form} context.update(csrf(request)) response_data = {'code': 'error', 'html': template.render(context)} return JsonResponse(response_data) else: raise PermissionDenied()
def __init__(self, *args, **kwargs): """ Surcharge de l'initialisation du formulaire """ super().__init__(*args, **kwargs) # Tu utilises FormHelper pour customiser ton formulaire self.helper = FormHelper() # Tu définis l'id et la classe bootstrap de ton formulaire self.helper.form_class = 'form-horizontal' self.helper.form_id = 'client-form' # Tu définis la taille des labels et des champs sur la grille self.helper.label_class = 'col-md-2' self.helper.field_class = 'col-md-8' # Tu crées l'affichage de ton formulaire self.helper.layout = Layout( # Le formulaire va contenir 3 onglets TabHolder( # Premier onglet Tab( # Label de l'onglet 'Général', # Liste des champs du modèle à afficher dans l'onglet 'noms', 'prenoms', 'datenaissance', 'photo', # Tu rajoutes un bouton "Suivant" StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Suivant", type='button', css_class='btn-warning col-md-offset-9 btnNext', ) ), # Deuxième onglet Tab( # Label de l'onglet 'Informations', # Liste des champs à afficher 'typeclient', 'email', 'phone', 'profession', # Tu rajoutes des boutons "Précédent" et "Suivant" StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % 'Précédent', type='button', css_class='btn-primary btnPrevious', ), StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % 'Suivant', type='button', css_class='btn-warning col-md-offset-8 btnNext', ) ), # Troisième onglet Tab( # Label de l'onglet 'Autres', # Liste des champs à afficher dont les champs supplémentaires 'adresse', 'ville', 'nationalite', 'quartier', # Tu rajoutes des boutons "Précédent" et "Valider" StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % "Précédent", type='button', css_class='btn-warning btnPrevious', ), StrictButton( '<span class="glyphicon glyphicon-ok" \ aria-hidden="true"></span> %s' % "Valider", type='submit', css_class='btn-success col-md-offset-8' ) ), ), )
def __init__(self, *args, **kwargs): """ Surcharge de l'initialisation du formulaire """ super().__init__(*args, **kwargs) # Tu utilises FormHelper pour customiser ton formulaire self.helper = FormHelper() # Tu définis l'id et la classe bootstrap de ton formulaire self.helper.form_class = 'form-horizontal' self.helper.form_id = 'pharmacie-form' # Tu définis la taille des labels et des champs sur la grille self.helper.label_class = 'col-md-2' self.helper.field_class = 'col-md-8' # Tu crées l'affichage de ton formulaire self.helper.layout = Layout( # Le formulaire va contenir 3 onglets TabHolder( # Premier onglet Tab( # Label de l'onglet 'Étape 1 - Identité', # Liste des champs du modèle à afficher dans l'onglet 'nom', 'libelle', 'slogan', 'horaires', 'statut', # Tu rajoutes un bouton "Suivant" StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Suivant", type='button', css_class='btn-warning col-md-offset-9 btnNext', )), # Deuxième onglet Tab( # Label de l'onglet 'Étape 2 - Coordonnées', # Liste des champs à afficher 'agrement', 'nom_gerant', 'site_web', 'email', 'boite_postale', # Tu rajoutes des boutons "Précédent" et "Suivant" StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % 'Précédent', type='button', css_class='btn-primary btnPrevious', ), StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % 'Suivant', type='button', css_class='btn-warning col-md-offset-8 btnNext', )), # Troisième onglet Tab( # Label de l'onglet 'Étape 3 - Localisation', # Liste des champs à afficher dont les champs supplémentaires 'telephone', 'repere', 'ville', 'quartier', 'logo', # Tu rajoutes des boutons "Précédent" et "Valider" StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % "Précédent", type='button', css_class='btn-warning btnPrevious', ), StrictButton('<span class="glyphicon glyphicon-ok" \ aria-hidden="true"></span> %s' % "Valider", type='submit', css_class='btn-success col-md-offset-8')), ), )
def __init__(self, *args, **kwargs): """ Surcharge de l'initialisation du formulaire """ super().__init__(*args, **kwargs) # Tu utilises FormHelper pour customiser ton formulaire self.helper = FormHelper() # Tu définis l'id et la classe bootstrap de ton formulaire self.helper.form_class = 'form-horizontal' self.helper.form_id = 'medicament-form' # Tu définis la taille des labels et des champs sur la grille self.helper.label_class = 'col-md-2' self.helper.field_class = 'col-md-8' # Tu crées l'affichage de ton formulaire self.helper.layout = Layout( # Le formulaire va contenir 3 onglets TabHolder( # Premier onglet Tab( # Label de l'onglet 'Étape 1', # Liste des champs du modèle à afficher dans l'onglet 'genre', 'famille', 'nom_generique', 'forme', # Tu rajoutes un bouton "Suivant" StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Suivant", type='button', css_class='btn-warning col-md-offset-9 btnNext', )), # Deuxième onglet Tab( # Label de l'onglet 'Étape 2', # Liste des champs à afficher 'code', 'conditionnement', 'description', # Tu rajoutes des boutons "Précédent" et "Suivant" StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % 'Précédent', type='button', css_class='btn-primary btnPrevious', ), StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % 'Suivant', type='button', css_class='btn-warning col-md-offset-8 btnNext', )), # Troisième onglet Tab( # Label de l'onglet 'Étape 3', # Liste des champs à afficher dont les champs supplémentaires 'prix_achat', 'prix_vente', # Tu rajoutes des boutons "Précédent" et "Valider" StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % "Précédent", type='button', css_class='btn-warning btnPrevious', ), StrictButton('<span class="glyphicon glyphicon-ok" \ aria-hidden="true"></span> %s' % "Valider", type='submit', css_class='btn-success col-md-offset-8')), ), )
def __init__(self, *args, **kwargs): super(ProfileForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = "content-wrapper" self.helper.form_method = "post" if settings.ZDS_APP["member"]["old_smileys_allowed"]: self.fields["options"].choices.insert( 3, ("use_old_smileys", _("Utiliser les anciens smileys"))) # to get initial value form checkbox show email initial = kwargs.get("initial", {}) self.fields["options"].initial = "" if "show_sign" in initial and initial["show_sign"]: self.fields["options"].initial += "show_sign" if "is_hover_enabled" in initial and initial["is_hover_enabled"]: self.fields["options"].initial += "is_hover_enabled" if "allow_temp_visual_changes" in initial and initial[ "allow_temp_visual_changes"]: self.fields["options"].initial += "allow_temp_visual_changes" if "use_old_smileys" in initial and initial["use_old_smileys"]: self.fields["options"].initial += "use_old_smileys" if "show_markdown_help" in initial and initial["show_markdown_help"]: self.fields["options"].initial += "show_markdown_help" if "email_for_answer" in initial and initial["email_for_answer"]: self.fields["options"].initial += "email_for_answer" if "email_for_new_mp" in initial and initial["email_for_new_mp"]: self.fields["options"].initial += "email_for_new_mp" layout = Layout( IncludeEasyMDE(), Field("biography"), ButtonHolder( StrictButton(_("Aperçu"), type="preview", name="preview", css_class="btn btn-grey preview-btn"), ), HTML(""" {% if form.biographie.value %} {% include "misc/preview.part.html" with text=form.biographie.value %} {% endif %} """), Field("site"), Field("avatar_url"), HTML( _(""" <p> <a href="{% url 'gallery-list' %}">Choisir un avatar dans une galerie</a><br/> Naviguez vers l'image voulue et cliquez sur le bouton "<em>Choisir comme avatar</em>".<br/> Créez une galerie et importez votre avatar si ce n'est pas déjà fait ! </p> """)), Field("sign"), Field("licence"), Field("options"), ButtonHolder(StrictButton(_("Enregistrer"), type="submit"), ), ) self.helper.layout = layout
class Row(Div): css_class = "row" dictionnairesLayout = Layout( Row( Div( Row(HTML("<strong>Dictionnaires </strong>"), css_class="card-header"), Div( Row( Div(FieldWithButtons( 'dict_larousse', StrictButton( 'Show', css_class="btn-outline-secondary toggle-dict"), StrictButton( 'Get', css_class="btn-outline-secondary get-dict")), css_class="col-sm-3"), Div(FieldWithButtons( 'dict_cnrtl', StrictButton( 'Show', css_class="btn-outline-secondary toggle-dict"), StrictButton( 'Get', css_class="btn-outline-secondary get-dict")), css_class="col-sm-3"), Div(FieldWithButtons(
def __init__(self, *args, **kwargs): self.pta_modification_enable = kwargs.pop('pta_modification_enable', False) self.enable_send_to_next_step = kwargs.pop('enable_send_to_next_step', False) self.send_award_to_multiple_steps_steps = kwargs.pop( 'send_award_to_multiple_steps_steps', False) self.do_not_send_to_next_step = kwargs.pop('do_not_send_to_next_step', False) super(AwardSectionForm, self).__init__(*args, **kwargs) if self.Meta.model == ProposalIntake: user_list = User.objects.filter( is_active=True, groups__name='Proposal Intake').order_by('first_name') users = [(user.first_name + ' ' + user.last_name, user.first_name + ' ' + user.last_name) for user in user_list] choices = [(self.initial['spa1'], self.initial['spa1']), (u'', u'---------')] choices.extend(users) self.fields['spa1'].choices = choices if self.Meta.model == AwardAcceptance: acceptance = AwardAcceptance.objects.get( award_id=self.instance.award.id, current_modification=True) if acceptance.award_setup_priority: self.initial[ 'award_setup_priority'] = acceptance.award_setup_priority else: self.initial['award_setup_priority'] = 'ni' self.fields['award_setup_priority'].choices = [ ('on', 1), ('tw', 2), ('th', 3), ('fo', 4), ('fi', 5), ('ni', 9) ] if self.do_not_send_to_next_step: self.fields['do_not_send_to_next_step'].initial = True form_actions = [ Reset('reset', 'Cancel'), Submit('save', 'Save changes and continue editing') ] if self.enable_send_to_next_step: form_actions.append( StrictButton('Save and send award to next step', css_id='submit-and-send', css_class='btn btn-success submit-and-send')) if self.send_award_to_multiple_steps_steps: form_actions.append( StrictButton( 'Save and Send award to Negotiation & Award Setup', css_id='submit-and-dual-send', css_class='btn btn-success submit-and-dual-send')) if not self.pta_modification_enable: if 'pta_modification' in self.fields: self.fields.pop('pta_modification') if self.Meta.model == AwardSetup: form_actions.insert( 0, HTML( '<a href="{% url \'award_setup_report\' award.id %}" class="btn">View EAS Report</a>' )) if self.Meta.model == AwardNegotiation and not self.instance.award.award_dual_setup: form_actions.append( StrictButton('Save and Close Record', css_id='submit-and-close', css_class='btn btn-primary submit-and-close')) self.helper.layout.extend([ HTML("<div class='pull-right'>"), FormActions(*form_actions), HTML("</div>"), ])
def __init__(self, *args, **kwargs): if 'domain' not in kwargs: raise Exception("Expected domain in kwargs") self.domain = kwargs.pop('domain') self.enhancements_enabled = AUTO_CASE_UPDATE_ENHANCEMENTS.enabled( self.domain) super(AddAutomaticCaseUpdateRuleForm, self).__init__(*args, **kwargs) if not self.enhancements_enabled: # Always set the value of filter_on_server_modified to true when the # enhancement toggle is not set self.data = self.data.copy() self.initial['filter_on_server_modified'] = 'true' self.data['filter_on_server_modified'] = 'true' # We can't set these fields to be required because they are displayed # conditionally and we'll confuse django validation if we make them # required. However, we should show the asterisk for consistency, since # when they are displayed they are required. self.fields['update_property_name'].label = _( "Property") + '<span class="asteriskField">*</span>' self.fields['update_property_value'].label = _( "Value") + '<span class="asteriskField">*</span>' self.helper = FormHelper() self.helper.form_class = 'form form-horizontal' self.helper.label_class = 'col-sm-3 col-md-2' self.helper.field_class = 'col-sm-4 col-md-3' self.helper.form_method = 'POST' self.helper.form_action = '#' if self.enhancements_enabled: self.allow_updates_without_closing() _update_property_fields = [ _f for _f in [ Field( 'update_property_name', ng_model='update_property_name', css_class='case-property-typeahead', ), Field( 'property_value_type', ng_model='property_value_type', ) if self.enhancements_enabled else None, Field( 'update_property_value', ng_model='update_property_value', ) ] if _f ] _basic_info_fields = [ _f for _f in [ Field( 'name', ng_model='name', ), Field( 'case_type', ng_model='case_type', ), Field( 'filter_on_server_modified', ng_model='filter_on_server_modified', ) if self.enhancements_enabled else None, hqcrispy.B3MultiField( _("Close Case") + '<span class="asteriskField">*</span>', Div( hqcrispy.MultiInlineField( 'server_modified_boundary', ng_model='server_modified_boundary', ), css_class='col-sm-6', ), Div( HTML('<label class="control-label">%s</label>' % _('days after the case was last modified.')), css_class='col-sm-6', ), help_bubble_text=_( "This will close the case if it has been " "more than the chosen number of days since " "the case was last modified. Cases are " "checked against this rule weekly."), css_id='server_modified_boundary_multifield', label_class=self.helper.label_class, field_class='col-sm-8 col-md-6', ng_show='showServerModifiedBoundaryField()', ), Field( 'action', ng_model='action', ), Div(*_update_property_fields, ng_show='showUpdateProperty()') ] if _f ] self.set_case_type_choices(self.initial.get('case_type')) self.helper.layout = Layout( Fieldset(_("Basic Information"), *_basic_info_fields), Fieldset( _("Filter Cases to Close (Optional)"), Field( 'conditions', type='hidden', ng_value='conditions', ), Div(ng_include='', src="'conditions.tpl'"), ), FormActions( StrictButton( _("Save"), type='submit', css_class='btn btn-primary col-sm-offset-1', ), ), )
def __init__(self, urls, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["urls"].choices = urls self.helper = FormHelper() self.helper.layout = Layout(Field("urls"), StrictButton(_("Comparer"), type="submit"))
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = 'form-horizontal' self.helper.form_id = 'sort-form' self.helper.label_class = 'col-md-2' self.helper.field_class = 'col-md-8' self.helper.layout = Layout( TabHolder( Tab( 'Step 1 - Serum', StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Next", type='button', css_class='btn-warning col-md-offset-10 btnNext', ), Fieldset( 'Serum Fields', 'serum_fields', )), Tab( 'Step 2 - Freezer', StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % 'Previous', type='button', css_class='btn-danger btnPrevious', ), StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Next", type='button', css_class='btn-warning col-md-offset-10 btnNext', ), Fieldset( 'Freezer Fields', 'freezer_fields', )), Tab( 'Step 3 - Results', StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % 'Previous', type='button', css_class='btn-danger btnPrevious', ), StrictButton( '<span class="glyphicon glyphicon-arrow-right" \ aria-hidden="true"></span> %s' % "Next", type='button', css_class='btn-warning col-md-offset-10 btnNext', ), Fieldset( 'Elisa', Fieldset( 'General', 'elisa_general_fields', ), Fieldset( 'Pathogens', 'pathogen', ), ), Fieldset( 'Protein MicroArray', Fieldset( 'General', 'pma_general_fields', ), Fieldset( 'Pathogens', 'pma_results_fields', ), ), ), Tab( 'Step 4 - Export', StrictButton( '<span class="glyphicon glyphicon-arrow-left" \ aria-hidden="true"></span> %s' % 'Previous', type='button', css_class='btn-danger btnPrevious', ), StrictButton('<span class="glyphicon glyphicon-ok" \ aria-hidden="true"></span> %s' % "Export Data", type='submit', css_class='btn-success col-md-offset-11'), Fieldset( 'Select a type of file', 'file_type', )), ), )
def __init__(self, account, domain, creating_user, current_subscription, renewed_version, data=None, *args, **kwargs): self.current_subscription = current_subscription super(ConfirmSubscriptionRenewalForm, self).__init__(account, domain, creating_user, data=data, *args, **kwargs) self.fields['plan_edition'].initial = renewed_version.plan.edition self.fields['confirm_legal'].label = mark_safe( ugettext_noop('I have read and agree to the <a href="%(pa_url)s" ' 'target="_blank">Software Product Agreement</a>.') % { 'pa_url': reverse("product_agreement"), }) from corehq.apps.domain.views import DomainSubscriptionView self.helper.layout = crispy.Layout( 'plan_edition', crispy.Fieldset( _("Billing Administrators"), crispy.Field('billing_admins', css_class='input-xxlarge'), ), crispy.Fieldset( _("Basic Information"), 'company_name', 'first_name', 'last_name', crispy.Field('emails', css_class='input-xxlarge'), 'phone_number', ), crispy.Fieldset( _("Mailing Address"), 'first_line', 'second_line', 'city', 'state_province_region', 'postal_code', crispy.Field('country', css_class="input-large", data_countryname=dict(COUNTRIES).get( self.current_country, ''))), crispy.Fieldset( _("Re-Confirm Product Agreement"), 'confirm_legal', ), FormActions( crispy.HTML( '<a href="%(url)s" style="margin-right:5px;" class="btn">%(title)s</a>' % { 'url': reverse(DomainSubscriptionView.urlname, args=[self.domain]), 'title': _("Cancel"), }), StrictButton( _("Renew Plan"), type="submit", css_class='btn btn-success', ), ), )
def __init__(self, *args, **kwargs): self.domain = kwargs.pop('domain', None) self.account = kwargs.pop('account', None) self.username = kwargs.pop('username', None) self.export_settings = kwargs.pop('export_settings', None) kwargs['initial'] = { "restrict_domain_creation": self.account.restrict_domain_creation, "restrict_signup": self.account.restrict_signup, "restrict_signup_message": self.account.restrict_signup_message, } if self.export_settings and domain_has_privilege( self.domain, DEFAULT_EXPORT_SETTINGS): kwargs['initial'].update(self.export_settings.as_dict()) super(EnterpriseSettingsForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.form_id = 'enterprise-settings-form' self.helper.form_class = 'form-horizontal' self.helper.form_action = reverse("edit_enterprise_settings", args=[self.domain]) self.helper.label_class = 'col-sm-3 col-md-2' self.helper.field_class = 'col-sm-9 col-md-8 col-lg-6' self.helper.layout = crispy.Layout( crispy.Fieldset( _("Edit Enterprise Settings"), PrependedText('restrict_domain_creation', ''), crispy.Div( PrependedText('restrict_signup', '', data_bind='checked: restrictSignup'), ), crispy.Div( crispy.Field('restrict_signup_message'), data_bind='visible: restrictSignup', ), )) if domain_has_privilege(self.domain, DEFAULT_EXPORT_SETTINGS): self.helper.layout.append( crispy.Div( crispy.Fieldset( _("Edit Default Form Export Settings"), crispy.Div(crispy.Field('forms_filetype'), ), PrependedText('forms_auto_convert', ''), PrependedText('forms_auto_format_cells', ''), PrependedText('forms_expand_checkbox', ''), ), crispy.Fieldset( _("Edit Default Case Export Settings"), crispy.Div(crispy.Field('cases_filetype')), PrependedText('cases_auto_convert', ''), ), crispy.Fieldset( _("Edit Default OData Export Settings"), PrependedText('odata_expand_checkbox', ''), ), )) self.helper.layout.append( hqcrispy.FormActions( StrictButton( _("Update Enterprise Settings"), type="submit", css_class='btn-primary', )))
def __init__(self, account, domain, creating_user, data=None, *args, **kwargs): self.account = account self.domain = domain self.creating_user = creating_user try: self.current_country = self.account.billingcontactinfo.country except Exception: initial = kwargs.get('initial') self.current_country = initial.get( 'country') if initial is not None else None try: kwargs['instance'] = self.account.billingcontactinfo except BillingContactInfo.DoesNotExist: pass super(EditBillingAccountInfoForm, self).__init__(data, *args, **kwargs) other_admins = self.account.billing_admins.filter( domain=self.domain).exclude(web_user=self.creating_user).all() self.fields['billing_admins'].initial = ','.join( [o.web_user for o in other_admins]) self.helper = FormHelper() self.helper.form_class = 'form form-horizontal' self.helper.layout = crispy.Layout( crispy.Fieldset( _("Billing Administrators"), crispy.Field('billing_admins', css_class='input-xxlarge'), ), crispy.Fieldset( _("Basic Information"), 'company_name', 'first_name', 'last_name', crispy.Field('emails', css_class='input-xxlarge'), 'phone_number', ), crispy.Fieldset( _("Mailing Address"), 'first_line', 'second_line', 'city', 'state_province_region', 'postal_code', crispy.Field('country', css_class="input-large", data_countryname=dict(COUNTRIES).get( self.current_country, '')), ), FormActions( StrictButton( _("Update Billing Information"), type="submit", css_class='btn btn-primary', ), ), )
def layout(self): self.helper.layout = Layout( 'q_quick_search_kw', StrictButton('Search', type="submit", css_class='btn-sm btn-default'), StrictButton('Export', type="submit", name="export", css_class='btn-sm btn-default'), )
def __init__(self, *args, workshop_url, has_perm_to_edit=True, has_perm_to_disable_uploads=False, profile_warnings=None, **kwargs): super(ModelForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.include_media = False # Disable fields that should be disabled if not self.instance.is_workshop_editable() or not has_perm_to_edit: for field in self.fields.values(): field.disabled = True if self.instance.status: # The proposition cannot be edited once the workshop has a status set self.fields['proposition_description'].disabled = True if not has_perm_to_disable_uploads: self.fields['solution_uploads_enabled'].disabled = True # Make sure only current category and type choices are displayed if self.instance is None: raise ValueError( 'WorkshopForm must be provided with an instance with the .year field already set' ) year = self.instance.year self.fields['category'].queryset = WorkshopCategory.objects.filter( year=year) self.fields['type'].queryset = WorkshopType.objects.filter(year=year) # Display link to current qualification tasks: if self.instance.qualification_problems: self.fields['qualification_problems'].help_text = format_html( 'Aktualnie: <a href="{}" target="_blank">{}</a>', reverse('qualification_problems', args=[self.instance.year.pk, self.instance.name]), os.path.basename(self.instance.qualification_problems.path)) else: self.fields['qualification_problems'].help_text = 'Aktualnie: brak' # Configure TinyMCE settings mce_attrs = {} mce_attrs['readonly'] = self.fields[ 'proposition_description'].disabled # does not seem to respect the Django field settings for some reason self.fields['proposition_description'].widget = InitializedTinyMCE( mce_attrs=mce_attrs) mce_attrs = settings.TINYMCE_DEFAULT_CONFIG_WITH_IMAGES.copy() if self.instance and self.instance.pk: mce_attrs['automatic_uploads'] = True mce_attrs['images_upload_url'] = reverse('workshop_edit_upload', kwargs={ 'year': self.instance.year.pk, 'name': self.instance.name }) mce_attrs['readonly'] = self.fields[ 'page_content'].disabled # does not seem to respect the Django field settings for some reason self.fields['page_content'].widget = InitializedTinyMCE( mce_attrs=mce_attrs) # Layout self.fieldset_general = Fieldset( "Ogólne", Div(Div(PrependedAppendedText( 'name', workshop_url[0] + '<b>' + str(year.pk) + '</b>' + workshop_url[1], workshop_url[2], template= "%s/layout/prepended_appended_text_with_mobile_support.html"), css_class='col-lg-12'), Div('title', css_class='col-lg-12'), css_class='row'), Div(Div('type', css_class='col-lg-6'), Div('category', css_class='col-lg-6'), css_class='row'), ) if profile_warnings: for message in profile_warnings: self.fieldset_general.fields.append( Alert(content=message, dismiss=False, css_class='alert-info')) self.fieldset_proposal = Fieldset( "Opis propozycji", 'proposition_description', ) self.fieldset_qualification = Fieldset( "Kwalifikacja", 'is_qualifying', Div('qualification_problems', Div(Div('max_points', css_class='col-lg-6'), Div('qualification_threshold', css_class='col-lg-6'), css_class='row'), 'solution_uploads_enabled', css_id='qualification_settings'), ) self.fieldset_public_page = Fieldset("Strona warsztatów", 'short_description', 'page_content', 'page_content_is_public') self.fieldset_submit = FormActions( StrictButton( 'Zapisz' if self.instance and self.instance.pk else 'Zgłoś!', type='submit', css_class='btn-outline-primary btn-lg mx-1 my-3'), css_class='text-right', ) if not self.instance or not self.instance.is_publicly_visible(): for field in [ 'qualification_problems', 'is_qualifying', 'solution_uploads_enabled', 'max_points', 'qualification_threshold', 'short_description', 'page_content', 'page_content_is_public' ]: del self.fields[field] self.helper.layout = Layout( self.fieldset_general, self.fieldset_proposal, self.fieldset_submit, ) else: if not has_perm_to_edit: self.helper.layout = Layout( self.fieldset_general, self.fieldset_proposal, self.fieldset_qualification, self.fieldset_public_page, ) else: self.helper.layout = Layout( self.fieldset_general, self.fieldset_proposal, self.fieldset_qualification, self.fieldset_public_page, self.fieldset_submit, )
def __init__(self, account, domain, creating_user, data=None, *args, **kwargs): super(ConfirmExtraUserChargesForm, self).__init__(account, domain, creating_user, data=data, *args, **kwargs) self.fields['confirm_product_agreement'].label = _( 'I have read and agree to the <a href="%(pa_url)s" target="_blank">' 'Software Product Subscription Agreement</a>.') % { 'pa_url': reverse('product_agreement') } from corehq.apps.users.views.mobile import MobileWorkerListView self.helper.label_class = 'col-sm-3 col-md-2' self.helper.field_class = 'col-sm-9 col-md-8 col-lg-6' self.helper.layout = crispy.Layout( crispy.Fieldset( _("Basic Information"), 'company_name', 'first_name', 'last_name', crispy.Field('email_list', css_class='input-xxlarge'), 'phone_number', ), crispy.Fieldset( _("Mailing Address"), 'first_line', 'second_line', 'city', 'state_province_region', 'postal_code', crispy.Field('country', css_class="input-large", data_countryname=COUNTRIES.get( self.current_country, '')), ), hqcrispy.B3MultiField( '', crispy.Field('confirm_product_agreement'), ), hqcrispy.FormActions( crispy.HTML( '<a href="%(user_list_url)s" class="btn btn-default">%(text)s</a>' % { 'user_list_url': reverse(MobileWorkerListView.urlname, args=[self.domain]), 'text': _("Back to Mobile Workers List") }), StrictButton( _("Confirm Billing Information"), type="submit", css_class='btn btn-primary disabled', disabled="disabled", css_id="submit-button-pa", ), crispy.HTML( '<p class="help-inline" id="submit-button-help-qa" style="vertical-align: ' 'top; margin-top: 5px; margin-bottom: 0px;">%s</p>' % _("Please agree to the Product Subscription " "Agreement above before continuing.")), ), )
def __init__(self, *args, participant_view=False, **kwargs): super(WorkshopParticipantPointsForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper.include_media = False self.helper.form_tag = False self.helper.form_class = 'form-horizontal' self.helper.label_class = 'col-lg-3' self.helper.field_class = 'col-lg-9' self.helper.layout = Layout( AppendedText( 'qualification_result', 'na <b>{}</b> możliwych'.format( self.instance.workshop.max_points) if self.instance.workshop.max_points is not None else None, css_class='col-md-3'), 'comment', # I don't think there is any proper way to render a field-like constant text using crispy forms :< HTML( format_html( ''' <div id="div_id_mark" class="form-group row"> <label for="id_mark" class="col-form-label col-lg-3"> Zakwalifikowano </label> <div class="col-lg-9"> <div id="id_mark" class="form-control px-0" style="border: 0;"> {} </div> {} </div> </div> ''', qualified_mark(self.instance.is_qualified()), mark_safe( '<small id="hint_id_mark" class="form-text text-muted">To pole jest wypełniane automatycznie na podstawie progu kwalifikacji ustawionego w edytorze warsztatów</small>' ) if not participant_view else ''))) if not participant_view: self.helper.layout.fields.append( FormActions(StrictButton( 'Zapisz', type='submit', css_class='btn-outline-primary btn-lg mx-1 my-3'), css_class='text-right row')) self.fields[ 'comment'].help_text = 'Komentarz jest widoczny dla uczestnika na stronie z wynikami kwalifikacji oraz w widoku rozwiązania' self.fields[ 'qualification_result'].help_text = 'Maksymalną liczbę punktów możliwą do uzyskania można ustawić w edytorze warsztatów. Możesz postawić punkty bonusowe powyżej tej wartości, ale tylko do {}% wartości bazowej.'.format( settings.MAX_POINTS_PERCENT) for field in self.fields.values(): # autocomplete=off fixes a problem on Firefox where the form fields don't reset on reload, making the save button visibility desync field.widget.attrs.update({ 'class': 'form-control', 'autocomplete': 'off' }) field.required = False if not self.instance.workshop.is_qualification_editable( ) or participant_view: for field in self.fields.values(): field.disabled = True