예제 #1
0
class DateTimeWithNumRunsForm(FlaskForm):
    # Date time and number of runs form for tree view, task duration
    # and landing times
    base_date = DateTimeField("Anchor date",
                              widget=DateTimePickerWidget(),
                              default=timezone.utcnow())
    num_runs = SelectField("Number of runs",
                           default=25,
                           choices=(
                               (5, "5"),
                               (25, "25"),
                               (50, "50"),
                               (100, "100"),
                               (365, "365"),
                           ))
예제 #2
0
class UserForm(ModelForm):
    """ Form used to manage users. """
    
    class Meta:
        model = User
        
    display_hash = TextField(validators=[Optional()], widget=widgets.HiddenInput())
    date_created = DateTimeField(validators=[Optional()])
    
    def populated_object(self):
        """ Returns a new model object populated with the form values. """
        
        user = User()
        self.populate_obj(user)
        return user
예제 #3
0
파일: forms.py 프로젝트: pd-Shah/ShortMe
class UpdateProfileForm(FlaskForm):
    def __init__(self, *args, **kwargs):
        super(UpdateProfileForm, self).__init__(*args, **kwargs)

    email = StringField(
        label="email",
        validators=[Email(), Length(1, 64)],
    )
    password = PasswordField(
        label="password",
        validators=[
            Length(0, 64),
        ],
    )
    name = StringField(label="name", validators=[
        Length(0, 64),
    ])
    family = StringField(label="family", validators=[
        Length(0, 64),
    ])
    username = StringField(label="username", validators=[
        Length(0, 64),
    ])
    photo = FileField(label="profile picture")
    role = SelectField(label="role", validate_choice=False)
    location = StringField(label="location")
    about_me = StringField(label="describe your self",
                           widget=TextArea(),
                           validators=[
                               Length(0, 256),
                           ])
    last_seen = DateTimeField(label="last seen")
    submit = SubmitField(label="Update", )

    def load_data(self, ):
        self.role.choices = [(role, role)
                             for i, role in enumerate(Role.query.all())]
        self.role.default = current_user.role
        self.process()
        self.email.data = current_user.email
        self.name.data = current_user.name
        self.family.data = current_user.family
        self.username.data = current_user.username
        self.photo.data = current_user.photo
        self.location.data = current_user.location
        self.about_me.data = current_user.about_me
        self.last_seen.data = current_user.last_seen
예제 #4
0
파일: forms.py 프로젝트: frnsys/taozi
class PostForm(FlaskForm):
    slug = TextField('Slug')
    title = TextField('Title', [InputRequired()])
    subtitle = TextField('Subtitle')
    desc = TextField('Description', [InputRequired()])
    body = TextAreaField('Body')
    tags = TextField('Tags')
    redirect = URLField('Redirect URL')
    published = BooleanField('Published')
    published_at = DateTimeField('Published At', [InputRequired()], format='%Y-%m-%d %H:%M')
    print_only = BooleanField('Print Only')
    authors = QuerySelectMultipleField('Authors', query_factory=lambda: Author.query.all(),
                                       get_label='name')
    issue = QuerySelectField('Issue', query_factory=lambda: Issue.query.all(),
                             get_label='name')
    image = QuerySelectField('Image', query_factory=lambda: Media.query.all(),
                             get_label='desc')
예제 #5
0
class SignupForm(FlaskForm):
    AVAILABLE_STATUSES = [(SubscriberUser.Status.NOT_ACTIVE, 'Not active'),
                          (SubscriberUser.Status.ACTIVE, 'Active'),
                          (SubscriberUser.Status.TRIAL_FINISHED,
                           'Trial finished'),
                          (SubscriberUser.Status.BANNED, 'Banned')]

    email = StringField(lazy_gettext(u'Email:'),
                        validators=[
                            InputRequired(),
                            Email(message=lazy_gettext(u'Invalid email')),
                            Length(max=30)
                        ])
    password = PasswordField(
        lazy_gettext(u'Password:'******'Country:'),
                          coerce=str,
                          validators=[InputRequired()],
                          choices=constants.AVAILABLE_COUNTRIES)
    language = SelectField(lazy_gettext(u'Language:'),
                           coerce=str,
                           default=constants.DEFAULT_LOCALE,
                           choices=constants.AVAILABLE_LOCALES_PAIRS)
    status = SelectField(lazy_gettext(u'Status:'),
                         coerce=SubscriberUser.Status.coerce,
                         validators=[InputRequired()],
                         choices=AVAILABLE_STATUSES)
    exp_date = DateTimeField(default=SubscriberUser.MAX_DATE)
    apply = SubmitField(lazy_gettext(u'Sign Up'))

    def make_entry(self) -> SubscriberUser:
        return self.update_entry(SubscriberUser())

    def update_entry(self, subscriber: SubscriberUser) -> SubscriberUser:
        subscriber.email = self.email.data
        subscriber.password = SubscriberUser.make_md5_hash_from_password(
            self.password.data)
        subscriber.country = self.country.data
        subscriber.language = self.language.data
        subscriber.status = self.status.data
        subscriber.exp_date = self.exp_date.data
        return subscriber
예제 #6
0
class VodBaseStreamForm:
    AVAILABLE_VOD_TYPES = [(constants.VodType.VODS, 'VODS'),
                           (constants.VodType.SERIES, 'SERIES')]

    vod_type = SelectField(lazy_gettext(u'Vod type:'),
                           validators=[InputRequired()],
                           choices=AVAILABLE_VOD_TYPES,
                           coerce=constants.VodType.coerce)

    description = StringField(lazy_gettext(u'Description:'), validators=[])
    preview_icon = StringField(lazy_gettext(u'Preview:'),
                               validators=[
                                   InputRequired(),
                                   Length(min=constants.MIN_URL_LENGTH,
                                          max=constants.MAX_URL_LENGTH)
                               ])
    trailer_url = StringField(lazy_gettext(u'Trailer URL:'),
                              validators=[
                                  InputRequired(),
                                  Length(min=constants.MIN_URL_LENGTH,
                                         max=constants.MAX_URL_LENGTH)
                              ])
    user_score = FloatField(
        lazy_gettext(u'User score:'),
        validators=[InputRequired(),
                    NumberRange(min=0, max=100)])
    prime_date = DateTimeField(lazy_gettext(u'Prime time:'),
                               validators=[InputRequired()],
                               default=VodBasedStream.MIN_DATE)
    country = StringField(lazy_gettext(u'Country:'),
                          validators=[
                              InputRequired(),
                              Length(min=constants.MIN_COUNTRY_LENGTH,
                                     max=constants.MAX_COUNTRY_LENGTH)
                          ])
    duration = IntegerField(lazy_gettext(u'Duration in (msec):'),
                            validators=[
                                InputRequired(),
                                NumberRange(
                                    min=0,
                                    max=VodBasedStream.MAX_DURATION_MSEC)
                            ])
예제 #7
0
파일: forms.py 프로젝트: imfht/flaskapps
class JamDetailsForm(Form):
    title = TextField("Title", validators=[Required(), Length(max=128)])
    theme = TextField("Theme", validators=[Length(max=128)])
    team_limit = IntegerField("Team size limit",
                              validators=[NumberRange(min=0)])
    start_time = DateTimeField("Start time",
                               format="%Y-%m-%d %H:%M",
                               validators=[Required()])

    registration_duration = IntegerField("Registration duration",
                                         validators=[
                                             Required(),
                                             NumberRange(min=0),
                                         ],
                                         default=14 * 24)
    packaging_duration = IntegerField("Packaging duration",
                                      validators=[
                                          Required(),
                                          NumberRange(min=0),
                                      ],
                                      default=24)
    rating_duration = IntegerField("Rating duration",
                                   validators=[
                                       Required(),
                                       NumberRange(min=0),
                                   ],
                                   default=24 * 5)
    duration = IntegerField("Duration",
                            validators=[
                                Required(),
                                NumberRange(min=0),
                            ],
                            default=24 * 2)

    description = TextAreaField("Description")
    restrictions = TextAreaField("Restrictions")
예제 #8
0
파일: forms.py 프로젝트: saadalmogren/FSND
class ShowForm(FlaskForm):
    artist_id = StringField('artist_id', validators=[DataRequired()])
    venue_id = StringField('venue_id', validators=[DataRequired()])
    start_time = DateTimeField('start_time',
                               validators=[DataRequired()],
                               default=datetime.today())
예제 #9
0
class DateTimeForm(Form):
    DateTime = DateTimeField(id='res_datetime')
예제 #10
0
class RegisterForm(FlaskForm):
    username = StringField(
        label="用户名",
        validators=[
            InputRequired(message="请输入用户名!")
        ],
        description="用户名",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入用户名!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        }
    )

    sex = RadioField(
        label="性别",
        choices=(('0', '男'), ('1', '女')),
        description="性别",
        render_kw={
            "class": "form-control",
            "placeholder": "请选择性别!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        },

    )

    pwd = PasswordField(
        label="密码",
        validators=[InputRequired(message="请输入密码!")],
        description="密码",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入密码!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        }
    )
    repwd = PasswordField(
        label="确认密码",
        validators=[InputRequired(message="请输入确认密码!"), EqualTo('pwd', message="两次密码不一致!")],
        description="确认密码",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入确认密码!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        }
    )
    email = StringField(
        label="邮箱",
        validators=[InputRequired(message="请输入邮箱!"), Email(message="邮箱格式不正确!")],
        description="邮箱",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入邮箱!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        }
    )
    name = StringField(
        label="姓名",
        validators=[InputRequired(message="请输入姓名!")],
        description="姓名",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入姓名!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        }
    )
    phone = StringField(
        label="手机号码",
        validators=[InputRequired(message="请输入手机号码!"), Regexp("1[3589]\\d{9}", message="手机号码格式不正确!")],
        description="手机号码",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入手机号码!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        }
    )
    sid = StringField(
        label="学号",
        validators=[InputRequired(message="请输入学号!")],
        description="学号",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入学号!",
            "required": 'required',  # 表示此项不能为空
            "autofocus": "autofocus",
        }
    )

    l_cls = [(cls.id, cls.name) for cls in db.session.query(Class).all()]

    cls = SelectField2(
        coerce=str,
        label="班级",
        validators=[DataRequired('请选择班级')],
        choices=tuple(l_cls),
        render_kw={
            'class': 'form-control',
            "placeholder": "请选择班级!",
            "required": 'required',  # 表示此项不能为空
        },
    )
    birthday = DateTimeField(
        label="生日",
        validators=[InputRequired(message="请选择生日!")],
        description="生日",
        render_kw={
            "class": "form-control",
            "placeholder": "请选择生日!",
            "autofocus": "autofocus",
        }
    )
    date_in = DateTimeField(
        label="入学时间",
        validators=[InputRequired(message="请选择入学时间!")],
        description="入学时间",
        render_kw={
            "class": "form-control",
            "placeholder": "请选择入学时间!",
            "autofocus": "autofocus",
        }
    )
    agree = BooleanField('是否同意服务条件和隐私策略!', [validators.InputRequired()])

    def validate_name(self, field):
        username = field.data
        user = Student.query.filter_by(username=username).count()
        if user == 1:
            raise ValidationError("用户名已经存在!")

    def validate_email(self, field):
        email = field.data
        user = Student.query.filter_by(email=email).count()
        if user == 1:
            raise ValidationError("邮箱已经存在!")

    def validate_phone(self, field):
        phone = field.data
        user = Student.query.filter_by(phone=phone).count()
        if user == 1:
            raise ValidationError("手机号码已经存在!")

    def validate_sid(self, field):
        sid = field.data
        user = Student.query.filter_by(id=sid).count()
        if user == 1:
            raise ValidationError("学号已经存在!")
예제 #11
0
class PreferenceForm(Form):
    start_date = DateTimeField('start', )
    end_date = DateTimeField('end', )
    money = IntegerField('money', )
    climate = StringField('climate', )
    place = StringField('place', )
예제 #12
0
class SaleForm(Form):
    uuid = StringField('uu-id', default='')
    user_email = StringField('user email')
    amount = FloatField('Amount', default=0.0)
    date = DateTimeField('Date', format='%Y-%m-%d %H:%M')
    canceled = BooleanField('Canceled', default=False)
예제 #13
0
class MakeupTimeForm(FlaskForm):
    '''这是补班时间表单'''
    teacher = StringField(label='教师',render_kw={'readonly':True})
    start = DateTimeField(label='起始时间',validators=[Required()],description='格式:2008-8-18 8:00:00,请以你自己所在时区为准')
    end = DateTimeField(label='结束时间',validators=[Required()],description='格式:2008-8-18 8:00:00,请以你自己所在时区为准')
    submit = SubmitField(label='提交')
예제 #14
0
파일: test_fields.py 프로젝트: xen/wtforms
 class F(Form):
     a = DateTimeField()
     b = DateTimeField(format="%Y-%m-%d %H:%M")
예제 #15
0
class DocumentView(AuthModelView):
    class DocumentUploadField(FileUploadField):
        def populate_obj(self, obj, name):
            pass  # handled by DocumentView.on_model_change

    def _delete_document(self, model):
        if model.has_file:
            source = document_path(model.id)
            if os.path.exists(source):
                dest = os.path.join(config.DOCUMENT_DIRECTORY, 'trash',
                                    str(model.id))
                while os.path.exists(dest + '.pdf'):
                    dest += 'lol'
                os.renames(source, dest + '.pdf')

    def on_form_prefill(self, form, id):
        form.form_validated.data = False
        doc = Document.query.get(id)
        if doc is not None:
            form.form_validated.data = doc.validated
            form.form_validation_time.data = doc.validation_time

    def delete_model(self, model):
        super().delete_model(model)
        self._delete_document(model)

    def on_model_change(self, form, model, is_created):
        if is_created:
            if bool(form.file.data) == form.no_file.data:
                raise ValidationError(
                    'Genau ein Feld von "Datei" oder "Keine Datei" muss angegeben werden.'
                )

        if model.id is None:
            sqla.session.flush()  # acquire ID

        if form.file.data:
            self._delete_document(model)  # delete old file
            save_file(model, form.file.data)

        if form.form_validated.data != model.validated:  # validation state changed
            if form.form_validated.data:
                model.validation_time = datetime.datetime.now()
            else:
                model.validation_time = None

        if model.validated and not model.has_barcode:
            if model.document_type != 'written':
                barcode.bake_barcode(model)
            config.document_validated(document_path(model.id))
            model.has_barcode = True  # this is the correct behaviour, although the has_barcode name does not indicate it

        super().on_model_change(form, model, is_created)

    list_template = 'document_list.html'
    # no number_of_pages, validated or submitted_by
    form_create_rules = [
        'document_type',
        'department',
        'lectures',
        'examinants',
        'date',
        'solution',
        'comment',
        'file',
        'no_file',
        'form_validated',
    ]
    form_edit_rules = [
        'document_type',
        'department',
        'lectures',
        UnvalidatedList('lectures', 'lecture.edit_view'),
        'examinants',
        UnvalidatedList('examinants', 'examinant.edit_view'),
        'date',
        'solution',
        'number_of_pages',
        'comment',
        'submitted_by',
        'file',
        'form_validated',
        'form_validation_time',
        ViewButton(),
    ]
    form_widget_args = {
        'form_validation_time': {
            'disabled': True,
            'readonly': True,
        },
    }
    form_excluded_columns = (
        'validation_time', 'has_file', 'legacy_id', 'printed_in', 'validated',
        'early_document_until'
    )  # this isn't strictly necessary, but it shuts up a warning
    form_extra_fields = {
        'file': DocumentUploadField(label='Datei'),
        'no_file': BooleanField(label='Keine Datei'),
        'form_validated': BooleanField(label='Überprüft'),
        'form_validation_time': DateTimeField(label='Überprüft am'),
    }
    form_args = {
        'comment': {
            'validators': [Optional()]
        },
        'number_of_pages': {
            'validators': [Optional()]
        },
    }
    column_list = ('id', 'department', 'lectures', 'examinants', 'date',
                   'number_of_pages', 'solution', 'comment', 'document_type',
                   'validation_time', 'submitted_by')
    column_filters = ('id', 'department', 'lectures', 'examinants', 'date',
                      'solution', 'comment', 'document_type',
                      'validation_time', 'submitted_by')
    column_labels = {
        'id': 'ID',
        'department': 'Fakultät',
        'lectures': 'Vorlesungen',
        'examinants': 'Prüfer',
        'date': 'Datum',
        'number_of_pages': 'Seiten',
        'solution': 'Lösung',
        'comment': 'Kommentar',
        'document_type': 'Typ',
        'validation_time': 'Überprüft am',
        'submitted_by': 'Von',
    }
    column_default_sort = ('date', True)

    doctype_labels = {
        'oral': 'Mündl.',
        'written': 'Schriftl.',
        'oral reexam': 'Nachprüfung',
        'mock exam': 'Probeklausur'
    }
    department_labels = {
        'computer science': 'Informatik',
        'mathematics': 'Mathematik',
        'other': 'Andere (Ergänzungsfach)',
    }

    def format_solution(v, c, model, n):
        if model.document_type == 'written':
            return {
                'official': 'Ja (offiziell)',
                'inofficial': 'Ja (Studi)',
                'none': 'Nein',
                None: '?',
            }[model.solution]
        return ''

    column_formatters = {
        'department':
        lambda v, c, m, n: DocumentView.department_labels[m.department],
        'document_type':
        lambda v, c, m, n: DocumentView.doctype_labels[m.document_type],
        'solution':
        format_solution,
        'date':
        _dateFormatter('date'),
    }
예제 #16
0
class SearchEventForm(FlaskForm):
    search_by_title = StringField('Search Title', validators=[Optional()])
    search_by_time_start = DateTimeField('Start From Time', format='%m/%d/%Y %H:%M:%S', validators=[Optional()], default=datetime.utcnow)
    search_by_time_end = DateTimeField('End From Time', format='%m/%d/%Y %H:%M:%S', validators=[Optional()])
    search_by_loc = StringField('Search Location', validators=[Optional()])
    submit = SubmitField('Search')
예제 #17
0
class DateTimeForm(FlaskForm):
    # Date filter form needed for task views
    execution_date = DateTimeField("Execution date",
                                   widget=AirflowDateTimePickerWidget())
예제 #18
0
class report_form(FlaskForm):
    hora_de = DateTimeField("De",
                            validators=[DataRequired("Campo obrigatório!")])
    submit = SubmitField("Cadastrar")
예제 #19
0
class ProduceForm(FlaskForm):
    name = StringField(u'产品', validators=[DataRequired()])
    num = IntegerField(u'数量', validators=[DataRequired()])
    date = DateTimeField(u'生产日期', validators=[DataRequired()])
    submit = SubmitField(u'生产')
예제 #20
0
파일: forms.py 프로젝트: frnsys/taozi
class EventForm(FlaskForm):
    start = DateTimeField('Start', [InputRequired()], format='%Y-%m-%d %H:%M')
    end = DateTimeField('End', format='%Y-%m-%d %H:%M')
    ignore_time = BooleanField('Ignore time')
    post = FormField(EventPostForm)
예제 #21
0
class AddDeployKeyForm(FlaskForm):
    name = StringField('name', validators=[InputRequired(), Length(4, 32)])
    expired_date = DateTimeField(format="%Y-%m-%dT%H:%M:%S.%fZ")
    submit_add_key = SubmitField('ADD')
예제 #22
0
class EntryEditFormOld(Form):
    """
    编辑 Entry 的表单
    """

    entry_type = SelectField(
        _("entry.entry_type"),
        default=0,
        description=
        u'类型:0-文章、1-快讯、2-代码、3-软件、4-讨论、5-问答、6-小贴士、7-图集、8-视频、9-音频、10-链接、11-引语、12-状态、13-文档、14-聊天、15-随笔',
        choices=[('0', _("Article")), ('1', _("News")), ('2', _("Code")),
                 ('3', _("Software")), ('4', _("Forum")), ('5', _("Question")),
                 ('6', _("Tips")), ('7', _("Gallery")), ('8', _("Video")),
                 ('9', _("Audio")), ('10', _("Link")), ('11', _("Quote")),
                 ('12', _("Status")), ('13', _("Document")), ('14', _("Chat")),
                 ('15', _("Aside")), ('16', _("Special"))],
        validators=[
            required(message=_("entry_type is required")),
        ])

    title = TextField(_("entry.title"),
                      description=u'标题',
                      validators=[
                          required(message=_("title is required")),
                          length(min=1,
                                 max=100,
                                 message=_("Length range: 1 - 100"))
                      ])

    slug = TextField(
        _("entry.slug"),
        description=u'固定地址',
        validators=[length(min=1, max=50, message=_("Length range: 1 - 50"))])

    source_type = SelectField(
        _("entry.source_type"),
        default=0,
        description=u'来源类型:0-原创、1-翻译、2-转帖',
        choices=[('0', _("Original content")), ('1', _("Translate content")),
                 ('2', _("Reprint content"))],
        validators=[
            required(message=_("source_type is required")),
        ])

    source_title = TextField(_("entry.source_title"),
                             description=u'来源标题',
                             validators=[
                                 length(min=1,
                                        max=100,
                                        message=_("Length range: 1 - 100"))
                             ])

    source_url = TextField(_("entry.source_url"),
                           description=u'来源地址',
                           validators=[
                               url(message=_("source_url is not a valid URL")),
                               length(min=11,
                                      max=200,
                                      message=_("Length range: 11 - 200"))
                           ])

    category_id = HiddenField(
        _("entry.category_id"),
        description=u'分类ID:0-未分类',
        validators=[
            required(message=_("category_id is required")),
        ])

    logo = TextField(_("entry.logo"),
                     description=u'图标',
                     validators=[
                         url(message=_("logo is not a valid URL")),
                         length(min=11,
                                max=100,
                                message=_("Length range: 11 - 100"))
                     ])

    feature_image = TextField(
        _("entry.feature_image"),
        description=u'特色图地址',
        validators=[
            url(message=_("feature_image is not a valid URL")),
            length(min=11, max=200, message=_("Length range: 11 - 200"))
        ])

    tags = TextField(_("entry.tags"),
                     description=u'标签',
                     validators=[
                         length(min=1,
                                max=512,
                                message=_("Length range: 1 - 512"))
                     ])

    content = TextAreaField(_("entry.content"),
                            description=u'内容',
                            validators=[
                                required(message=_("content is required")),
                            ])

    summary = TextAreaField(_("entry.summary"),
                            description=u'摘要',
                            validators=[
                                length(min=1,
                                       max=200,
                                       message=_("Length range: 1 - 200"))
                            ])

    on_portal = SelectField(_("entry.on_portal"),
                            default=0,
                            choices=[('0', u'否'), ('1', u'是')],
                            description=u'是否首页显示',
                            validators=[
                                required(message=_("on_portal is required")),
                            ])

    on_top = SelectField(_("entry.on_top"),
                         default=0,
                         choices=[('0', u'否'), ('1', u'是')],
                         description=u'是否置顶',
                         validators=[
                             required(message=_("on_top is required")),
                         ])

    comment_status = SelectField(
        _("entry.comment_status"),
        default=0,
        description=u'评论状态:0-允许、1-关闭',
        choices=[('0', u'允许'), ('1', u'关闭')],
        validators=[
            required(message=_("comment_status is required")),
        ])

    entry_status = SelectField(
        _("entry.entry_status"),
        default=0,
        description=u'内容状态:0-草稿、1-待审、2-发布',
        choices=[('0', u'草稿'), ('1', u'待审'), ('2', u'发布')],
        validators=[
            required(message=_("entry_status is required")),
        ])

    view_status = SelectField(
        _("entry.view_status"),
        default=0,
        description=u'显示状态:0-公开、1-私有、2-隐藏',
        choices=[('0', u'公开'), ('1', u'私有'), ('2', u'隐藏')],
        validators=[
            required(message=_("view_status is required")),
        ])

    scores = SelectField(_("entry.scores"),
                         default=0,
                         description=u'分数',
                         choices=[('0', u'未知'), ('1', u'1'), ('2', u'2'),
                                  ('3', u'2'), ('4', u'2'), ('5', u'2')],
                         validators=[
                             required(message=_("scores is required")),
                         ])

    difficulty = SelectField(_("entry.difficulty"),
                             default=0,
                             description=u'深浅度',
                             choices=[('0', u'容易'), ('1', u'一般'), ('2', u'难'),
                                      ('3', u'高深')],
                             validators=[
                                 required(message=_("difficulty is required")),
                             ])

    recommend = SelectField(_("entry.recommend"),
                            default=0,
                            description=u'推荐级别:0-默认(未推荐)、1-不错、2-良好、3-精华',
                            choices=[('0', u'未推荐'), ('1', u'不错'), ('2', u'良好'),
                                     ('3', u'精华')],
                            validators=[
                                required(message=_("recommend is required")),
                            ])
    principal_language = SelectField(
        _("entry.principal_language"),
        default=0,
        description=
        u'主体语言:1-Java 、    2-C/C++    3-Objective-C    4-PHP    5-Perl    6-Python    7-Ruby    8-C#    9-.NET    10-ASP    11-D语言    12-Groovy    13-Scala    14-JavaScript    15-HTML/CSS    16-ActionScript    17-VBScript    18-Delphi/Pascal    19-Basic    20-ErLang    21-COBOL    22-Fortran    23-Lua    24-SHELL    25-Smalltalk    26-汇编    27-Sliverlight    28-Lisp    29-Google Go',
        choices=[('0', u'其他'), ('1', u'Java'), ('2', u'C/C++'),
                 ('3', u'Objective-C'), ('4', u'PHP'), ('5', u'Perl'),
                 ('6', u'Python'),
                 ('7', u'Ruby'), ('8', u'C#'), ('9', u'.NET'), ('10', u'ASP'),
                 ('11', u'D语言'), ('12', u'Groovy'), ('13', u'Scala'),
                 ('14', u'JavaScript'), ('15', u'HTML/CSS'),
                 ('16', u'ActionScript'), ('17', u'VBScript'),
                 ('18', u'Delphi/Pascal'), ('19', u'Basic'), ('20', u'ErLang'),
                 ('21', u'COBOL'), ('22', u'Fortran'), ('23', u'Lua'),
                 ('24', u'SHELL'), ('25', u'Smalltalk'), ('26', u'汇编'),
                 ('27', u'Sliverlight'), ('28', u'Lisp'),
                 ('29', u'Google Go')],
        validators=[
            required(message=_("recommend is required")),
        ])

    license_agreement = SelectField(
        _("entry.license_agreement"),
        default=0,
        description=
        u'授权协议:1-GPL,2-LGPL,3-AGPL,4-Apache,5-MIT,6-BSD,7-EPL,8-MPL,0-其他',
        choices=[('0', u'其他'), ('1', u'GPL'), ('2', u'LGPL'), ('3', u'AGPL'),
                 ('4', u'Apache'), ('5', u'MIT'), ('6', u'BSD'), ('7', u'EPL'),
                 ('8', u'MPL')],
        validators=[
            required(message=_("recommend is required")),
        ])

    runtime_platform = SelectField(
        _("entry.runtime_platform"),
        default=0,
        description=
        u'运行平台: 1-Windows,2-Linux,3-BSD,4-UNIX,5-OS X,6-Symbian,7-J2ME,8-嵌入式,9-Android,10-iPhone/iPad/iPod,11-Windows Phone/Mobile,12-Meego,13-Moblin',
        choices=[('1', u'Windows'), ('2', u'Linux'), ('3', u'BSD'),
                 ('4', u'UNIX'), ('5', u'OS X'), ('6', u'Symbian'),
                 ('7', u'J2ME'), ('8', u'嵌入式'), ('9', u'Android'),
                 ('10', u'iPhone/iPad/iPod'), ('11', u'Windows Phone/Mobile'),
                 ('12', u'Meego'), ('13', u'Moblin')],
        validators=[
            required(message=_("recommend is required")),
        ])

    #文章排序:(置顶周期)		标题样式:
    scores = SelectField(_("entry.scores"),
                         default=0,
                         description=u'是否置顶',
                         choices=[('0', u'否'), ('1', u'是')],
                         validators=[
                             required(message=_("view_status is required")),
                         ])

    on_top_period = SelectField(
        _("entry.on_top_period"),
        default=7,
        description=u'置顶周期',
        choices=[('7', u'一周'), ('15', u'15天'), ('30', u'30天'), ('60', u'60天'),
                 ('90', u'90天')],
        validators=[
            required(message=_("on_top_period is required")),
        ])

    on_portal = SelectField(_("entry.on_portal"),
                            default=0,
                            description=u'是否首页显示',
                            choices=[('0', u'否'), ('1', u'是')],
                            validators=[
                                required(message=_("view_status is required")),
                            ])

    on_portal_period = SelectField(
        _("entry.on_portal_period"),
        default=7,
        description=u'首页显示周期',
        choices=[('7', u'一周'), ('15', u'15天'), ('30', u'30天'), ('60', u'60天'),
                 ('90', u'90天')],
        validators=[
            required(message=_("on_top_period is required")),
        ])

    #阅读权限:
    #     是否隐藏栏目(显示、隐藏)
    show_role = RadioField(_("entry.show_role"),
                           default='0',
                           choices=[('0', _("all")), ('10', _("member")),
                                    ('11', _("enthusiast")),
                                    ('12', _("mainstay")), ('13', _("senior")),
                                    ('100', _("partner")),
                                    ('1000', _("editor")),
                                    ('2000', _("moderator")),
                                    ('10000', _("supervisor")),
                                    ('10100', _("administrator"))],
                           description=u'能查看的角色:0-不限',
                           validators=[
                               required(message=_("word_group is required")),
                           ])

    #消费金币/银币
    consume_gold_cost = IntegerField(_("entry.consume_gold_cost"),
                                     default=0,
                                     description=u'消费金牌数',
                                     validators=[])

    consume_silver_cost = IntegerField(_("entry.consume_silver_cost"),
                                       default=0,
                                       description=u'消费银牌数',
                                       validators=[])

    #赏金金币/银币
    reward_gold_cost = IntegerField(_("entry.reward_gold_cost"),
                                    default=0,
                                    description=u'赏金(金牌)',
                                    validators=[])

    reward_silver_cost = IntegerField(_("entry.reward_silver_cost"),
                                      default=0,
                                      description=u'赏金(银牌)',
                                      validators=[])

    published_time = DateTimeField(
        _("entry.published_time"),
        default=sys_now(),
        description=u'发布时间',
        validators=[
            required(message=_("published_time is required")),
        ])

    def validate_slug(self, field):
        # unique
        if len(field.data) > 50:
            raise ValidationError, _("Slug must be less than 50 characters")

        #        slug = slugify(field.data) if field.data else slugify(self.title.data)[:50]
        #        posts = Posts.query.filter_by(slug=slug)
        #        if self.posts:
        #            posts = posts.filter(db.not_(Posts.id==self.posts.id))
        #        if posts.count():
        #            error = gettext("This slug is taken") if field.data else gettext("Slug is required")
        #            raise ValidationError, error
        pass

    def validate_tags(self, field):
        # 最多8个tag
        # 每个tag最长20个字符
        pass
예제 #23
0
class EditDeployKeyForm(FlaskForm):
    id = IntegerField()
    name = StringField(validators=[InputRequired(), Length(4, 32)])
    expired_date = DateTimeField(format="%Y-%m-%dT%H:%M:%S.%fZ")
    submid_edit_key = SubmitField('EDIT')
예제 #24
0
    def generate(model_class,
                 cn,
                 readonly_fields=default_readonly_fields,
                 freeze=False,
                 obj=None):
        class GeneratedForm(MasterForm):
            pass

        if model_class:
            for column in model_class.__table__.columns:
                _nullable = column.nullable
                _type = str(column.type)
                validators = []
                if not _nullable and column.name not in readonly_fields:
                    validators += [input_required()]
                render_kw = {}
                if freeze or column.name in readonly_fields:
                    render_kw['disabled'] = 'disabled'
                if column.foreign_keys:
                    # TODO multiple foreign keys
                    # TODO one key has multiple columns
                    # TODO when foreign key is readonly, validate always fails (bug)
                    parent_table_name = re.sub(
                        ".+'", '',
                        str(list(column.foreign_keys)[0]).split('.')[0])
                    _cls, _label = table_label_dict[parent_table_name]
                    choices = [('', '(choose)')] + [
                        (str(a), b) for a, b in cn.s.query(
                            _cls.id, getattr(_cls, _label)).limit(1000).all()
                    ]
                    setattr(
                        GeneratedForm, column.name,
                        SelectField(column.name,
                                    choices=choices,
                                    validators=validators,
                                    render_kw=render_kw))
                elif _type == 'BIGINT' or _type.find('INT') > -1:
                    setattr(
                        GeneratedForm, column.name,
                        IntegerField(column.name,
                                     validators=validators,
                                     render_kw=render_kw))
                elif _type.find('VARCHAR') > -1:
                    setattr(
                        GeneratedForm, column.name,
                        StringField(column.name,
                                    validators=validators,
                                    render_kw=render_kw))
                elif _type.find('TEXT') > -1:
                    setattr(
                        GeneratedForm, column.name,
                        TextAreaField(column.name,
                                      validators=validators,
                                      render_kw=render_kw))
                elif _type == 'DATETIME':
                    setattr(
                        GeneratedForm, column.name,
                        DateTimeField(column.name,
                                      validators=validators,
                                      render_kw=render_kw))
        return GeneratedForm(obj=obj)
예제 #25
0
class F(Form):
    a = DateTimeField()
    b = DateTimeField(format="%Y-%m-%d %H:%M")
    c = DateTimeField(format="%-m/%-d/%Y %-I:%M")
예제 #26
0
class MoneyEntryForm(FlaskForm):
    type = IntegerField(lazy_gettext(u'Type:'), default=MoneyEntry.Type.INCOME)
    date = DateTimeField(lazy_gettext(u'Date:'),
                         validators=[InputRequired()],
                         format=constants.DATE_JS_FORMAT,
                         default=datetime.now)
    category = SelectField(lazy_gettext(u'Category:'),
                           coerce=int,
                           validators=[InputRequired()])
    value = FloatField(lazy_gettext(u'Value:'),
                       validators=[
                           InputRequired(),
                           NumberRange(min=0.01,
                                       message=lazy_gettext(u'Invalid value'))
                       ],
                       default=1.00)
    currency = StringField(lazy_gettext(u'Currency:'),
                           validators=[InputRequired()],
                           default=constants.DEFAULT_CURRENCY)
    description = StringField(lazy_gettext(u'Description:'))
    recurring = SelectField(lazy_gettext(u'Recurring:'),
                            coerce=int,
                            validators=[InputRequired()],
                            choices=[(int(MoneyEntry.Recurring.SINGLE),
                                      lazy_gettext(u'Single')),
                                     (int(MoneyEntry.Recurring.EVERY_DAY),
                                      lazy_gettext(u'Every day')),
                                     (int(MoneyEntry.Recurring.EVERY_MONTH),
                                      lazy_gettext(u'Every month')),
                                     (int(MoneyEntry.Recurring.EVERY_YEAR),
                                      lazy_gettext(u'Every year'))],
                            default=MoneyEntry.Recurring.SINGLE)
    state = SelectField(lazy_gettext(u'State:'),
                        coerce=int,
                        validators=[InputRequired()],
                        choices=[(int(MoneyEntry.State.APPROVED),
                                  lazy_gettext(u'Approved')),
                                 (int(MoneyEntry.State.PENDING),
                                  lazy_gettext(u'Pending'))],
                        default=MoneyEntry.State.APPROVED)
    submit = SubmitField(lazy_gettext(u'Confirm'))

    def __init__(self, categories: list, **kwargs):
        super(MoneyEntryForm, self).__init__(**kwargs)
        self.category.choices = categories

    def make_entry(self):
        entry = MoneyEntry()
        return self.update_entry(entry)

    def update_entry(self, entry: MoneyEntry):
        entry.type = self.type.data
        entry.description = self.description.data
        entry.value = self.value.data
        entry.currency = self.currency.data

        category_pos = self.category.data
        categories = self.category.choices
        entry.category = categories[category_pos][1]

        date = self.date.data
        entry.date = utils.stable_date(date)

        recurring_pos = self.recurring.data
        recurrings = self.recurring.choices
        entry.recurring = recurrings[recurring_pos][0]
        return entry
예제 #27
0
파일: forms.py 프로젝트: nos373737/rework
class ReportForm(DynamicForm):
    start = DateTimeField(format='%Y-%m-%d',
                          description="Format of date is: YYYY-MM-DD")
    end = DateTimeField(format='%Y-%m-%d',
                        description="Format of date is: YYYY-MM-DD")
예제 #28
0
class DateTimeForm(Form):
    # Date filter form needed for gantt and graph view
    execution_date = DateTimeField("Execution date",
                                   widget=DateTimePickerWidget())
예제 #29
0
파일: test_fields.py 프로젝트: xen/wtforms
 def test_microseconds(self):
     d = datetime(2011, 5, 7, 3, 23, 14, 424200)
     F = make_form(a=DateTimeField(format="%Y-%m-%d %H:%M:%S.%f"))
     form = F(DummyPostData(a=["2011-05-07 03:23:14.4242"]))
     assert d == form.a.data
예제 #30
0
def get_wtform_field(field, instance='', **kwargs):
    ''' return a wtform field '''
    _form_field = None
    _field_label = field.get("kds_formLabelName", '')
    #print("______label:", _field_label)
    _field_name = field.get("kds_formFieldName", '')
    _field_type_obj = field.get("kds_fieldType", {})
    if isinstance(_field_type_obj.get('rdf_type'), list):
        _field_type_obj = _field_type_obj['rdf_type'][0]
    _field_validators = get_wtform_validators(field)
    _field_type = _field_type_obj.get('rdf_type', '')
    _field_row = float(field.get("kds_formLayoutRow", 0))
    _default_val = calculate_default_value(field)
    if _field_type == 'kdr_TextField':
        _form_field = StringField(_field_label,
                                  _field_validators,
                                  description=field.get(
                                      'kds_formFieldHelp', ''))
    elif _field_type == 'kdr_OpenBadgeSenderField':
        _form_field = ButtonActionField(
            _field_label,
            description=field.get('kds_formFieldHelp', ''),
            #button_action="mozillaBackpackSender",
            #button_text={'true':"Resend",'false':'Claim now'}
        )
        field['kds_call_in_display'] = True
        field['kds_buttonAction'] = "mozillaBackpackSender"
        field['kds_buttonText'] = {'true': "Resend", 'false': 'Claim now'}
        field['kds_errorLogPropUri'] = "kds_errorLog"
        #x=y
    elif _field_type == 'kdr_ServerField':
        _form_field = None
        #form_field = StringField(_field_label, _field_validators, description= \
        #field.get('kds_formFieldHelp', ''))
    elif _field_type == 'kdr_TextAreaField':
        _form_field = TextAreaField(_field_label,
                                    _field_validators,
                                    description=field.get(
                                        'kds_formFieldHelp', ''))
    elif _field_type == 'kdr_PasswordField':
        #print("!!!! Mode: ", _field_type_obj.get('fieldMode'))
        _field_mode = _field_type_obj.get('kds_fieldMode', '')
        if _field_mode == "kdr_InitialPassword":
            _form_field = [{"kds_fieldName":_field_name,
                            "kds_field":PasswordField(_field_label,
                                                  _field_validators,
                                                  description=\
                                                  field.get('kds_formFieldHelp',\
                                                         ''))},
                           {"kds_fieldName":_field_name + "_confirm",
                            "kds_field":PasswordField("Re-enter"),
                            "doNotSave":True}]

        elif _field_mode == "kdr_ChangePassword":

            _form_field = [{
                "kds_fieldName": _field_name + "_old",
                "kds_field": PasswordField("Current"),
                "doNotSave": True
            }, {
                "kds_fieldName": _field_name,
                "kds_field": PasswordField("New"),
                "kds_formLayoutRow": _field_row + .01
            }, {
                "kds_fieldName": _field_name + "_confirm",
                "kds_field": PasswordField("Re-enter"),
                "doNotSave": True,
                "kds_formLayoutRow": _field_row + .02
            }]
        elif _field_mode == "kdr_LoginPassword":
            _form_field = PasswordField(_field_label,
                                        [InputRequired()],
                                        description=\
                                                field.get('kds_formFieldHelp', ''))
    elif _field_type == 'kdr_BooleanField':
        _form_field = BooleanField(_field_label,
                                   _field_validators,
                                   description=field.get(
                                       'kds_formFieldHelp', ''))
    elif _field_type == 'kdr_FileField':
        _form_field = FileField(_field_label,
                                _field_validators,
                                description=field.get('kds_formFieldHelp', ''))
    elif _field_type == 'kdr_HiddenField':
        _form_field = FileField(_field_label,
                                _field_validators,
                                description=field.get('kds_formFieldHelp', ''))
    elif _field_type == 'kdr_DateField':
        _date_format = rdfw().app.get(\
                'kds_dataFormats', {}).get('kds_pythonDateFormat', '')
        #print("date validators:\n", _field_validators)
        _add_optional = True
        for _val in _field_validators:
            if isinstance(_val, InputRequired):
                _add_optional = False
                break
        if _add_optional:
            _field_validators = [Optional()] + _field_validators

        _form_field = DateField(_field_label,
                                _field_validators,
                                description=field.get('kds_formFieldHelp', ''),
                                default=_default_val,
                                format=_date_format)
        field['kds_css'] += " dp"
    elif _field_type == 'kdr_DateTimeField':
        _form_field = DateTimeField(_field_label,
                                    _field_validators,
                                    description=field.get(
                                        'kds_formFieldHelp', ''))
    elif _field_type == 'kdr_SelectField':
        #print("--Select Field: ", _field_label, _field_validators, description= \
        #field.get('kds_formFieldHelp', ''))
        _form_field = SelectField(_field_label,
                                  _field_validators,
                                  description=field.get(
                                      'kds_formFieldHelp', ''))
        #_form_field = StringField(_field_label, _field_validators, description= \
        #field.get('kds_formFieldHelp', ''))
    elif _field_type == 'kdr_ImageFileOrURLField':
        if instance == "kdr_DisplayForm":
            _form_field = StringField(_field_label,
                                      description=field.get(
                                          'kds_formFieldHelp', ''))
            field['kds_formFieldName'] = field['kds_formFieldName'] + "_image"

            print(" image count ")
        else:
            _form_field = [{
                "kds_fieldName": _field_name + "_image",
                "kds_field": FileField("Image File")
            }, {
                "kds_fieldName": _field_name + "_url",
                "kds_field": StringField("Image Url", [URL])
            }]
    elif _field_type == 'kdr_SubForm':
        from .rdfforms import rdf_framework_form_factory
        _sub_form_instance = _field_type_obj.get('kds_subFormInstance',\
                                                 'kdr_LinkWithParent')
        if _sub_form_instance == 'kdr_LinkWithParent':
            _sub_form_instance = instance
        _form_path = rdfw().get_form_path(\
                _field_type_obj.get('kds_subFormUri'), instance)
        kwargs['is_subobj'] = True
        _sub_form = FormField(\
                rdf_framework_form_factory(_form_path, is_subobj=True),
                widget=BsGridTableWidget())
        if "RepeatingSubForm" in _field_type_obj.get("kds_subFormMode"):
            _form_field = FieldList(_sub_form,
                                    _field_label,
                                    min_entries=1,
                                    widget=RepeatingSubFormWidget())
            setattr(_form_field, "frameworkField", "RepeatingSubForm")
        else:
            _form_field = _sub_form
            setattr(_form_field, "frameworkField", "subForm")
    elif _field_type == 'kdr_FieldList':
        _field_json = dict.copy(field)
        _field_type_obj['rdf_type'] = _field_type_obj['kds_listFieldType']
        _field_json['kds_fieldType'] = _field_type_obj
        list_field = get_wtform_field(_field_json, instance, **kwargs)['fld']
        _form_field = FieldList(list_field, _field_label, min_entries=1)

    else:
        _form_field = StringField(_field_label,
                                  _field_validators,
                                  description=field.get(
                                      'kds_formFieldHelp', ''))
    #print("--_form_field: ", _form_field)
    return {"fld": _form_field, "fld_json": field, "form_js": None}