Beispiel #1
0
class PostForm(Form):
    title = TextField('Title', [validators.length(min=3, max=140)])
    body = TextField('Text', [validators.length(max=5000)])
Beispiel #2
0
class ReusableForm(Form):
    name = TextField('https://www.', validators=[validators.required()])
class ReusableForm(Form):
        email = TextField('Email:', validators=[validators.required(), validators.Length(min=6, max=35)])
Beispiel #4
0
class ContactForm(FlaskForm):
    name = TextField('Name', [validators.Required("(Required)")])
    email = TextField('E-mail', [validators.Required("(Required)")])
    subject = TextField('Subject', [validators.Required("(Required)")])
    message = TextAreaField('Message', [validators.Required("(Required)")])
Beispiel #5
0
class LoginForm(FlaskForm):
    username = TextField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
Beispiel #6
0
class DynastyForm(Form):
    """Form for add & edit dynasty"""
    name = TextField('朝代', [DataRequired('朝代不能为空')])
    intro = TextAreaField('简介', [DataRequired('简介不能为空')])
    start_year = IntegerField('起始年', [DataRequired('起始年不能为空')])
    end_year = IntegerField('结束年', [DataRequired('结束年不能为空')])
Beispiel #7
0
class RegisterAgentForm(FlaskForm):
    name = TextField(validators=[Required()])
    phone_number = TextField()
    email = TextField(validators=[Email()])
    agency = QuerySelectField(query_factory=enabled_agencies, allow_blank=True)
Beispiel #8
0
class ReusableForm(Form):
    name = TextField('Percent of value lost')
Beispiel #9
0
class CustomerCreateForm(Form):
    external_id = TextField('External ID', [
        validators.Optional(),
    ])
Beispiel #10
0
class ReusableForm(Form):
    deparature = TextField('deparature', validators=[validators.required()])
    destination = TextField('destination', validators=[validators.required()])
    search_term = TextField('search_term', validators=[validators.required()])
Beispiel #11
0
class EditURLForm(FlaskForm):
    short_url = StringField("Short URL", validators=[Required()])
    element_text = TextField("Message")
    created = DateTimeField("Created", render_kw={"readonly": True})
    clicks = StringField("Clicks", render_kw={"readonly": True})
    submit = SubmitField("Save")
class MatrixNotificationForm(Form):
    legend = (
        "<div style=\"font-size: 16px;\">"
        "Matrix.org is a free open source distributed network that supports end-to-end encryption.<br/>"
        "TODO: Add ability to generate the <b>Room ID</b> and <b>Token</b> using a User ID and Pass<br/>"
        "Notes: Create an account and a room on Riot.im that allows posts. You can get the room key from the Riot.im web client.<br/>"
        "See: <a href=\"https://gist.github.com/RickCogley/69f430d4418ae5498e8febab44d241c9\" target=\"_blank\">https://gist.github.com/RickCogley/69f430d4418ae5498e8febab44d241c9</a> for curl commands to generate a <b>Token</b>.<br/>"
        "See: <a href=\"https://matrix.org/\" target=\"_blank\">https://matrix.org</a> for more info on [Matrix]<br/>"
        "See: <a href=\"https://riot.im/\" target=\"_blank\">https://riot.im</a> for an open source client for web and phone to create, manage and use [Matrix] and create rooms.<br/>"
        "</div>")

    type = HiddenField()

    description = TextField(
        u'Description', [Required(), Length(max=255)],
        description=u'Brief description of this notification')
    time_field = FormField(TimeSettingsInternalForm)
    subscriptions = MultiCheckboxField(
        u'Notification Events',
        choices=[(str(k), v) for k, v in SUBSCRIPTIONS.iteritems()])
    form_field = FormField(MatrixNotificationInternalForm)

    submit = SubmitField(u'Next')
    cancel = ButtonField(u'Cancel',
                         onclick="location.href='/settings/notifications'")

    def populate_settings(self, settings, id=None):
        settings['subscriptions'] = self.populate_setting(
            'subscriptions',
            json.dumps({str(k): True
                        for k in self.subscriptions.data}))

        settings['starttime'] = self.populate_setting(
            'starttime', self.time_field.starttime.data or '00:00:00')
        settings['endtime'] = self.populate_setting(
            'endtime', self.time_field.endtime.data or '23:59:59')
        settings['delay'] = self.populate_setting(
            'delay', self.time_field.delaytime.data)
        settings['suppress'] = self.populate_setting(
            'suppress', self.time_field.suppress.data)

        settings['domain'] = self.populate_setting('domain',
                                                   self.form_field.domain.data)
        settings['room_id'] = self.populate_setting(
            'room_id', self.form_field.room_id.data)
        settings['token'] = self.populate_setting('token',
                                                  self.form_field.token.data)
        settings['custom_values'] = self.populate_setting(
            'custom_values', self.form_field.custom_values.data)

    def populate_from_settings(self, id):
        subscriptions = self.populate_from_setting(id, 'subscriptions')
        if subscriptions:
            self.subscriptions.data = [
                k if v == True else False
                for k, v in json.loads(subscriptions).iteritems()
            ]

        self.form_field.domain.data = self.populate_from_setting(id, 'domain')
        self.form_field.room_id.data = self.populate_from_setting(
            id, 'room_id')
        self.form_field.token.data = self.populate_from_setting(id, 'token')
        custom = self.populate_from_setting(id, 'custom_values')

        if custom is not None:
            custom = ast.literal_eval(custom)
            custom = dict(
                (str(i['custom_key']), i['custom_value']) for i in custom)

            for key, value in custom.iteritems():
                CVForm = CustomValueForm()
                CVForm.custom_key = key
                CVForm.custom_value = value

                self.form_field.custom_values.append_entry(CVForm)

    def populate_setting(self, name, value, id=None):
        if id is not None:
            setting = NotificationSetting.query.filter_by(notification_id=id,
                                                          name=name).first()
        else:
            setting = NotificationSetting(name=name)

        setting.value = value

        return setting

    def populate_from_setting(self, id, name, default=None):
        ret = default

        setting = NotificationSetting.query.filter_by(notification_id=id,
                                                      name=name).first()
        if setting is not None:
            ret = setting.value

        return ret
class EditNotificationForm(Form):
    type = HiddenField()
    description = TextField(
        u'Description', [Required(), Length(max=255)],
        description=u'Brief description of this notification')
    suppress_timestamp = BooleanField(
        u'Suppress Timestamp?', [Optional()],
        description=u'Removes Timestamp from Message Body and Subject')
    time_field = FormField(TimeSettingsInternalForm)
    subscriptions = MultiCheckboxField(
        u'Notification Events',
        choices=[(str(k), v) for k, v in SUBSCRIPTIONS.iteritems()])

    def populate_settings(self, settings, id=None):
        settings['subscriptions'] = self.populate_setting(
            'subscriptions',
            json.dumps({str(k): True
                        for k in self.subscriptions.data}))
        settings['starttime'] = self.populate_setting(
            'starttime', self.time_field.starttime.data or '00:00:00')
        settings['endtime'] = self.populate_setting(
            'endtime', self.time_field.endtime.data or '23:59:59')
        settings['delay'] = self.populate_setting(
            'delay', self.time_field.delaytime.data)
        settings['suppress'] = self.populate_setting(
            'suppress', self.time_field.suppress.data)
        settings['suppress_timestamp'] = self.populate_setting(
            'suppress_timestamp', self.suppress_timestamp.data)

    def populate_from_settings(self, id):
        subscriptions = self.populate_from_setting(id, 'subscriptions')
        if subscriptions:
            self.subscriptions.data = [
                k if v == True else False
                for k, v in json.loads(subscriptions).iteritems()
            ]

        self.time_field.starttime.data = self.populate_from_setting(
            id, 'starttime', default='00:00:00')
        self.time_field.endtime.data = self.populate_from_setting(
            id, 'endtime', default='23:59:59')
        self.time_field.delaytime.data = self.populate_from_setting(id,
                                                                    'delay',
                                                                    default=0)
        # HACK: workaround for bad form that was pushed up.
        if self.time_field.delaytime.data is None or self.time_field.delaytime.data == '':
            self.time_field.delaytime.data = 0
        self.time_field.suppress.data = self.populate_from_setting(
            id, 'suppress', default=False)
        self.suppress_timestamp.data = self.populate_from_setting(
            id, 'suppress_timestamp', default=False)

    def populate_setting(self, name, value, id=None):
        if id is not None:
            setting = NotificationSetting.query.filter_by(notification_id=id,
                                                          name=name).first()
        else:
            setting = NotificationSetting(name=name)

        setting.value = value

        return setting

    def populate_from_setting(self, id, name, default=None):
        ret = default

        setting = NotificationSetting.query.filter_by(notification_id=id,
                                                      name=name).first()
        if setting is not None:
            ret = setting.value

        return ret
Beispiel #14
0
class SecurityQuestionForm(FlaskForm):
    """ Create security question """
    question = TextField('Question', validators=[DataRequired()])
    answer = TextField('Answer', validators=[DataRequired()])
Beispiel #15
0
class AuthorQuoteForm(Form):
    """Form for add & edit author quote"""
    quote = TextField('摘录', [DataRequired('摘录不能为空')])
    work_id = IntegerField('出处', [DataRequired('出处不能为空')])
Beispiel #16
0
class LoginForm(FlaskForm):
    email = TextField('Почта', validators=[DataRequired(), Email()])
    password = PasswordField('Пароль', validators=[DataRequired()])
    remember_me = BooleanField('Запомнить меня')
    submit = SubmitField('Войти')
Beispiel #17
0
class WorkQuoteForm(Form):
    """Form for add & edit quote for work"""
    quote = TextField('摘录', [DataRequired('摘录不能为空')])
class ReusableForm(Form):
    name = TextField('Name:', validators=[validators.required()])
Beispiel #19
0
class AddDetailsForm(FlaskForm):
    add = TextField('Specification', validators=[DataRequired()])
    submit = SubmitField('Save Changes')
Beispiel #20
0
class StudentForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    students = TextField('Students')
    submit = SubmitField('Submit')
Beispiel #21
0
class TopicForm(Form):
    content = TextField(
        'content',
        validators=[validators.Required(),
                    validators.Length(min=4, max=255)])
Beispiel #22
0
class QuestionaryForm(FlaskForm):
    questionMD = "Which sequences do you see in the image?"
    question_mod = RadioField('', choices=[('T1w','T1 weighted'),
                                                ('T2w','T2 weighted'),
                                                ('acq-gre_T2w','Gradient echo T2 weighted '),
                                                ('T1rho','T1 Rho map'),
                                                ('T1map','T1 map'),
                                                ('T2map','T2 map'),
                                                ('T2star','T2*'),
                                                ('FLAIR','FLAIR'),
                                                ('FLASH','FLASH'),
                                                ('PD','Proton density'),
                                                ('PDmap','Proton density map'),
                                                ('PDT2','Combined PD/T2'),
                                                ('inplaneT1','Inplane T1'),
                                                ('inplaneT2','Inplane T2'),
                                                ('angio','Angiography'),
                                                ('dwi','dwi'),
                                                ('pwi','pwi'),
                                                ('swi','swi'),
                                                ('minIP','minIP'),
                                                ('fieldmap','Fieldmap'),
                                                ('asl','asl'),
                                                ('unknown', 'Unknown'),
                                                ('other','Other')])
    other = TextField('Name:')

    observation_text = "Other observations"
    contrast = BooleanField("With contrast")

    noise_text = "Noise type if apreciable"
    coverage = BooleanField("A) Coverage Artifact")
    ringing = BooleanField("B) Ringing/Blurring")
    ghosting = BooleanField("C) Ghosting")
    radio = BooleanField("D) Radio Frequency Noise")




    submit = SubmitField('Send')

    def to_dict(self):
        dict={}
        dict["modality"]=self.question_mod.data
        dict["other_modality"]=self.other.data
        dict["contrast"]=self.contrast.data
        dict["coverage"]=self.coverage.data
        dict["ringing/blurring"]=self.ringing.data
        dict["ghosting"]=self.ghosting.data
        dict["radio"]=self.radio.data


        return dict

    def get_header():
        return ["modality",
          "other_modality",
          "contrast",
          "coverage",
          "ringing/blurring",
          "ghosting",
          "radio"]
Beispiel #23
0
class LoginForm(Form):
    username = TextField('Username', [InputRequired()])
    password = PasswordField('Password', [InputRequired()])
Beispiel #24
0
class OpenIDForm(Form):
    openid = TextField(u'Your OpenID', [Required()])
    submit = SubmitField(u'Log in with OpenID')
class LoginForm(FlaskForm):
    userName = TextField('userName', validators=[validators.Required()])
    password = PasswordField('Password', validators=[validators.Required()])
    submit = SubmitField('ログイン')
Beispiel #26
0
class LoginForm(Form):
    username = TextField(
        'Username',
        [validators.Length(min=3, max=20),
         validators.DataRequired()])
    password = PasswordField('Password', [validators.DataRequired()])
from flask import Flask, render_template, flash, request
from wtforms import Form, TextField, TextAreaField, validators, StringField, SubmitField
 
# App config.
DEBUG = True
app = Flask(__name__)
app.config.from_object(__name__)

 
class ReusableForm(Form):
        email = TextField('Email:', validators=[validators.required(), validators.Length(min=6, max=35)])
    password = TextField('Password:'******'GET', 'POST'])
def hello():
    form = ReusableForm(request.form)
 
    print form.errors
    if request.method == 'POST':
        
        password=request.form['password']
        email=request.form['email']
        print  email, " ", password
 
        if form.validate():
            # Save the comment here.
            flash('Thank you for login ')
        else:
            flash('Error: All the form fields are required. ')
 
Beispiel #28
0
class URLShortenerForm(Form):
    url = TextField('URL', [validators.Required(), validators.URL()])
    alias = TextField(
        'Alias', [validators.Optional(),
                  validators.Length(min=2, max=50)])
Beispiel #29
0
class UploadForm(FlaskForm):
    class Meta:
        csrf = False

    torrent_file = FileField('Torrent file', [FileRequired()])

    display_name = TextField('Display name (optional)', [
        Optional(),
        Length(
            min=3,
            max=255,
            message=
            'Torrent name must be at least %(min)d characters long and %(max)d at most.'
        )
    ])

    # category = SelectField('Category')
    category = DisabledSelectField('Category')

    def validate_category(form, field):
        cat_match = re.match(r'^(\d+)_(\d+)$', field.data)
        if not cat_match:
            raise ValidationError('You must select a category')

        main_cat_id = int(cat_match.group(1))
        sub_cat_id = int(cat_match.group(2))

        cat = models.SubCategory.by_category_ids(main_cat_id, sub_cat_id)

        if not cat:
            raise ValidationError('You must select a proper category')

        field.parsed_data = cat

    is_hidden = BooleanField('Hidden')
    is_remake = BooleanField('Remake')
    is_anonymous = BooleanField('Anonymous')
    is_complete = BooleanField('Complete')

    information = TextField('Information', [
        Length(max=255,
               message='Information must be at most %(max)d characters long.')
    ])
    description = TextAreaField('Description (markdown supported)', [
        Length(max=10 * 1024,
               message='Description must be at most %(max)d characters long.')
    ])

    def validate_torrent_file(form, field):
        # Decode and ensure data is bencoded data
        try:
            torrent_dict = bencode.decode(field.data)
            #field.data.close()
        except (bencode.MalformedBencodeException, UnicodeError):
            raise ValidationError('Malformed torrent file')

        # Uncomment for debug print of the torrent
        # _debug_print_torrent_metadata(torrent_dict)

        try:
            _validate_torrent_metadata(torrent_dict)
        except AssertionError as e:
            raise ValidationError('Malformed torrent metadata ({})'.format(
                e.args[0]))

        try:
            _validate_trackers(torrent_dict)
        except AssertionError as e:
            raise ValidationError('Malformed torrent trackers ({})'.format(
                e.args[0]))

        if app.config.get('ENFORCE_MAIN_ANNOUNCE_URL'):
            main_announce_url = app.config.get('MAIN_ANNOUNCE_URL')
            if not main_announce_url:
                raise Exception('Config MAIN_ANNOUNCE_URL not set!')

            announce = torrent_dict.get('announce', b'').decode('utf-8')
            if announce != main_announce_url:
                raise ValidationError(
                    'Please set {} as the first tracker in the torrent'.format(
                        main_announce_url))

        # Note! bencode will sort dict keys, as per the spec
        # This may result in a different hash if the uploaded torrent does not match the
        # spec, but it's their own fault for using broken software! Right?
        bencoded_info_dict = bencode.encode(torrent_dict['info'])
        info_hash = utils.sha1_hash(bencoded_info_dict)

        # Check if the info_hash exists already in the database
        existing_torrent = models.Torrent.by_info_hash(info_hash)
        if existing_torrent:
            raise ValidationError('That torrent already exists (#{})'.format(
                existing_torrent.id))

        # Torrent is legit, pass original filename and dict along
        field.parsed_data = TorrentFileData(
            filename=os.path.basename(field.data.filename),
            torrent_dict=torrent_dict,
            info_hash=info_hash,
            bencoded_info_dict=bencoded_info_dict)
Beispiel #30
0
class ReplyForm(Form):
    body = TextField('Reply', [validators.length(min=1, max=5000)])