• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python validators.optional函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中wtforms.validators.optional函数的典型用法代码示例。如果您正苦于以下问题:Python optional函数的具体用法?Python optional怎么用?Python optional使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了optional函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: formfield_from_modelfield

def formfield_from_modelfield(field):
    field_type = field.__class__.__name__.lower()
    opts = {
        'validators': []
    }

    default = getattr(field, 'default', odis.EMPTY)

    if field_type == 'relfield':
        opts['queryset'] = field.model.obj.all()

    if is_coll_field(field):
        opts['validators'].append(validators.optional())
    elif default != odis.EMPTY or getattr(field, 'nil', False):
        opts['validators'].append(validators.optional())
    else:
        opts['validators'].append(validators.required())

    if default != odis.EMPTY:
        opts['default'] = default

    if getattr(field, 'choices', False):
        opts['choices'] = field.choices

    opts['label'] = field.verbose_name or field.name

    if 'choices' in opts:
        form_field = fields.SelectField
        #opts['coerce'] = field.to_python
    else:
        form_field = fields_table[field_type]

    return form_field(**opts)
开发者ID:simonz05,项目名称:flask-odis,代码行数:33,代码来源:forms.py


示例2: test_optional

 def test_optional(self):
     self.assertEqual(optional()(self.form, DummyField("foobar", raw_data=["foobar"])), None)
     self.assertRaises(StopValidation, optional(), self.form, DummyField("", raw_data=[""]))
     self.assertRaises(StopValidation, optional(), self.form, DummyField(" ", raw_data=[" "]))
     self.assertEqual(optional().field_flags, ("optional",))
     f = DummyField("", ["Invalid Integer Value"], raw_data=[""])
     self.assertEqual(len(f.errors), 1)
     self.assertRaises(StopValidation, optional(), self.form, f)
     self.assertEqual(len(f.errors), 0)
开发者ID:pierce403,项目名称:hashbounty,代码行数:9,代码来源:validators.py


示例3: test_optional

 def test_optional(self):
     self.assertEqual(optional()(self.form, DummyField('foobar', raw_data=['foobar'])), None)
     self.assertRaises(StopValidation, optional(), self.form, DummyField('', raw_data=['']))
     self.assertRaises(StopValidation, optional(), self.form, DummyField(' ', raw_data=[' ']))
     self.assertEqual(optional().field_flags, ('optional', ))
     f = DummyField('', ['Invalid Integer Value'], raw_data=[''])
     self.assertEqual(len(f.errors), 1)
     self.assertRaises(StopValidation, optional(), self.form, f)
     self.assertEqual(len(f.errors), 0)
开发者ID:kiorky,项目名称:WTForms,代码行数:9,代码来源:validators.py


示例4: build_questionnaire

def build_questionnaire(form, data=None):
    fields = {'groups': []}
    fields['participant'] = StringField(
        u'Participant',
        filters=[partial(filter_participants, form)],
        validators=[validators.required()])

    for group in form.groups:
        groupspec = (group.name, [])

        for field in group.fields:
            # if the field has options, create a list of choices
            if field.options:
                choices = [(v, k) for k, v in field.options.iteritems()]

                if field.allows_multiple_values:
                    fields[field.name] = IntegerSplitterField(
                        field.name,
                        choices=choices,
                        description=field.description,
                        validators=[validators.optional()],
                    )
                else:
                    fields[field.name] = SelectField(
                        field.name,
                        choices=choices,
                        coerce=int,
                        description=field.description,
                        validators=[validators.optional()],
                        widget=widgets.TextInput()
                    )
            else:
                if form.form_type == 'CHECKLIST':
                    fields[field.name] = IntegerField(
                        field.name,
                        description=field.description,
                        validators=[
                            validators.optional(),
                            validators.NumberRange(min=field.min_value,
                                                   max=field.max_value)]
                    )
                else:
                    fields[field.name] = IntegerField(
                        field.name,
                        description=field.description,
                        validators=[validators.optional()]
                    )

        fields['groups'].append(groupspec)

    form_class = type('QuestionnaireForm', (BaseQuestionnaireForm,), fields)


    return form_class(data)
开发者ID:nditech,项目名称:elections,代码行数:54,代码来源:forms.py


示例5: load_filters

    def load_filters(cls, filters):
        '''Load Filter Fields
            Init a filter form using filter settings

        arguments:
            filters: a dict list with information to form a filter
            with format for each item:
                0. id: unique english name for field
                1. name: always same as the colums name to be filtered
                2. type: using following types
                            - str:  this type will only be used for search
                            - float:  this type will only be filtered
                                      with a min and max val
                            - date:  this type will only be filtered with
                                     an earliest date and a latest date

        throw a INVALID_FILTER_FORMAT error when filters not obey this rule
        '''
        must_keys = ('id', 'name', 'type')

        # check if filters' format is correct
        for item in filters:
            for mk in must_keys:
                if mk not in item.keys():
                    raise AppError('INVALID_FILTER_FORMAT')

        # init the filter
        for item in filters:
            if item['type'] == 'str':
                setattr(cls, item['id'], TextField(item['name']))
            if item['type'] == 'float':
                setattr(cls,
                        '{}_min'.format(item['id']),
                        DecimalField('min value of {}'.format(item['name']),
                                     [validators.optional()]))
                setattr(cls,
                        '{}_max'.format(item['id']),
                        DecimalField('max value of {}'.format(item['name']),
                                     [validators.optional()]))
            if item['type'] == 'date':
                setattr(cls,
                        '{}_earlier'.format(item['id']),
                        DateField('earlier {}'.format(item['name']),
                                  [validators.optional()]))
                setattr(cls,
                        '{}_later'.format(item['id']),
                        DateField('later {}'.format(item['name']),
                                  [validators.optional()]))
开发者ID:Larryrun80,项目名称:iqg_stats_new,代码行数:48,代码来源:forms.py


示例6: field_factory

def field_factory(attr):
        kwargs = defaultdict(list)
        kwargs['id'] = attr.name
        kwargs['label'] = attr.comment
        if attr.in_key: kwargs['validators'].append(required())
        if attr.nullable or attr.default is not None:
            kwargs['validators'].append(optional())
        if attr.type.startswith('int'):
            return wtf.IntegerField(**kwargs)
        elif attr.type == 'double' or attr.type == 'float':
            return wtf.FloatField(**kwargs)
        elif attr.type.startswith('varchar'):
            ml = int(attr.type.split('(')[-1][:-1])
            return wtf.StringField(**kwargs) # TODO: can I specify a max length here?
        elif attr.type == 'date':
            kwargs['validators'].append(date_validator)
            return wtf.DateField(format='%Y-%m-%d', default=datetime.date.today(), **kwargs)
        elif attr.type.startswith('enum'):
            choices = [(e[1:-1],e[1:-1]) for e in attr.type[attr.type.find('(')+1:attr.type.rfind(')')].split(',')]
            return wtf.SelectField(choices=choices, **kwargs)
        elif attr.type.startswith('char'):
            l = int(attr.type.split('(')[-1][:-1])
            kwargs['validators'].append(len_validator_factory(l))
            return wtf.StringField(**kwargs) # TODO: can I specify a max length here?
        elif attr.type == 'timestamp':
            return wtf.DateTimeField(format='%Y-%m-%d %H:%M', default=datetime.datetime.today(), **kwargs)
        else:
            raise NotImplementedError('FieldFactory does not know what to do with %s' % (attr.type))
开发者ID:datajoint,项目名称:djwebtools,代码行数:28,代码来源:forms.py


示例7: scaffold_form

    def scaffold_form(self):
        class NewForm(Form):
            pass

        if self.create_form_class is None:
            return NewForm

        for field in self.create_form_class.DESCRIPTOR.fields:

            if self.form_excluded_columns and field.name in self.form_excluded_columns:
                continue

            field_type = field.type

            if field_type == 11:  # Todo: handle "message" type, which is a nested object
                continue

            FormClass = wtforms_type_map[field_type]
            description = self.swagger['definitions'][
                'lnrpc' + self.create_form_class.__name__]['properties'][
                field.name]
            description = description.get('title') or description.get(
                'description')
            if description:
                description = description.replace('/ ', '')
            form_field = FormClass(field.name,
                                   default=field.default_value or None,
                                   description=description,
                                   validators=[validators.optional()]
                                   )
            setattr(NewForm, field.name, form_field)
        return NewForm
开发者ID:yzernik,项目名称:bitcoin-lightning-docker,代码行数:32,代码来源:lnd_model_view.py


示例8: convert

    def convert(self, column):
        kwargs = {
            'label': column.info.get('label', column.name),
            'description': column.description,
            'validators': [],
            'default': column.default and column.default.arg
        }
        
        if column.info.get('optional', False):
            kwargs['validators'].append(validators.optional())
        elif not column.nullable:
            kwargs['validators'].append(validators.required())
        
        if hasattr(column.type, 'length') and column.type.length is not None:
            kwargs['validators'].append(validators.length(max=column.type.length))
        
        fname = type(column.type).__name__

        if len(column.foreign_keys) > 0:
            return self.conv_ForeignKey(kwargs, column)

        if fname in self.SIMPLE_CONVERSIONS:
            return self.SIMPLE_CONVERSIONS[fname](**kwargs)
        else:
            mod = getattr(self, 'conv_%s' % fname, None)
            if mod is not None:
                return mod(kwargs, column)
开发者ID:passy,项目名称:rdreilib,代码行数:27,代码来源:wtfalchemy.py


示例9: __init__

 def __init__(self, **kwargs):
     defaults = dict(
         icon='calendar',
         validators=[optional()],
         widget_classes="form-control"
     )
     defaults.update(kwargs)
     super(Date, self).__init__(**defaults)
开发者ID:SCOAP3,项目名称:invenio,代码行数:8,代码来源:date.py


示例10: __init__

 def __init__(self, **kwargs):
     warnings.warn("Field has been deprecated", PendingDeprecationWarning)
     defaults = dict(icon='flag',
                     export_key='language',
                     validators=[optional()],
                     widget_classes="form-control")
     defaults.update(kwargs)
     super(LanguageField, self).__init__(**defaults)
开发者ID:david-caro,项目名称:inspire-next,代码行数:8,代码来源:language.py


示例11: client_global_edit

def client_global_edit(client_id, dev_id):
    with app.db.session_scope():
        dev = app.db.get_device(dev_id)
        known_items = {}
        class F(Form):
            pass
        for item in dev["parameters"]:
            item = dev["parameters"][item]
            default = item["value"]
            arguments = [Required()]
            # keep track of the known fields
            known_items[item["key"]] = {u"id": item["id"], u"type": item["type"]}
            # build the field
            if item["type"] == "boolean":
                if default == 'y' or default == 1 or default == True: # in db value stored in lowcase
                    default = True
                else:
                    default = False
                field = BooleanField(item["key"], [validators.optional()], default=default) # set to optional field due to WTForm BooleanField return no data for false value (HTML checkbox)
            elif item["type"] == "integer":
                field = IntegerField(item["key"], arguments, default=default)
            elif item["type"] == "float":
                field = DateTimeField(item["key"], arguments, default=default)
            else:
                # time, email, ipv4, ipv6, url
                field = TextField(item["key"], arguments, default=default)
            # add the field
            setattr(F, "{0}-{1}".format(item["id"], item["key"]), field)
        form = F()
        if request.method == 'POST' and form.validate():
            for key, item in known_items.iteritems():
                val = getattr(form, "{0}-{1}".format(item["id"], key)).data
                if item["type"] == "boolean":
                    if val == False:
                        val = 'n' # in db value stored in lowcase
                    else:
                        val = 'y' # in db value stored in lowcase
                app.db.udpate_device_param(item["id"], value=val)
            return redirect("/client/{0}/dmg_devices/known".format(client_id))
            pass
        else:
                return render_template('client_global.html',
                form = form,
                clientid = client_id,
                client_detail = get_client_detail(client_id),
                mactive="clients",
                active = 'devices',
                device = dev)
开发者ID:Nico0084,项目名称:domogik,代码行数:48,代码来源:clients.py


示例12: test_optional

    def test_optional(self):
        self.assertEqual(optional()(self.form, DummyField('foobar', raw_data=['foobar'])), None)
        self.assertRaises(StopValidation, optional(), self.form, DummyField('', raw_data=['']))
        self.assertEqual(optional().field_flags, ('optional', ))
        f = DummyField('', ['Invalid Integer Value'], raw_data=[''])
        self.assertEqual(len(f.errors), 1)
        self.assertRaises(StopValidation, optional(), self.form, f)
        self.assertEqual(len(f.errors), 0)

        # Test for whitespace behavior.
        whitespace_field = DummyField(' ', raw_data=[' '])
        self.assertRaises(StopValidation, optional(), self.form, whitespace_field)
        self.assertEqual(optional(strip_whitespace=False)(self.form, whitespace_field), None)
开发者ID:ahmerkureishi,项目名称:wtforms,代码行数:13,代码来源:validators.py


示例13: test_optional

    def test_optional(self):
        self.assertEqual(optional()(self.form, DummyField("foobar", raw_data=["foobar"])), None)
        self.assertRaises(StopValidation, optional(), self.form, DummyField("", raw_data=[""]))
        self.assertEqual(optional().field_flags, ("optional",))
        f = DummyField("", ["Invalid Integer Value"], raw_data=[""])
        self.assertEqual(len(f.errors), 1)
        self.assertRaises(StopValidation, optional(), self.form, f)
        self.assertEqual(len(f.errors), 0)

        # Test for whitespace behavior.
        whitespace_field = DummyField(" ", raw_data=[" "])
        self.assertRaises(StopValidation, optional(), self.form, whitespace_field)
        self.assertEqual(optional(strip_whitespace=False)(self.form, whitespace_field), None)
开发者ID:carriercomm,项目名称:dpxdt,代码行数:13,代码来源:validators.py


示例14: convert

    def convert(self, field):
        kwargs = {
            'label': field.verbose_name,
            'description': field.help_text,
            'validators': [],
            'default': field.default,
        }
        if field.blank:
            kwargs['validators'].append(validators.optional())
        if field.max_length is not None and field.max_length > 0:
            kwargs['validators'].append(validators.length(max=field.max_length))

        fname = type(field).__name__

        if field.choices:
            kwargs['choices'] = field.choices
            return f.SelectField(**kwargs)
        elif fname in self.SIMPLE_CONVERSIONS:
            return self.SIMPLE_CONVERSIONS[fname](**kwargs)
        else:
            m = getattr(self, 'conv_%s' % fname, None)
            if m is not None:
                return m(kwargs, field)
开发者ID:B-Rich,项目名称:crashkit,代码行数:23,代码来源:orm.py


示例15: __init__


#.........这里部分代码省略.........
                    ('.3%', '".3%" | 1234543.210%'),
                    ('.4r', '".4r" | 12350'),
                    ('.3f', '".3f" | 12345.432'),
                    ('+,', '"+," | +12,345.4321'),
                    ('$,.2f', '"$,.2f" | $12,345.43'),
                ],
                "description": _("D3 format syntax for numbers "
                            "https: //github.com/mbostock/\n"
                            "d3/wiki/Formatting")
            }),
            'row_limit': (FreeFormSelectField, {
                "label": _('Row limit'),
                "default": config.get("ROW_LIMIT"),
                "choices": self.choicify(
                    [10, 50, 100, 250, 500, 1000, 5000, 10000, 50000])
            }),
            'limit': (FreeFormSelectField, {
                "label": _('Series limit'),
                "choices": self.choicify(self.series_limits),
                "default": 50,
                "description": _(
                    "Limits the number of time series that get displayed")
            }),
            'rolling_type': (SelectField, {
                "label": _("Rolling"),
                "default": 'None',
                "choices": [(s, s) for s in ['None', 'mean', 'sum', 'std', 'cumsum']],
                "description": _(
                    "Defines a rolling window function to apply, works along "
                    "with the [Periods] text box")
            }),
            'rolling_periods': (IntegerField, {
                "label": _("Periods"),
                "validators": [validators.optional()],
                "description": _(
                    "Defines the size of the rolling window function, "
                    "relative to the time granularity selected")
            }),
            'series': (SelectField, {
                "label": _("Series"),
                "choices": group_by_choices,
                "default": default_groupby,
                "description": _(
                    "Defines the grouping of entities. "
                    "Each serie is shown as a specific color on the chart and "
                    "has a legend toggle")
            }),
            'entity': (SelectField, {
                "label": _("Entity"),
                "choices": group_by_choices,
                "default": default_groupby,
                "description": _("This define the element to be plotted on the chart")
            }),
            'x': (SelectField, {
                "label": _("X Axis"),
                "choices": datasource.metrics_combo,
                "default": default_metric,
                "description": _("Metric assigned to the [X] axis")
            }),
            'y': (SelectField, {
                "label": _("Y Axis"),
                "choices": datasource.metrics_combo,
                "default": default_metric,
                "description": _("Metric assigned to the [Y] axis")
            }),
            'size': (SelectField, {
开发者ID:digideskio,项目名称:caravel,代码行数:67,代码来源:forms.py


示例16: __init__

 def __init__(self, viz):
     self.viz = viz
     from panoramix.viz import viz_types
     viz = self.viz
     datasource = viz.datasource
     default_metric = datasource.metrics_combo[0][0]
     default_groupby = datasource.groupby_column_names[0]
     group_by_choices = [(s, s) for s in datasource.groupby_column_names]
     # Pool of all the fields that can be used in Panoramix
     self.field_dict = {
         'viz_type': SelectField(
             'Viz',
             default='table',
             choices=[(k, v.verbose_name) for k, v in viz_types.items()],
             description="The type of visualization to display"),
         'metrics': SelectMultipleField(
             'Metrics', choices=datasource.metrics_combo,
             default=[default_metric],
             description="One or many metrics to display"),
         'metric': SelectField(
             'Metric', choices=datasource.metrics_combo,
             default=default_metric,
             description="One or many metrics to display"),
         'groupby': SelectMultipleField(
             'Group by',
             choices=self.choicify(datasource.groupby_column_names),
             description="One or many fields to group by"),
         'granularity': TextField(
             'Time Granularity', default="one day",
             description=(
                 "The time granularity for the visualization. Note that you "
                 "can type and use simple natural language as in '10 seconds', "
                 "'1 day' or '56 weeks'")),
         'since': TextField(
             'Since', default="7 days ago", description=(
                 "Timestamp from filter. This supports free form typing and "
                 "natural language as in '1 day ago', '28 days' or '3 years'")),
         'until': TextField('Until', default="now"),
         'row_limit':
             SelectField(
                 'Row limit',
                 default=config.get("ROW_LIMIT"),
                 choices=self.choicify(self.row_limits)),
         'limit':
             SelectField(
                 'Series limit',
                 choices=self.choicify(self.series_limits),
                 default=50,
                 description=(
                     "Limits the number of time series that get displayed")),
         'rolling_type': SelectField(
             'Rolling',
             default='mean',
             choices=[(s, s) for s in ['mean', 'sum', 'std']],
             description=(
                 "Defines a rolling window function to apply")),
         'rolling_periods': IntegerField(
             'Periods',
             validators=[validators.optional()],
             description=(
             "Defines the size of the rolling window function, "
             "relative to the 'granularity' field")),
         'series': SelectField(
             'Series', choices=group_by_choices,
             default=default_groupby,
             description=(
                 "Defines the grouping of entities. "
                 "Each serie is shown as a specific color on the chart and "
                 "has a legend toggle")),
         'entity': SelectField('Entity', choices=group_by_choices,
             default=default_groupby,
             description="This define the element to be plotted on the chart"),
         'x': SelectField(
             'X Axis', choices=datasource.metrics_combo,
             default=default_metric,
             description="Metric assigned to the [X] axis"),
         'y': SelectField('Y Axis', choices=datasource.metrics_combo,
             default=default_metric,
             description="Metric assigned to the [Y] axis"),
         'size': SelectField(
                 'Bubble Size',
                 default=default_metric,
                 choices=datasource.metrics_combo),
         'where': TextField('Custom WHERE clause', default=''),
         'compare_lag': TextField('Comparison Period Lag',
             description="Based on granularity, number of time periods to compare against"),
         'compare_suffix': TextField('Comparison suffix',
             description="Suffix to apply after the percentage display"),
         'markup_type': SelectField(
             "Markup Type",
             choices=self.choicify(['markdown', 'html']),
             default="markdown",
             description="Pick your favorite markup language"),
         'rotation': SelectField(
             "Rotation",
             choices=[(s, s) for s in ['random', 'flat', 'square']],
             default="random",
             description="Rotation to apply to words in the cloud"),
         'line_interpolation': SelectField(
             "Line Interpolation",
#.........这里部分代码省略.........
开发者ID:mindis,项目名称:panoramix,代码行数:101,代码来源:forms.py


示例17: vytvor_formular_pre_manazovanie_studentov

def vytvor_formular_pre_manazovanie_studentov(studenti_predmetu):
	class F(Form):
		pass

	count=0
	
	for student_predmetu in studenti_predmetu:

		#konecna znamka
		setattr(F, 'select0_%d'%count, SelectField(student_predmetu.student.user.priezvisko,
	                                    validators=[validators.optional()],
	                                    choices=[('A', 'A'), ('B', 'B'), ('C', 'C'),
	                                     ('D', 'D'), ('E', 'E'), ('FX', 'FX'),
	                                     ('n/a', 'n/a')],
	                                     default=student_predmetu.konecna_znamka if student_predmetu.konecna_znamka is not None else 'FX'))
		setattr(F, 'body_za_semester_%d'%count, TextField("", validators=[validators.optional()], 
								default=student_predmetu.body_za_semester if student_predmetu.body_za_semester is not None else 0))

		setattr(F, 'select1_%d'%count, SelectField(student_predmetu.student.user.priezvisko,
	                                    validators=[validators.optional()],
	                                    choices=[('A', 'A'), ('B', 'B'), ('C', 'C'),
	                                     ('D', 'D'), ('E', 'E'), ('FX', 'FX'),
	                                     ('n/a', 'n/a')],
	                                     default=student_predmetu.znamka1 if student_predmetu.znamka1 is not None else 'FX'))
		setattr(F, 'poznamka1_%d'%count, TextField("", validators=[validators.optional()],default=student_predmetu.poznamka1))
		setattr(F, 'datum1_%d'%count, TextField("", validators=[validators.optional()],
			default=student_predmetu.datum1.strftime("%x") if student_predmetu.datum1 else ""))


		setattr(F, 'select2_%d'%count, SelectField(student_predmetu.student.user.priezvisko,
	                                    validators=[validators.optional()],
	                                    choices=[('A', 'A'), ('B', 'B'), ('C', 'C'),
	                                     ('D', 'D'), ('E', 'E'), ('FX', 'FX'),
	                                     ('n/a', 'n/a')],
	                                     default=student_predmetu.znamka2 if student_predmetu.znamka2 is not None else 'FX'))
		setattr(F, 'poznamka2_%d'%count, TextField("", validators=[validators.optional()],default=student_predmetu.poznamka2))
		setattr(F, 'datum2_%d'%count, TextField("", validators=[validators.optional()],
			default=student_predmetu.datum2.strftime("%x") if student_predmetu.datum2 else ""))


		setattr(F, 'select3_%d'%count, SelectField(student_predmetu.student.user.priezvisko,
	                                    validators=[validators.optional()],
	                                    choices=[('A', 'A'), ('B', 'B'), ('C', 'C'),
	                                     ('D', 'D'), ('E', 'E'), ('FX', 'FX'),
	                                     ('n/a', 'n/a')],
	                                     default=student_predmetu.znamka3 if student_predmetu.znamka3 is not None else 'FX'))
		setattr(F, 'poznamka3_%d'%count, TextField("", validators=[validators.optional()],default=student_predmetu.poznamka3))
		setattr(F, 'datum3_%d'%count, TextField("", validators=[validators.optional()],
			default=student_predmetu.datum3.strftime("%x") if student_predmetu.datum3 else ""))

		count +=1
	return F()
开发者ID:gaucan,项目名称:exams,代码行数:52,代码来源:views.py


示例18: client_global_edit

def client_global_edit(client_id, dev_id):
    with app.db.session_scope():
        dev = app.db.get_device(dev_id)
        known_items = {}
        class F(Form):
            pass
        for item in dev["parameters"]:
            item = dev["parameters"][item]
            default = item["value"]
            arguments = [InputRequired()]
            # keep track of the known fields
            known_items[item["key"]] = {u"id": item["id"], u"type": item["type"]}
            # build the field
            if item["type"] == "boolean":
                if default == 'y' or default == 1 or default == True: # in db value stored in lowcase
                    #default = True
                    default = 'y'
                else:
                    #default = False
                    default = 'n'
                #field = BooleanField(item["key"], [validators.optional()], default=default) # set to optional field due to WTForm BooleanField return no data for false value (HTML checkbox)
                field = RadioField( item["key"], 
                                [validators.optional()],
                                choices=[('y', 'Yes'), ('n', 'No')], default=default
                              )
            elif item["type"] == "integer":
                field = IntegerField(item["key"], arguments, default=default)
            elif item["type"] == "datetime":
                field = DateTimeField(item["key"], arguments, default=default)
            elif item["type"] == "float":
                field = FloatField(item["key"], arguments, default=default)
            else:
                # time, email, ipv4, ipv6, url
                field = TextField(item["key"], arguments, default=default)
            # add the field
            setattr(F, "{0}-{1}".format(item["id"], item["key"]), field)
        form = F()
        if request.method == 'POST' and form.validate():
            for key, item in known_items.items():
                val = getattr(form, "{0}-{1}".format(item["id"], key)).data
                if item["type"] == "boolean":
                    if val == 'n':
                        val = 'n' # in db value stored in lowcase
                    else:
                        val = 'y' # in db value stored in lowcase
                cli = MQSyncReq(app.zmq_context)
                msg = MQMessage()
                msg.set_action('deviceparam.update')
                msg.add_data('dpid', item["id"])
                msg.add_data('value', val)
                res = cli.request('dbmgr', msg.get(), timeout=10)
                if res is not None:
                    data = res.get_data()
                    if data["status"]:
                        flash(gettext("Param update succesfully"), 'success')
                    else:
                        flash(gettext("Param update failed"), 'warning')
                        flash(data["reason"], 'danger')
                else:
                    flash(gettext("DbMgr did not respond on the deviceparam.update, check the logs"), 'danger')
            return redirect("/client/{0}/dmg_devices/known".format(client_id))
            pass
        else:
                return render_template('client_global.html',
                form = form,
                clientid = client_id,
                client_detail = get_client_detail(client_id),
                mactive="clients",
                active = 'devices',
                device = dev)
开发者ID:domogik,项目名称:domogik,代码行数:70,代码来源:clients.py


示例19: generate_submission_edit_form_class

def generate_submission_edit_form_class(form):
    form_fields = {}
    STATUS_CHOICES = (
        ('', _('Unmarked')),
        ('confirmed', _('Confirmed')),
        ('rejected', _('Rejected')),
        ('citizen', _('Citizen Report')),
    )
    WITNESS_CHOICES = (
        ('', _('Unspecified')),
        ('witnessed', _('I witnessed the incident')),
        ('after', _('I arrived just after the incident')),
        ('reported', _('The incident was reported to me by someone else')),
    )

    form_fields['contributor'] = CustomModelSelectField(
        _('Participant'),
        allow_blank=True,
        blank_text=_('Participant'),
        widget=widgets.HiddenInput(),
        validators=[validators.optional()],
        model=Participant,
        queryset=participants.find()
        )

    form_fields['location'] = CustomModelSelectField(
        _('Location'),
        allow_blank=True,
        blank_text=_('Location'),
        widget=widgets.HiddenInput(),
        model=Location,
        queryset=locations.find()
        )

    for index, group in enumerate(form.groups):
        for field in group.fields:
            if field.options:
                choices = [(v, k) for k, v in field.options.iteritems()]

                if field.allows_multiple_values:
                    form_fields[field.name] = SelectMultipleField(
                        field.name,
                        choices=choices,
                        coerce=int,
                        description=field.description,
                        validators=[validators.optional()],
                        option_widget=widgets.CheckboxInput(),
                        widget=widgets.ListWidget()
                    )
                else:
                    form_fields[field.name] = IntegerField(
                        field.name,
                        description=field.description,
                        validators=[
                            validators.optional(),
                            validators.AnyOf([v for v, k in choices])],
                        widget=widgets.TextInput()
                    )
            else:
                if form.form_type == 'CHECKLIST':
                    form_fields[field.name] = IntegerField(
                        field.name,
                        description=field.description,
                        validators=[
                            validators.optional(),
                            validators.NumberRange(min=field.min_value,
                                                   max=field.max_value)]
                    )
                else:
                    form_fields[field.name] = BooleanField(
                        field.name,
                        description=field.description,
                        filters=[lambda data: 1 if data else None],
                        validators=[validators.optional()]
                    )

    if form.form_type == 'INCIDENT':
        form_fields['status'] = SelectField(
            choices=STATUS_CHOICES,
            filters=[lambda data: data if data else None],
            validators=[validators.optional()]
        )
        form_fields['witness'] = SelectField(
            choices=WITNESS_CHOICES,
            validators=[validators.optional()]
        )
        form_fields['description'] = StringField(
            widget=widgets.TextArea()
        )

    return type(
        'SubmissionEditForm',
        (WTSecureForm,),
        form_fields
    )
开发者ID:JamesMura,项目名称:elections,代码行数:95,代码来源:forms.py


示例20: __init__


#.........这里部分代码省略.........
             description=(
                 "Timestamp from filter. This supports free form typing and "
                 "natural language as in '1 day ago', '28 days' or '3 years'")),
         'until': FreeFormSelectField('Until', default="now",
             choices=self.choicify([
                 'now',
                 '1 day ago',
                 '7 days ago',
                 '28 days ago',
                 '90 days ago',
                 '1 year ago'])
             ),
         'row_limit':
             SelectField(
                 'Row limit',
                 default=config.get("ROW_LIMIT"),
                 choices=self.choicify(self.row_limits)),
         'limit':
             SelectField(
                 'Series limit',
                 choices=self.choicify(self.series_limits),
                 default=50,
                 description=(
                     "Limits the number of time series that get displayed")),
         'rolling_type': SelectField(
             'Rolling',
             default='None',
             choices=[(s, s) for s in ['None', 'mean', 'sum', 'std', 'cumsum']],
             description=(
                 "Defines a rolling window function to apply, works along "
                 "with the [Periods] text box")),
         'rolling_pe 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python validators.regexp函数代码示例发布时间:2022-05-26
下一篇:
Python validators.length函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap