コード例 #1
0
class TrainingExperienceFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(TrainingExperienceFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('name', css_class='col-md-4'),
                Div('organization_name', css_class='col-md-4'),
                Div('start_date', css_class='col-md-2'),
                Div('end_date', css_class='col-md-2'),
                css_class='row'
            ),
            Div(
                Div('content', css_class='col-md-12'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=TRAINING_EXPERIENCE_FORMS_PREFIX)
コード例 #2
0
class WorkExperienceFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(WorkExperienceFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('company_name', css_class='col-md-5'),
                Div('position', css_class='col-md-3'),
                Div('start_date', css_class='col-md-2'),
                Div('end_date', css_class='col-md-2'),
                css_class='row'
            ),
            Div(
                Div('resignation_reason', css_class='col-md-12'),
                css_class='row'
            ),
            Div(
                Div('description', css_class='col-md-12'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=WORK_EXPERIENCE_FORMS_PREFIX)
コード例 #3
0
class SalaryFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(SalaryFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('salary_level', css_class='col-md-4'),
                Div('salary_proportion', css_class='col-md-4'),
                Div('actual_salary', css_class='col-md-2'),
                css_class='row'
            ),
            Div(
                Div('gross_salary', css_class='col-md-2', function='jisuan'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=SALARY_FORMS_PREFIX)
コード例 #4
0
class ProjectFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(ProjectFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('name', css_class='col-md-8'),
                Div('start_date', css_class='col-md-2'),
                Div('end_date', css_class='col-md-2'),
                css_class='row'
            ),
            Div(
                Div('technology', css_class='col-md-12'),
                css_class='row'
            ),
            Div(
                Div('description', css_class='col-md-12'),
                css_class='row'
            ),
            Div(
                Div('responsibility', css_class='col-md-12'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden='true'
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=PROJECT_FORMS_PREFIX)
コード例 #5
0
ファイル: forms.py プロジェクト: utkbansal/gharonda-old
class TowerHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(TowerHelper, self).__init__(*args, **kwargs)
        self.form_tag = False
        self.add_input(
            Submit("add-tower", "Add Tower", css_class='btn-block',
                   css_id='add-tower'))
        self.add_input(
            Submit('project-details', 'Submit', css_class='btn-block',
                   css_id='submit-project-details')
        )
        self.disable_csrf = True
        self.layout = Layout(
            Fieldset(
                'Tower Info',
                Div(
                    'name',
                    css_class='col-md-6',
                    style='padding-left:0px'),
                Div(
                    'floors_completed',
                    css_class='col-md-6',
                    style='padding-right:0px'),
                Div('finishing_status',
                    'other_status',
                    css_class='col-md-12',
                    style='padding:0px'),
                Div(
                    'image',
                    css_class='col-md-12',
                    style='padding:0% 0% 5% 0%'
                ))
        )
        self.layout.extend(['DELETE'])
コード例 #6
0
ファイル: forms.py プロジェクト: utkbansal/gharonda-old
class DeveloperProjectHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(DeveloperProjectHelper, self).__init__(*args, **kwargs)
        self.form_tag = False
        self.add_input(
            Submit("add-project", "Add Project", css_class='btn-block',
                   css_id='add-project'))
        self.add_input(Submit("builder-details", "Save", css_class='btn-block',
                              css_id='submit-builder-details'))
        self.disable_csrf = True
        self.layout = Layout(
            'project_name',
            Div(
                Field('launch_date', css_class='month-year'),
                css_class='col-md-6',
                style='padding-left:0px'
            ),
            Div(
                Field('possession_date', css_class='month-year'),
                css_class='col-md-6',
                style='padding-right:0px'
            ),
            'developer',

        )
        self.layout.extend(['DELETE'])
コード例 #7
0
class DailyReportFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(DailyReportFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('header', css_class='col-md-4'),
                Div('create_time', css_class='col-md-4'),
                css_class='row'
            ),
            Div(
                Div('report_content', css_class='col-md-2'),
                Div('assess', css_class='col-md-4'),
                css_class='row'
            ),
            Div(
                Div('score', css_class='col-md-2'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=DAILYREPORT_FORMS_PREFIX)
コード例 #8
0
class RegularMeetingFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(RegularMeetingFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('title', css_class='col-md-4'),
                Div('specker', css_class='col-md-4'),
                Div('participant', css_class='col-md-2'),
                Div('meeting_time', css_class='col-md-4'),
                Div('enclosure', css_class='col-md-2'),
                css_class='row'
            ),
            Div(
                Div('main_content', css_class='col-md-2'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=REGULARMETTING_FORMS_PREFIX)
コード例 #9
0
class CardFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(CardFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('number', css_class='col-md-6'),
                Div('bank_name', css_class='col-md-6'),
                css_class='row'
            ),
            Div(
                Div('branch_name', css_class='col-md-6'),
                Div('phone', css_class='col-md-6'),
                css_class='row'
            ),
            Div(Div('is_default', css_class='col-md-12'), css_class='row'),
            Div(Div('remark', css_class='col-md-12'), css_class='row'),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )

        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=CARD_FORMS_PREFIX)
コード例 #10
0
class EducationFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(EducationFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('school', css_class='col-md-8'),
                Div('major', css_class='col-md-4'),
                css_class='row'
            ),
            Div(
                Div('education', css_class='col-md-3'),
                Div('education_type', css_class='col-md-3'),
                Div('start_date', css_class='col-md-3'),
                Div('end_date', css_class='col-md-3'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=EDUCATION_FORMS_PREFIX)
コード例 #11
0
ファイル: forms.py プロジェクト: joshbrooks/timordata
class UpdateSuggestionHelper(FormHelper):

    def __init__(self, suggestion = None, url = None, description=None, *args, **kwargs):
        try:
            super(UpdateSuggestionHelper, self).__init__(*args, **kwargs)
            #  TODO: Assert that the model to be changed is the same as the instance
            submit_url = None
            name = None

            instance = suggestion.primary.instance

            if url:
                submit_url = kwargs.get('url')
            if instance:
                meta = instance._meta
                app, mod, name = meta.app_label, meta.model_name, meta.verbose_name

                if instance.pk and not submit_url:
                    submit_url = '/rest/{}/{}/{}/'.format(app, mod, instance.pk)

            if suggestion and not submit_url:

                if suggestion.state != 'A':

                    model = suggestion.primary.retrieve_model
                    i = model()
                    app, mod, name = i._meta.app_label, i._meta.model_name, i._meta.verbose_name
                    submit_url = '{}_{}_/'.format(suggestion.url, suggestion.pk)

                else:
                    submit_url = suggestion.url

            else:
                if not submit_url:
                    submit_url = suggestion.url+ 'ERROR - might not be a primary instance?'

            self.attrs = {'action': '/suggest/suggest/'}
            self.form_method = 'POST'
            self.layout = Layout(
                Hidden('_method', 'PATCH'),
                Hidden('_url', submit_url),
                Hidden('_action', 'UM'),
                Hidden('_description', kwargs.get('description') or 'Modify a {} in the database'.format(name)),
                Hidden('_affected_instance_primary', 'suggest_suggest {}'.format(suggestion.pk)),
                Hidden('_next', '/suggest/#object=_suggestion_'),
                manyfieldlayout(instance),
                Layout(*[Hidden('__nochange', f) for f in kwargs.get('nochange', [])]),
                # HTML('''<div class="alert alert-{}" role="alert">{}</div>'''.format('info', 'UpdateSuggestionHelper loaded successfully'))
            )

        except Exception, e:
            super(UpdateSuggestionHelper, self).__init__(*args, **kwargs)
            self.layout = Layout()
            self.layout.extend([HTML('''<div class="alert alert-{}" role="alert">{}</div>'''.format('warning', e.message))])
            self.layout.extend([HTML('''<div class="alert alert-{}" role="alert">{}</div>'''.format('warning', 'UpdateSuggestionHelper'))])
            raise
コード例 #12
0
ファイル: forms.py プロジェクト: joshbrooks/timordata
class MessageFormHelper(FormHelper):
    '''
    Returns a FormHelper with a bootstrap message
    :return:
    '''
    def __init__(self, message, cssclass="warning", *args, **kwargs):
        #  Possible cssclass values for bootstrap are success, info, warning, and danger
        super(MessageFormHelper, self).__init__(*args, **kwargs)
        self.layout = Layout()
        self.layout.extend([HTML('''<div class="alert alert-{}" role="alert">{}</div>'''.format(cssclass, message))])
コード例 #13
0
ファイル: forms.py プロジェクト: joshbrooks/timordata
class UpdateFormHelper(FormHelper):

    def __init__(self, instance=None, suggestion=None, url=None, description=None, *args, **kwargs):

        try:

            super(UpdateFormHelper, self).__init__()

            if hasattr(instance, '_meta') and hasattr(instance, 'pk'):
                app = instance._meta.app_label
                mod = instance._meta.model_name
                pk = getattr(instance, 'pk')
                name = instance._meta.verbose_name
                aip = Hidden('_affected_instance_primary', '{}_{} {}'.format(app, mod, pk))

            elif hasattr(suggestion, 'primary') and hasattr(suggestion, 'pk'):
                app, mod = suggestion.primary.model_name.split('_')
                name = "suggestion"
                pk = '_%s_'%(getattr(suggestion, 'pk'))
                instance = "suggestion"
                aip = Hidden('_affected_instance_primary', '{}_{} {}'.format('suggest', 'suggest', getattr(suggestion, 'pk')))

            else:
                raise AssertionError('Supply either a Suggestion or a model instance')

            if not description:
                description = kwargs.get('description', 'Modify a {} ({}) in the database'.format(name, instance))

            submit_url = url or '/rest/{}/{}/{}/'.format(app, mod, pk)

            self.attrs = {'action': '/suggest/suggest/'}
            self.form_method = 'POST'
            self.form_tag = True
            self.layout = Layout(
                Hidden('_method', 'PATCH'),
                Hidden('_url', submit_url),
                Hidden('_action', 'UM'),
                Hidden('_description', description),
                Hidden('__formtype', "Update Form"),
                manyfieldlayout(instance),
                aip)

        except Exception, e:
            super(UpdateFormHelper, self).__init__()
            self.layout = Layout()
            self.layout.extend([HTML('''<div class="alert alert-{}" role="alert">{}</div>'''.format('warning', e.message))])
            raise
コード例 #14
0
class TimeSheetFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(TimeSheetFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False
        self.layout = Layout(
            Div(
                Div('work_project', css_class='col-md-3'),
                Div('year', css_class='col-md-3'),
                Div('month', css_class='col-md-3'),
                Div('time_percentage', css_class='col-md-3'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-danger btn-block btn-delete'),
        )
        # 将每一个表单加入‘user’、‘id’两个隐藏标签,使得button“添加”表单成功
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=TIMESHEET_FORMS_PREFIX)
コード例 #15
0
class CertificationFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(CertificationFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('name', css_class='col-md-6'),
                Div('remark', css_class='col-md-6'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden='true'
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=CERTIFICATION_FORMS_PREFIX)
コード例 #16
0
class SkillFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(SkillFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('level', css_class='col-md-2'),
                Div('content', css_class='col-md-10'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden='true'
            )
        )
        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=SKILL_FORMS_PREFIX)
コード例 #17
0
class ContactFormSetHelper(FormHelper):
    def __init__(self, *args, **kwargs):
        super(ContactFormSetHelper, self).__init__(*args, **kwargs)
        self.form_tag = False

        self.layout = Layout(
            Div(
                Div('name', css_class='col-md-3'),
                Div('relationship', css_class='col-md-3'),
                Div('organization', css_class='col-md-3'),
                Div('telephone', css_class='col-md-3'),
                css_class='row'
            ),
            Button('button', '删除', css_class='btn btn-outline-danger btn-block btn-delete'),
            Div(
                Div('DELETE'),
                css_class='row',
                hidden="true"
            )
        )

        self.layout.extend(['user', 'id'])
        self.all().wrap_together(Div, css_class=CONTACT_FORMS_PREFIX)
コード例 #18
0
ファイル: crispy.py プロジェクト: thomasrosnet/waves-core
class FormHelper(CrispyFormHelper, WFormHelper):
    """
    Extended WFormHelper based on crispy WFormHelper,
    Dynamic form fields according to inputs types and parameters
    """

    # TODO Created dedicated field for (copy_paste field)

    def __init__(self, form=None, **kwargs):
        form_tag = kwargs.pop('form_tag', True)
        form_class = kwargs.pop('form_class', 'form-horizontal')
        label_class = kwargs.pop('label_class', 'col-lg-4')
        field_class = kwargs.pop('field_class', 'col-lg-8 text-left')
        template_pack = kwargs.pop('template_pack',
                                   waves_settings.TEMPLATE_PACK)
        self.form_obj = form
        super(FormHelper, self).__init__(form)
        self.form_tag = form_tag
        self.form_class = form_class
        self.label_class = label_class
        self.field_class = field_class
        self.render_unmentioned_fields = False
        self.layout = Layout()
        self.template_pack = template_pack

    def set_layout(self, service_input, form=None):
        """
        Setup crispy form for a submission
        """
        css_class = ""
        field_id = "id_" + service_input.api_name
        dependent_on = ""
        dependent_4_value = ""
        has_sample = isinstance(
            service_input,
            FileInput) and service_input.input_samples.count() > 0
        has_dependent = service_input.dependents_inputs.count() > 0

        if has_dependent or has_sample:
            css_class = "has_dependent"

        field_dict = dict(
            css_class=css_class,
            id=field_id,
            title=service_input.help_text,
        )
        wrapper = dict()
        if service_input.parent is not None and not isinstance(
                service_input, FileInputSample):
            field_id += '_' + service_input.parent.api_name + '_' + service_input.api_name
            dependent_on = service_input.parent.api_name
            dependent_4_value = service_input.when_value
            field_dict.update(
                dict(dependent_on=service_input.parent.api_name,
                     dependent_4_value=str(service_input.when_value)))
            when_value = self.form_obj.data.get(service_input.parent.api_name,
                                                service_input.parent.default)
            if when_value is None:
                when_value = False
            hide_dep = service_input.when_value_python != when_value
            if when_value is not None:
                if type(service_input.when_value_python) is int:
                    hide_dep = (service_input.when_value_python !=
                                int(when_value))
                    print "hide dep", hide_dep, when_value, service_input.when_value_python
                elif type(service_input.when_value_python) is Decimal:
                    hide_dep = (service_input.when_value_python != Decimal(
                        when_value.strip(' "')))
                elif type(service_input.when_value_python) is bool:
                    bool_value = str(when_value).lower() in ("yes", "true",
                                                             "t", "1")
                    hide_dep = (service_input.when_value_python != bool_value)

            if hide_dep:
                wrapper = dict(wrapper_class="hid_dep_parameter",
                               disabled="disabled")
            else:
                wrapper = dict(wrapper_class="dis_dep_parameter")
        # file inputs
        if isinstance(service_input, FileInput):
            all_sample = []
            if has_sample:
                for sample in service_input.input_samples.all():
                    all_sample.append(
                        Field('sp_' + service_input.api_name + '_' +
                              str(sample.pk),
                              dependent_on=service_input.api_name,
                              dependent_4_value=dependent_4_value,
                              **wrapper))
            field_dict.update(wrapper)
            input_field = Div(Field(service_input.api_name, **field_dict),
                              *all_sample)

            if service_input.allow_copy_paste:
                cp_input_field = Field('cp_' + service_input.api_name,
                                       css_id='id_' + 'cp_' +
                                       service_input.api_name)
                tab_input = bootstrap.Tab("File Upload",
                                          input_field,
                                          css_id='tab_' +
                                          service_input.api_name)
                self.layout.append(
                    Div(bootstrap.TabHolder(
                        tab_input,
                        bootstrap.Tab(
                            "Copy/paste content",
                            cp_input_field,
                            css_class='copypaste',
                            css_id='tab_cp_' + service_input.api_name,
                            dependent_on=dependent_on,
                            dependent_4_value=dependent_4_value,
                        ),
                        css_id='tab_holder_' + service_input.api_name,
                    ),
                        id='tab_pane_' + service_input.api_name,
                        css_class=wrapper['wrapper_class'],
                        dependent_on=dependent_on,
                        dependent_4_value=dependent_4_value))

            else:
                self.layout.append(input_field)
        elif not isinstance(service_input, FileInputSample):
            field_dict.update(wrapper)
            input_field = Field(service_input.api_name, **field_dict)
            self.layout.append(input_field)
        if isinstance(
                service_input, FileInput
        ) and not service_input.allow_copy_paste and service_input.input_samples.count(
        ) > 0:
            for sample in service_input.input_samples.all():
                self.layout.append(
                    Field('sp_' + service_input.api_name + '_' +
                          str(sample.pk)))

    def init_layout(self, fields):
        l_fields = []
        for field in fields:
            l_fields.append(Field(field))
        self.layout = Layout()
        self.layout.extend(l_fields)
        return self.layout

    def end_layout(self):
        self.layout.extend([
            HTML('<HR/>'),
            bootstrap.FormActions(Reset('reset', 'Reset form'),
                                  Submit('save', 'Submit a job'))
        ])