Пример #1
0
    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'
            ),
        )
Пример #2
0
 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',
             ),
         ),
     )
Пример #3
0
 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)
Пример #4
0
 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">""" + \
                             """&#8593;</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))
Пример #5
0
 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"))
Пример #6
0
 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)
Пример #7
0
    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 ''
                })
Пример #8
0
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)
Пример #9
0
    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)
Пример #10
0
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
Пример #11
0
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'),
        )
    )
Пример #12
0
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()
Пример #13
0
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'),
        )
    )
Пример #14
0
    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'
            ),
        )
Пример #15
0
 def layout(self):
     return Layout(Field("description", css_class="input-xlarge"), )
Пример #16
0
 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',
         ))
Пример #17
0
 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")))
Пример #18
0
 def __init__(self, *args, **kwargs):
     super(DisabledProjectAccessForm, self).__init__(*args, **kwargs)
     self.helper.layout[0] = Field('access_control', disabled=True)
Пример #19
0
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>
            """),
    )
Пример #20
0
    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
Пример #21
0
    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
Пример #22
0
 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"),
     )
Пример #23
0
 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'))
Пример #24
0
 def layout(self):
     return Layout(Field("export_type"), )
Пример #25
0
    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
Пример #26
0
 def layout(self):
     return Layout(
         Field("after", css_class="datetimepicker"),
         Field("before", css_class="datetimepicker"),
     )
Пример #27
0
    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)
Пример #28
0
 def layout(self):
     return Layout(
         Field("title"), Field("value"), Field("is_hidden"),
         FormActions(Submit("submit", "Add", css_class="btn-primary"), ))
Пример #29
0
    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)
Пример #30
0
    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'
                ),
            )
        )