def __init__(self, *args, **kwargs): super(ProfileRegisterForm, self).__init__(auto_id=True, *args, **kwargs) self.fields['address'].widget.attrs.update({ 'placeholder': 'Enter a location', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.fields['birth_date'].widget.attrs.update({ 'placeholder': 'YYYY-MM-DD', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.fields['gender'].widget.attrs.update({ 'placeholder': 'Choose gender', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.fields['role'].widget.attrs.update({ 'placeholder': 'Choose role', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.helper = FormHelper() self.helper.form_show_labels = False self.helper.form_style = 'inline' self.helper.layout = Layout( Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-map-marker-alt"></i></span>'), css_class='input-group-append' ), Field('address', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-calendar"></i></span>'), css_class='input-group-append' ), Field('birth_date', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), HTML('<span class="pb-2" style="color: #d9d9d9">Select gender:</span>'), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-user"></i></span>'), css_class='input-group-append' ), Field('gender', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), HTML('<span class="pb-2" style="color: #d9d9d9">Select role:</span>'), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-user"></i></span>'), css_class='input-group-append' ), Field('role', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), )
def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') super(PaperForm, self).__init__(*args, **kwargs) #self.email = self.cleaned_data['email'] self.fields['authorship'].label = "I am the corresponding author" self.fields['contact'].label = "I can be contacted by participants" #self.fields['feedback'].label = "I wish to received feedback on reproductions" self.fields[ 'public'].label = "I wish to received feedback on reproductions" self.helper = FormHelper(self) self.helper.form_method = 'post' self.helper.add_input(Submit('submit', 'Submit event')) self.helper.layout = Layout( HTML('<h2>Paper details<h2>'), 'title', 'citation_txt', 'citation_bib', 'doi', 'description', 'why', 'focus', Fieldset( "Links to Resources", Row( Column('paper_url', css_class='form-group col-md-6 mb-0'), Column('data_url', css_class='form-group col-md-6 mb-0'), css_class='form-row', ), Row( Column('code_url', css_class='form-group col-md-6 mb-0'), Column('extra_url', css_class='form-group col-md-6 mb-0'), css_class='form-row', ), ), Field('tools', label="Useful Software Skills"), HTML('<h3>Submitter contact details<h3>'), Row( Column(PrependedText('twitter', '@', placeholder="twitter username"), css_class='form-group col-md-4 mb-0'), Column(PrependedText('github', '@', placeholder="github username"), css_class='form-group col-md-4 mb-0'), css_class='form-row', ), Fieldset( "Authorship details", Row( Column('authorship', label="I am corresponding author", css_class='form-group col-md-6 mb-0'), Column('author_first_name', css_class='form-group col-md-3 mb-0'), Column('author_last_name', css_class='form-group col-md-3 mb-0'), Column('author_email', css_class='form-group col-md-6 mb-0'), css_class='form-row', ), Row( Column('public', label="Feedback can be published", css_class='form-group col-md-6 mb-0'), css_class='form-row', ), ), )
def __init__(self, *args, **kwargs): self.helper = FormHelper() self.helper.layout = Layout( Field('nome'), Field('sigla'), Field('stato'), FormActions(Submit('save', 'Salva', css_class="btn-primary"))) super(UnitaForm, self).__init__(*args, **kwargs)
def __init__(self, *args, **kwargs): self.extra = 0 super().__init__(*args, **kwargs) for index, form in enumerate(self.forms): form.id = index + 1 form.helper = FormHelper() form.helper.form_id = 'id_starting_census_form' form.helper.form_class = 'starting-census' form.helper.form_tag = False form.helper.disable_csrf = True form.helper.form_show_labels = False next_up_link_html = """<a id="id_next_up_link" href="{% url 'distribution:make_next_up' line_item_id=""" + \ str(form.instance.distribution_line_item.id) + \ """ date_str=date|date:'m-d-y' %}" class="next-up-link table-cell-button col-1">""" + \ """↑</a>""" form.helper.layout = Layout( Div( Div( HTML(next_up_link_html), Field('id', type='hidden', value=form.id), Field('distribution_line_item', type='hidden', value=form.instance.distribution_line_item.id), # rounder-html inserted here, after layout[0][0][2] (hidden line_item field) in position [0][0][3] # rounder-supplemental html inserted here (e.g. secondary roles, max censuses) in position [0][0][4] css_class='col-5 row ml-2', id='id_rounder_column'), Div(Field('total_census', id='id_total_census_field', placeholder='Total', css_class='census-input', wrapper_class='col-4'), Field('CCU_census', id='id_CCU_census_field', placeholder='CCU', css_class='census-input', wrapper_class='col-4'), Field('COVID_census', id='id_COVID_census_field', placeholder='COVID', css_class='census-input', wrapper_class='col-4'), css_class='col-7 row mx-auto', id='id_censuses_column'), id='id_starting_census_row', css_class='row')) # insert the rounder_html after the hidden fields, i.e. it will then be in layout position [0][3] this_rounder = form.instance.distribution_line_item.provider rounder_html = f'''<div id="id_rounder_cell" class="col-8">''' + \ f'''<p id="id_rounder_text" class="rounder-text">''' + \ f'''<a href="{{% url 'distribution:update_provider' provider_qgenda_name=''' + \ f"'{this_rounder.qgenda_name}'" + \ '''%}" id="id_rounder_name" class="rounder-name-class">''' + \ f'''{this_rounder.display_name}</a></p>''' # construct the supplemental_html_after_the_rounder_html, i.e. will then be in layout position [0][4] salient_supplemental_html = "" # will be blank unless meets certain criteria if this_rounder.max_total_census != 17: salient_supplemental_html += \ f'''<span class="custom-max-total-census">{this_rounder.max_total_census}</span>''' if this_rounder.max_CCU_census != 17: salient_supplemental_html += \ f'''<span class="custom-max-CCU-census">{this_rounder.max_CCU_census}</span>''' if this_rounder.max_COVID_census != 17: salient_supplemental_html += \ f'''<span class="custom-max-COVID-census">{this_rounder.max_COVID_census}</span>''' if form.instance.distribution_line_item.secondary_roles_for_line_items.count( ): try: form.instance.distribution_line_item.secondary_roles_for_line_items.get( secondary_role__qgenda_name__endswith='AM TRIAGE') salient_supplemental_html += f"""<span class="am-triage">a.m. triage</span>""" except SecondaryRoleForLineItem.DoesNotExist: pass try: form.instance.distribution_line_item.secondary_roles_for_line_items.get( secondary_role__qgenda_name__endswith='PM TRIAGE') salient_supplemental_html += f"""<span class="pm-triage">p.m. triage</span>""" except SecondaryRoleForLineItem.DoesNotExist: pass supplemental_html = f'''<p id="id_rounder_supplemental_text" class="rounder-supplemental-text">''' + \ f'''{salient_supplemental_html}</p></div>''' form.helper.layout[0][0].insert(3, HTML(rounder_html)) form.helper.layout[0][0].insert(4, HTML(supplemental_html))
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.form_method = "post" self.layout = Layout(Field("pub_date", css_class="table_pub_date"), Field("title", css_class="table_title"))
def __init__(self, *args, **kwargs): super(LeadForm, self).__init__(*args, **kwargs) self.helper.layout = Layout( TabHolder( Tab( _("Identification"), Field( "name", placeholder=mark_safe( _("Name of the lead. don't include client name"))), AppendedText( "client", "<a href='%s' target='_blank'><span class='glyphicon glyphicon-plus'></span></a>" % reverse("crm.views.client")), "subsidiary", "description", Field("action", placeholder=_("Next commercial action to be done"))), Tab( _("State and tracking"), Div( Column( "responsible", Field("due_date", placeholder=_("Due date for next step"), css_class="datepicker"), Field( "start_date", placeholder=_("Date of the operational start"), css_class="datepicker"), css_class='col-md-6'), Column(Field( "deal_id", placeholder=_("Leave blank to auto generate")), Field( "client_deal_id", placeholder=_("Internal client reference")), "state", css_class='col-md-6'))), Tab( _("Commercial"), Div( Column(AppendedText("sales", "k€"), "salesman", css_class='col-md-6'), Column(AppendedText( "business_broker", "<a href='%s' target='_blank'><span class='glyphicon glyphicon-plus'></span></a>" % reverse("businessbroker_add"), placeholder=_( "If the leads was brought by a third party")), AppendedText( "paying_authority", "<a href='%s' target='_blank'><span class='glyphicon glyphicon-plus'></span></a>" % reverse("businessbroker_add"), placeholder=_( "If payment is done by a third party")), css_class='col-md-6'))), Tab( _("Staffing"), Div(Field( "staffing", placeholder=_("People that could contribute...")), Field( "external_staffing", placeholder= _("People outside company that could contribute..." )), css_class="col-md-6"))), Fieldset("", "send_email"), Field("creation_date", type="hidden"), Field("tags", css_class="hide" ), # Don't use type=hidden, it breaks tag parsing. self.submit)
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 '' })
from tagging.forms import TagField log = logging.getLogger(__name__) MAX_TRACKNUMBER = 300 + 1 ACTION_LAYOUT = action_layout = FormActions( HTML( '<button type="submit" name="save" value="save" class="btn btn-primary pull-right ajax_submit" id="submit-id-save-i-classicon-arrow-upi"><i class="icon-save icon-white"></i> Save</button>' ), HTML( '<button type="reset" name="reset" value="reset" class="reset resetButton btn btn-abort pull-right" id="reset-id-reset"><i class="icon-trash"></i> Cancel</button>' ), ) ACTION_LAYOUT_EXTENDED = action_layout = FormActions( Field('publish', css_class='input-hidden'), HTML( '<button type="submit" name="save" value="save" class="btn btn-primary pull-right ajax_submit" id="submit-id-save-i-classicon-arrow-upi"><i class="icon-save icon-white"></i> Save</button>' ), HTML( '<button type="submit" name="save-and-publish" value="save" class="btn pull-right ajax_submit save-and-publish" id="submit-id-save-i-classicon-arrow-upi"><i class="icon-bullhorn icon-white"></i> Save & Publish</button>' ), HTML( '<button type="reset" name="reset" value="reset" class="reset resetButton btn btn-abort pull-right" id="reset-id-reset"><i class="icon-trash"></i> Cancel</button>' ), ) class MediaActionForm(Form): def __init__(self, *args, **kwargs): self.instance = kwargs.pop('instance', False)
def __init__(self, *args, **kwargs): self.user = kwargs['initial']['user'] self.instance = kwargs['instance'] self.label = kwargs.pop('label', None) super(MediaForm, self).__init__(*args, **kwargs) """ Prototype function, set some fields to readonly depending on permissions """ # if not self.user.has_perm("alibrary.admin_release", self.instance) and self.instance.release and self.instance.release.publish_date: if not self.user.has_perm("alibrary.admin_release", self.instance): # self.fields['license'].widget.attrs['disabled'] = 'disabled' self.fields['license'].widget.attrs['readonly'] = 'readonly' self.helper = FormHelper() self.helper.form_tag = False # rewrite labels self.fields['medianumber'].label = _('Disc number') self.fields['opus_number'].label = _('Opus N.') # self.fields['filename'].label = _('Orig. Filename') base_layout = Fieldset( _('General'), LookupField('name', css_class='input-xlarge'), LookupField('release', css_class='input-xlarge'), LookupField('artist', css_class='input-xlarge'), LookupField('mediatype', css_class='input-xlarge'), LookupField('tracknumber', css_class='input-xlarge'), Field('medianumber', css_class='input-xlarge'), Field('opus_number', css_class='input-xlarge'), Field('version', css_class='input-xlarge'), HTML( '<div style="opacity: 0.5;"><span style="padding: 0 44px 0 0;">Orig. Filename:</span>%s</div>' % self.instance.original_filename), ) identifiers_layout = Fieldset( _('Identifiers'), LookupField('isrc', css_class='input-xlarge'), ) license_layout = Fieldset( _('License/Source'), Field('license', css_class='input-xlarge'), ) meta_layout = Fieldset( 'Meta', LookupField('description', css_class='input-xlarge'), ) lyrics_layout = Fieldset( 'Lyrics', LookupField('lyrics_language', css_class='input-xlarge'), LookupField('lyrics', css_class='input-xlarge'), ) tagging_layout = Fieldset( 'Tags', LookupField('d_tags'), ) layout = Layout( base_layout, HTML('<div id="artist_relation_container"></div>'), identifiers_layout, license_layout, meta_layout, lyrics_layout, tagging_layout, ) self.helper.add_layout(layout)
class KegForm(forms.Form): keg_size = forms.ChoiceField(choices=keg_sizes.CHOICES, initial=keg_sizes.HALF_BARREL, required=True) initial_volume = forms.FloatField(label='Initial Volume', initial=0.0, required=False, help_text='Keg\'s Initial Volume') beer_name = forms.CharField(required=False) # legacy brewer_name = forms.CharField(required=False) # legacy beverage_name = forms.CharField(label='Beer Name', required=False) beverage_id = forms.CharField(widget=forms.HiddenInput(), required=False) producer_name = forms.CharField(label='Brewer', required=False) producer_id = forms.CharField(widget=forms.HiddenInput(), required=False) style_name = forms.CharField(required=True, label='Style', help_text='Example: Pale Ale, Stout, etc.') description = forms.CharField(max_length=256, label='Description', widget=forms.Textarea(), required=False, help_text='Optional user-visible description of the keg.') notes = forms.CharField(label='Notes', required=False, widget=forms.Textarea( ), help_text='Optional private notes about this keg, viewable only by admins.') connect_to = forms.ModelChoiceField( queryset=ALL_TAPS, label='Connect To', required=False, help_text='If selected, immediately activates the keg on this tap. ' '(Any existing keg will be ended.)') helper = FormHelper() helper.form_class = 'form-horizontal beer-select' helper.layout = Layout( Field('beverage_name', css_class='input-xlarge'), Field('beverage_id', type='hidden'), Field('producer_name', css_class='input-xlarge'), Field('producer_id', type='hidden'), Field('style_name', css_class='input-xlarge'), Field('keg_size', css_class='input-xlarge'), Field('initial_volume', css_class='input-volume'), Field('description', css_class='input-block-level', rows='3'), Field('notes', css_class='input-block-level', rows='3'), Field('connect_to', css_class='input-block-level'), FormActions( Submit('submit_add_keg', 'Save', css_class='btn-primary'), ) ) def clean_beverage_name(self): beverage_name = self.cleaned_data.get('beverage_name') if not beverage_name: beverage_name = self.cleaned_data.get('beer_name') if not beverage_name: raise forms.ValidationError('Must specify a beverage name') self.cleaned_data['beverage_name'] = beverage_name return beverage_name def clean_producer_name(self): producer_name = self.cleaned_data.get('producer_name') if not producer_name: producer_name = self.cleaned_data.get('brewer_name') if not producer_name: raise forms.ValidationError('Must specify a producer name') self.cleaned_data['producer_name'] = producer_name return producer_name def save(self): if not self.is_valid(): raise ValueError('Form is not valid.') keg_size = self.cleaned_data.get('keg_size') if keg_size != 'other': full_volume_ml = None else: full_volume_ml = self.cleaned_data.get('initial_volume') # TODO(mikey): Support non-beer beverage types. cd = self.cleaned_data b = get_kegbot_backend() keg = b.create_keg( beverage_name=cd['beverage_name'], producer_name=cd['producer_name'], beverage_type='beer', style_name=cd['style_name'], keg_type=cd['keg_size'], full_volume_ml=full_volume_ml, notes=cd['notes'], description=cd['description']) tap = cd['connect_to'] if tap: if tap.is_active(): b.end_keg(tap.current_keg) b.attach_keg(tap, keg) return keg
class BeverageForm(forms.ModelForm): class Meta(object): model = models.Beverage fields = ('name', 'style', 'producer', 'vintage_year', 'abv_percent', 'original_gravity', 'specific_gravity', 'ibu', 'srm', 'color_hex', 'star_rating', 'untappd_beer_id', 'description') new_image = forms.ImageField(required=False, help_text='Set/replace image for this beer type.') helper = FormHelper() helper.form_class = 'form-horizontal' helper.layout = Layout( Field('name', css_class='input-xlarge'), Field('style', css_class='input-xlarge'), Field('producer'), Field('vintage_year'), Field('abv_percent'), Field('original_gravity'), Field('specific_gravity'), Field('ibu'), Field('srm'), Field('color_hex'), Field('star_rating'), Field('untappd_beer_id'), Field('description'), Field('new_image'), FormActions( Submit('submit', 'Save', css_class='btn-primary'), ) )
class ChangeKegForm(forms.Form): keg_size = forms.ChoiceField(choices=keg_sizes.CHOICES, initial=keg_sizes.HALF_BARREL, required=True) initial_volume = forms.FloatField(label='Initial Volume', initial=0.0, required=False, help_text='Keg\'s Initial Volume') beer_name = forms.CharField(required=False) # legacy brewer_name = forms.CharField(required=False) # legacy beverage_name = forms.CharField(label='Beer Name', required=False) beverage_id = forms.CharField(widget=forms.HiddenInput(), required=False) producer_name = forms.CharField(label='Brewer', required=False) producer_id = forms.CharField(widget=forms.HiddenInput(), required=False) style_name = forms.CharField(required=True, label='Style', help_text='Example: Pale Ale, Stout, etc.') helper = FormHelper() helper.form_class = 'form-horizontal beer-select' helper.layout = Layout( Field('beverage_name', css_class='input-xlarge'), Field('beverage_id', type='hidden'), Field('producer_name', css_class='input-xlarge'), Field('producer_id', type='hidden'), Field('style_name', css_class='input-xlarge'), Field('keg_size', css_class='input-xlarge'), Field('initial_volume', css_class='input-volume'), FormActions( Submit('submit_change_keg_form', 'Activate Keg', css_class='btn-primary'), ) ) def clean_beverage_name(self): beverage_name = self.cleaned_data.get('beverage_name') if not beverage_name: beverage_name = self.cleaned_data.get('beer_name') if not beverage_name: raise forms.ValidationError('Must specify a beverage name') self.cleaned_data['beverage_name'] = beverage_name return beverage_name def clean_producer_name(self): producer_name = self.cleaned_data.get('producer_name') if not producer_name: producer_name = self.cleaned_data.get('brewer_name') if not producer_name: raise forms.ValidationError('Must specify a producer name') self.cleaned_data['producer_name'] = producer_name return producer_name def save(self, tap): if not self.is_valid(): raise ValueError('Form is not valid.') b = get_kegbot_backend() if tap.is_active(): b.end_keg(tap.current_keg) keg_size = self.cleaned_data.get('keg_size') full_volume_ml = self.cleaned_data.get('full_volume_ml') if keg_size != 'other': full_volume_ml = None else: full_volume_ml = self.cleaned_data.get('initial_volume') # TODO(mikey): Support non-beer beverage types. cd = self.cleaned_data keg = b.start_keg( tap, beverage_name=cd['beverage_name'], producer_name=cd['producer_name'], beverage_type='beer', style_name=cd['style_name'], keg_type=cd['keg_size'], full_volume_ml=full_volume_ml) if cd.get('description'): keg.description = cd['description'] keg.save()
class TapForm(forms.ModelForm): class FlowMeterModelChoiceField(forms.ModelChoiceField): def label_from_instance(self, meter): if meter.tap: return u'{} (connected to {})'.format(meter, meter.tap.name) else: return str(meter) class FlowToggleModelChoiceField(forms.ModelChoiceField): def label_from_instance(self, toggle): if toggle.tap: return u'{} (connected to {})'.format(toggle, toggle.tap.name) else: return str(toggle) class ThermoSensorModelChoiceField(forms.ModelChoiceField): def label_from_instance(self, sensor): last_log = sensor.LastLog() if last_log: return u'{} (Last report: {})'.format(sensor, naturaltime(last_log.time)) else: return str(sensor) meter = FlowMeterModelChoiceField( queryset=ALL_METERS, required=False, empty_label='Not connected.', help_text='Tap is routed thorough this flow meter. If unset, reporting is disabled.') toggle = FlowToggleModelChoiceField( queryset=ALL_TOGGLES, required=False, empty_label='Not connected.', help_text='Optional flow toggle (usually a relay/valve) connected to this tap.') temperature_sensor = ThermoSensorModelChoiceField( queryset=ALL_THERMOS, required=False, empty_label='No sensor.', help_text='Optional sensor monitoring the temperature at this tap.') class Meta(object): model = models.KegTap fields = ('name', 'notes', 'temperature_sensor', 'sort_order') def __init__(self, *args, **kwargs): super(TapForm, self).__init__(*args, **kwargs) if self.instance: self.fields['meter'].initial = self.instance.current_meter() self.fields['toggle'].initial = self.instance.current_toggle() self.fields['temperature_sensor'].initial = self.instance.temperature_sensor def save(self, commit=True): if not commit: raise ValueError('TapForm does not support commit=False') instance = super(TapForm, self).save(commit=True) b = get_kegbot_backend() b.connect_meter(instance, self.cleaned_data['meter']) b.connect_toggle(instance, self.cleaned_data['toggle']) return instance helper = FormHelper() helper.form_class = 'form-horizontal' helper.layout = Layout( Field('name', css_class='input-xlarge'), Field('meter', css_class='input-xlarge'), Field('toggle', css_class='input-xlarge'), Field('temperature_sensor', css_class='input-xlarge'), Field('sort_order', css_class='input-xlarge'), Field('notes', css_class='input-block-level', rows='3'), FormActions( Submit('submit_tap_form', 'Save Settings', css_class='btn-success'), ) )
def __init__(self, *args, **kwargs): super(UserRegisterForm, self).__init__(auto_id=True, *args, **kwargs) self.fields['username'].widget.attrs.update({ 'placeholder': 'mickey', 'class': 'reg-form', 'autocomplete': 'off', 'required': True, 'maxlength': 300 }) self.fields['first_name'].widget.attrs.update({ 'placeholder': 'Mirko', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.fields['last_name'].widget.attrs.update({ 'placeholder': 'Mirkic', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.fields['email'].widget.attrs.update({ 'placeholder': '*****@*****.**', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.fields['password1'].widget.attrs.update({ 'placeholder': '*******', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.fields['password2'].widget.attrs.update({ 'placeholder': '*******', 'autocomplete': 'off', 'class': 'reg-form', 'required': True, 'maxlength': 300 }) self.helper = FormHelper() self.helper.form_show_labels = False self.helper.form_style = 'inline' self.helper.layout = Layout( Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-user"></i></span>'), css_class='input-group-append' ), Field('username', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-user"></i></span>'), css_class='input-group-append' ), Field('first_name', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-user"></i></span>'), css_class='input-group-append' ), Field('last_name', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-envelope"></i></span>'), css_class='input-group-append' ), Field('email', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-key"></i></span>'), css_class='input-group-append' ), Field('password1', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), Div( Div( HTML('<span class="input-group-text" style="height: 38px;"><i class="fas fa-key"></i></span>'), css_class='input-group-append' ), Field('password2', css_class="controls col-md-12 col-xs-7"), css_class='input-group mb-2' ), )
def layout(self): return Layout(Field("description", css_class="input-xlarge"), )
def __init__(self, *args, **kwargs): super(ProjectForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_id = "create_project" self.helper.form_action = "pm:project-new" self.helper.add_input(Submit('submit', 'Submit')) self.helper.layout = Layout( Div( Div(Field('name'), css_class='col-sm-6'), Div(Field('requester'), css_class='col-sm-3'), Div(Field('project_manager'), css_class='col-sm-3'), css_class='row', ), Div( Div(Field('description'), css_class='col-sm-6'), Div( Div( Div(Field('start_date'), css_class='col-sm-6 datemask'), Div(Field('program'), css_class='col-sm-6'), css_class='row', ), Div( Div(Field('due_date'), css_class='col-sm-6 datemask'), Div(Field('status'), css_class='col-sm-6'), css_class='row', ), Div( Div(Field('date_complete'), css_class='col-sm-6 datemask'), Div(Field('priority'), css_class='col-sm-6'), css_class='row', ), css_class='col-sm-6', ), css_class='row', ), Div( Div(Field('sharepoint_ticket'), css_class='col-sm-6'), Div(Field('workers'), css_class='col-sm-6'), css_class='row', ))
def layout(self): return Tr( "id", Td(Field("product", template="bootstrap3/field_nolabel.html")), Td(Field("count", template="bootstrap3/field_nolabel.html")), Td(Field("DELETE", template="bootstrap3/field_nolabel.html")))
def __init__(self, *args, **kwargs): super(DisabledProjectAccessForm, self).__init__(*args, **kwargs) self.helper.layout[0] = Field('access_control', disabled=True)
class ItemAdminForm(forms.ModelForm): class Meta: model = Item fields = ('body', 'title', 'author', 'category', 'slug', 'status', 'url', 'image', 'price', 'multi_participate') labels = { 'body': _('Body of Wishlist item'), 'title': _('Title'), 'category': _('Category'), 'author': _('Author'), 'slug': _('Slug'), 'status': _('Status'), 'url': _('URL of article'), 'image': _('Image url'), 'price': _('Price'), 'multi_participate': _('Multi participate'), } def __init__(self, *args, **kwargs): super(ItemAdminForm, self).__init__(*args, **kwargs) category = TreeNodeChoiceField(queryset=Category.objects.all()) helper = FormHelper() helper.layout = Layout( HTML(open_box_form('col-lg-9 col-md-12', _('Text of body'))), Field('body', rows="10", css_class='input-xlarge', id='body'), HTML(close_box_form() + open_box_form('col-lg-3 col-md-12', _('Metadatas'), 'box-success')), Field('title', css_class=''), HTML(""" <div class="row"> <div class="col-md-6"> """), Field('category', id="category_select"), HTML(""" </div> <div class="col-md-6 btn-form-right"> <a href="#" onclick="return false;" class="btn btn-success" id="categoryFormSelect">Create a Category</a> </div> </div> """), Field('author'), Field('slug'), Field('status'), Field('url'), Field('multi_participate'), HTML(""" <div class="row"> <div class="col-md-6"> """), Field('image', id='image_input'), HTML(""" </div> <div class="col-md-6 btn-form-right"> <a href="#" onclick="return false;" class="btn btn-info" id="txtSelectedFile">Select a file</a> <div id="modal-file" class="modais" data-izimodal-title="Select a file" data-izimodal-iframeURL="/admin/roxyfileman/?integration=custom&type=files&txtFieldId=image_input"></div> <img id="image" src="" class="direct-chat-img" width="100px" style="margin-right:10px"> </div> </div> """), Field('price'), FormActions( Submit('save_changes', 'Save changes', css_class="btn-primary"), Submit('cancel', 'Cancel'), ), HTML(""" </div> </div> """), )
def __init__(self, *args, **kwargs): super(PersonForm, self).__init__(*args, **kwargs) self.helper = FormHelper(self) self.helper = FormHelper() self.helper.form_method = "post" self.helper.html5_required = True if self.instance is not None and self.instance.membertype == Person.CHILD: nameFieldSet = Fieldset( "Barnets oplysninger", Div( Div(Field("gender"), css_class="col-md-2"), Div(Field("name"), css_class="col-md-10"), Div( Field( "birthday", css_class="datepicker", input_formats=(settings.DATE_INPUT_FORMATS), ), css_class="col-md-4", ), Div(Field("email"), css_class="col-md-4"), Div(Field("phone"), css_class="col-md-4"), css_class="row", ), ) self.fields["birthday"].required = True self.fields["gender"].choices = Person.MEMBER_GENDER_CHOICES else: nameFieldSet = Fieldset( "Forældres / Værges oplysninger", Div( Div(Field("gender"), css_class="col-md-2"), Div(Field("name"), css_class="col-md-10"), Div( Field( "birthday", css_class="datepicker", input_formats=(settings.DATE_INPUT_FORMATS), ), css_class="col-md-4", ), Div(Field("email"), css_class="col-md-4"), Div(Field("phone"), css_class="col-md-4"), css_class="row", ), ) self.fields["email"].required = True self.fields["phone"].required = True self.fields["gender"].choices = Person.MEMBER_ADULT_GENDER_CHOICES self.fields["birthday"].widget.format = "%d-%m-%Y" self.fields["streetname"].required = True self.fields["housenumber"].required = True self.fields["zipcode"].required = True self.fields["city"].required = True self.helper.layout = Layout( nameFieldSet, Fieldset( "Adresse oplysninger", Div( Div( Field("search_address", id="search-address"), css_class="col-md-10", ), Div( Field("manual_entry", id="manual-entry"), Field("address_global", id="address-global"), css_class="col-md-2", ), Div( Field("streetname", readonly=True, css_class="autofilled-address"), css_class="col-md-9", ), Div( Field("housenumber", readonly=True, css_class="autofilled-address"), css_class="col-md-1", ), Div( Field("floor", readonly=True, css_class="autofilled-address"), css_class="col-md-1", ), Div( Field("door", readonly=True, css_class="autofilled-address"), css_class="col-md-1", ), Div( Field("zipcode", readonly=True, css_class="autofilled-address"), css_class="col-md-2", ), Div( Field("city", readonly=True, css_class="autofilled-address"), css_class="col-md-5", ), Div( Field("placename", readonly=True, css_class="autofilled-address"), css_class="col-md-5", ), Field("dawa_id", "", id="id_dawa_id"), css_class="row", ), ), Submit( "submit", "Opret" if self.instance.id is None else "Ret", css_class="btn-success", ), HTML( """<a class="btn btn-link" href="{% url 'family_detail' %}">Fortryd</a>""" ), ) self.helper.render_unmentioned_fields = False self.fields["birthday"].input_formats = settings.DATE_INPUT_FORMATS
def __init__(self, *args, **kwargs): self.distribution = kwargs.pop('distribution') super().__init__(*args, **kwargs) if not EmailAddressee.objects.count(): email_addressee_start_values = [ ('Hospitalists', '*****@*****.**', True, True), ('Cheryl', '*****@*****.**', True, True), ('Susan', '*****@*****.**', True, True), ('Intensivists', '*****@*****.**', True, False), ('ID docs', '*****@*****.**', True, False) ] for (displayed_name, email_address, visible, pre_checked) in email_addressee_start_values: EmailAddressee.objects.get_or_create( displayed_name=displayed_name, email_address=email_address, visible=visible, pre_checked=pre_checked)[0] self.fields[ 'recipient_choices'].queryset = EmailAddressee.objects.filter( visible=True) self.initial['recipient_choices'] = EmailAddressee.objects.filter( pre_checked=True) instance = self.instance instance.distribution = self.distribution if self.distribution.date == timezone.localdate(): self.initial[ 'subject'] = f'Pt Assignment - {self.distribution.date.strftime("%a %m/%d/%y")}' else: self.initial['subject'] = f'Pt Assignment for {self.distribution.date.strftime("%a %m/%d/%y")} ' + \ f'sent on {timezone.localtime().strftime("%a %m/%d/%y")}' instance.html_message = render_to_string( 'distribution/simple_assignment_table.html', instance.assemble_pt_assignment_context()) # instance.save() self.helper = FormHelper() self.helper.form_id = 'id_email_distribution_form' self.helper.form_method = 'post' self.helper.layout = Layout( Div( HTML('<h5>Subject:</h5>'), Field('subject', wrapper_class='subject-field ml-5'), css_class='form-row subject-textbox', ), HTML('<h5>To:</h5>'), Div(Field('recipient_choices', wrapper_class='recipient_field ml-5', css_class='position-static'), css_class='form-row recipient-checkboxes'), Div(Submit('submit', 'Send Email', css_id='id_email_patient_distribution', css_class='btn-primary', wrapper_class='text-center'), css_class='text-center')) self.helper.form_show_labels = False
def __init__(self, *args, **kwargs): super(vol_signupForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_method = "post" self.helper.form_action = "volunteer_signup" self.helper.html5_required = True self.fields["volunteer_birthday"].widget.format = "%d-%m-%Y" self.helper.layout = Layout( Hidden("form_id", "vol_signup", id="id_form_id"), Fieldset( "Frivilliges oplysninger", Div( Div(Field("volunteer_gender"), css_class="col-md-2"), Div(Field("volunteer_name"), css_class="col-md-10"), Div( Field( "volunteer_birthday", css_class="datepicker", input_formats=(settings.DATE_INPUT_FORMATS), ), css_class="col-md-3", ), Div(Field("volunteer_email"), css_class="col-md-3"), Div(Field("volunteer_phone"), css_class="col-md-3"), Div(Field("volunteer_department"), css_class="col-md-3"), css_class="row", ), ), Fieldset( "Adresse oplysninger", Div( Div( Field("search_address", id="search-address"), css_class="col-md-10", ), Div(Field("manual_entry", id="manual-entry"), css_class="col-md-2"), Div( Field("streetname", readonly=True, css_class="autofilled-address"), css_class="col-md-9", ), Div( Field("housenumber", readonly=True, css_class="autofilled-address"), css_class="col-md-1", ), Div( Field("floor", readonly=True, css_class="autofilled-address"), css_class="col-md-1", ), Div( Field("door", readonly=True, css_class="autofilled-address"), css_class="col-md-1", ), Div( Field("zipcode", readonly=True, css_class="autofilled-address"), css_class="col-md-2", ), Div( Field("city", readonly=True, css_class="autofilled-address"), css_class="col-md-5", ), Div( Field("placename", readonly=True, css_class="autofilled-address"), css_class="col-md-5", ), Hidden("dawa_id", "", id="id_dawa_id"), css_class="row", ), ), Submit("submit", "Opret", css_class="btn-success"), )
def __init__(self, *args, **kwargs): super(CompareForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.layout = Layout( Row(HTML("""<h3> First Group</h3>""")), Div( #Fieldset( Field('fluid', wrapper_class='col-md-2', css_class='form-control'), Field('sex', wrapper_class='col-md-2', css_class='form-control'), Field('healthy', wrapper_class='col-md-2', css_class='form-control'), Field('extraction', wrapper_class='col-md-2', css_class='form-control'), Field('library', wrapper_class='col-md-2', css_class='form-control'), Field('exosome', wrapper_class='col-md-2', css_class='form-control'), css_class='form-row'), Row(HTML("""<h3> Second Group</h3>""")), Div( # Fieldset( Field('fluid2', wrapper_class='col-md-2', css_class='form-control'), Field('sex2', wrapper_class='col-md-2', css_class='form-control'), Field('healthy2', wrapper_class='col-md-2', css_class='form-control'), Field('extraction2', wrapper_class='col-md-2', css_class='form-control'), Field('library2', wrapper_class='col-md-2', css_class='form-control'), Field('exosome2', wrapper_class='col-md-2', css_class='form-control'), Field('RCfilter', wrapper_class='col-md-2', css_class='form-control'), ButtonHolder( # Submit('submit', 'RUN', css_class='btn btn-primary', onclick="alert('Neat!'); return true") Submit( 'submit', 'COMPARE', onclick= "$('#loadpage').show(); $('#divPageContent').hide();", css_class='btn btn-primary btn-form') # onsubmit="alert('Neat!'); return false") ), # ButtonHolder( # # Submit('submit', 'RUN', css_class='btn btn-primary', onclick="alert('Neat!'); return true") # Submit('submit', 'FILTER', onclick="$('#loadpage').show(); $('#divPageContent').hide();", # css_class='btn btn-primary btn-form') # # onsubmit="alert('Neat!'); return false") # ), css_class='form-row'))
def layout(self): return Layout(Field("export_type"), )
def __init__(self, *args, **kwargs): # needed because HTML template string below =( translations = { 'projects_in_this_site': _('Projects in this Site'), 'project_name': _('Project Name'), 'program': _('Program'), 'activity_code': _('Activity Code'), 'view': _('View'), } # get the user object from request to check user permissions self.request = kwargs.pop('request') self.helper = FormHelper() self.helper.form_method = 'post' self.helper.form_class = '' self.helper.label_class = '' self.helper.field_class = '' self.helper.form_error_title = 'Form Errors' self.helper.error_text_inline = True self.helper.help_text_inline = True self.helper.html5_required = True submit_section = Div() if self.request.has_write_access: submit_section = Div( FormActions( Submit('submit', _('Save changes'), css_class=''), Reset('reset', _('Reset'), css_class='') ), css_class='form-actions', ) # Organize the fields in the site profile form using a layout class self.helper.layout = Layout( HTML("""<br/>"""), TabHolder( Tab(_('Profile'), Fieldset(_('Description'), 'name', 'type','status', ), Fieldset(_('Contact Info'), 'contact_leader', 'date_of_firstcontact', 'contact_number', 'num_members', ), ), Tab(_('Location'), Fieldset(_('Places'), 'country', Field('latitude', step="any"), Field('longitude', step="any"), ), Fieldset(_('Map'), 'map', ), ), Tab(_('Demographic Information'), Fieldset(_('Households'), 'total_num_households','avg_household_size', 'male_0_5', 'female_0_5', 'male_6_9', 'female_6_9', 'male_10_14', 'female_10_14','male_15_19', 'female_15_19', 'male_20_24', 'female_20_24', 'male_25_34', 'female_25_34', 'male_35_49', 'female_35_49', 'male_over_50', 'female_over_50', 'total_population', ), Fieldset(_('Land'), 'classify_land','total_land','total_agricultural_land','total_rainfed_land','total_horticultural_land', 'populations_owning_land', 'avg_landholding_size', 'households_owning_livestock','animal_type' ), Fieldset(_('Literacy'), 'literate_males','literate_females','literacy_rate', ), Fieldset(_('Demographic Info Data Source'), 'info_source' ), ), ), submit_section, ) super(SiteProfileForm, self).__init__(*args, **kwargs) if not self.request.has_write_access: for name, field in self.fields.items(): field.disabled = True #override the office queryset to use request.user for country countries = ( self.request.user.tola_user.managed_countries.all() | Country.objects.filter(id__in=self.request.user.tola_user.programaccess_set.filter(role='high').values('country_id')) ).distinct() self.fields['date_of_firstcontact'].label = _("Date of First Contact") self.fields['approved_by'].queryset = TolaUser.objects.filter(country__in=countries).distinct() self.fields['filled_by'].queryset = TolaUser.objects.filter(country__in=countries).distinct() self.fields['country'].queryset = countries
def layout(self): return Layout( Field("after", css_class="datetimepicker"), Field("before", css_class="datetimepicker"), )
def __init__(self, *args, **kwargs): self._user = kwargs.pop( 'user', None) # When the form is created to visualise user is not needed # user is used when saving comments at the moment self._project = kwargs.pop('project') super().__init__(*args, **kwargs) self._comment_form = None if self.instance and self.instance.id: self.comment_prefix = f'comment-invoice-{self.instance.id}' self.comments = self.instance.comments() self.comment_count = len(self.comments) self.comments_save_text = 'Save Invoices' self._comment_form = CommentForm( form_action=reverse('logged-proposal-evaluation-comment-add', kwargs={'pk': self.instance.id}), category_queryset=self.instance.comment_object( ).category_queryset(), prefix=CommentForm.FORM_NAME, form_tag=False, fields_required=False) self.fields.update(self._comment_form.fields) self.fields['installment'].queryset = Installment.objects.filter( project=self._project).order_by('id') XDSoftYearMonthDayPickerInput.set_format_to_field( self.fields['due_date']) XDSoftYearMonthDayPickerInput.set_format_to_field( self.fields['sent_for_payment_date']) XDSoftYearMonthDayPickerInput.set_format_to_field( self.fields['received_date']) XDSoftYearMonthDayPickerInput.set_format_to_field( self.fields['paid_date']) self.fields['can_be_deleted'] = forms.CharField(initial=1, required=False) installment_url = reverse( 'logged-grant_management-installments-update', kwargs={'project': self._project.id}) self.fields['installment'].help_text = f'Select the installment to which this invoice is assigned. ' \ f'<a href="{installment_url}">Create an installment</a> if the one you ' \ f'require does not exist' message = '' if self.instance: if self.instance.invoicecomment_set.exists(): self.fields['can_be_deleted'].initial = 0 message = 'This invoice cannot be removed because it has comments.' if self.instance.paid_date is not None: self.fields['can_be_deleted'].initial = 0 message = '''<strong>This invoice has been paid and can no longer be changed. To edit any of the fields, delete the date paid, click on <em>Save Invoices</em> and come back to the invoices page.</strong>''' field_names_to_disable = [ 'due_date', 'received_date', 'sent_for_payment_date', 'file', 'amount', 'installment' ] if 'allow_overbudget' in self.fields: field_names_to_disable.append('allow_overbudget') for field_name in field_names_to_disable: self.fields[field_name].disabled = True self.helper = FormHelper() self.helper.form_tag = False # It's included in the main formset, it avoids problems when adding new invoices and the jquery.formset.js self.helper.disable_csrf = True divs = [ Div(Div('id', hidden=True), Div(Field('DELETE', hidden=True)), Div('can_be_deleted', hidden=True, css_class='can_be_deleted'), css_class='row', hidden=True), Div(Div(HTML(f'<h4>{self.title()}</h4>'), css_class='col-12'), css_class='row'), Div(Div('installment', css_class='col-4'), Div(HTML(html_message(message)), css_class='col-8 to-delete'), css_class='row'), Div(Div('due_date', css_class='col-4'), Div('received_date', css_class='col-4'), Div('file', css_class='col-4'), css_class='row'), Div(Div('amount', css_class='col-4'), Div('sent_for_payment_date', css_class='col-4'), Div('paid_date', css_class='col-4'), css_class='row') ] self._add_allow_overbudget_checkbox(divs) if self._comment_form: divs += Div( HTML( '{% include "comments/_accordion-comment-list-fields-for-new.tmpl" %}' )) self.helper.layout = Layout(*divs)
def layout(self): return Layout( Field("title"), Field("value"), Field("is_hidden"), FormActions(Submit("submit", "Add", css_class="btn-primary"), ))
def __init__(self, *args, **kwargs): super(ContentForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = 'content-wrapper' self.helper.form_method = 'post' self.helper.layout = Layout( Field('title'), Field('description'), Field('tags'), Field('type'), Field('image'), Field('introduction', css_class='md-editor'), Field('conclusion', css_class='md-editor'), Field('last_hash'), Field('licence'), Field('subcategory', template='crispy/checkboxselectmultiple.html'), HTML(_(u"<p>Demander de l'aide à la communauté !<br>" u"Si vous avez besoin d'un coup de main, " u"sélectionnez une ou plusieurs catégories d'aide ci-dessous " u"et votre contenu apparaîtra alors sur <a href=" u"\"{% url \"content:helps\" %}\" " u"alt=\"aider les auteurs\">la page d'aide</a>.</p>")), Field('helps'), Field('msg_commit'), ButtonHolder( StrictButton('Valider', type='submit'), ), ) if 'type' in self.initial: self.helper['type'].wrap( Field, disabled=True)
def __init__(self, *args, **kwargs): super(ProfileRequestEditForm, self).__init__(*args, **kwargs) self.fields.pop('captcha') self.fields.keyOrder = self.ORDERED_FIELDS + [k for k in self.fields.keys() if k not in self.ORDERED_FIELDS] self.helper = FormHelper() self.helper.layout = Layout( Fieldset('Editting Profile Request', Div( Field('first_name', css_class='form-control'), css_class='form-group' ), Div( Field('middle_name', css_class='form-control'), css_class='form-group' ), Div( Field('last_name', css_class='form-control'), css_class='form-group' ), Div( Field('organization', css_class='form-control'), css_class='form-group' ), Div( Field('org_type', css_class='form-control'), css_class='form-group' ), Fieldset('Academe', Div( Field('request_level', css_class='form-control'), css_class='form-group' ), Div( Field('funding_source', css_class='form-control'), css_class='form-group' ), Field('is_consultant'), css_class='academe-fieldset', ), Div( Field('organization_other', css_class='form-control'), css_class='form-group' ), Div( Field('location', css_class='form-control'), css_class='form-group' ), Div( Field('email', css_class='form-control'), css_class='form-group' ), Div( Field('contact_number', css_class='form-control'), css_class='form-group' ), Div( Field('additional_remarks', css_class='form-control'), css_class='form-group' ), ) )