コード例 #1
0
ファイル: forms.py プロジェクト: zain-khatib/JuniorProject
class ImageForm(FlaskForm):
    image = FileField('Choose File',
                      validators=[
                          file_required(),
                          file_allowed(['pdf', 'doc', 'docx', 'jpg'])
                      ])
    language = SelectField('Language',
                           default='English',
                           choices=[('English', 'English'),
                                    ('France', 'France'),
                                    ('Arabic', 'Arabic')])
    submit = SubmitField('Secure')
コード例 #2
0
class NewProductForm(FlaskForm):
    productOwner = SelectField('Username of owner:',
                               validators=[DataRequired()])

    productName = StringField('Product name:', validators=[DataRequired()])

    imageFile = FileField("Image", validators=[file_required()])

    productPrice = DecimalField("Product price:",
                                widget=NumberInput(0.01, 0.01),
                                validators=[DataRequired()])

    create = SubmitField('Create Product')
コード例 #3
0
class ContactImportForm(Form):
    filename = FileField(
        _('File'), validators=[file_required(),
                               file_allowed(['csv', 'CSV'])])

    def validate_filename(form, field):
        data = field.data.readlines()
        linenum = 1
        for line in data:
            if not len(line.split(',')) == 2:
                msg = _('CSV file is broken, line %(linenum)s',
                        linenum=linenum)
                raise ValidationError(msg)
            elif not line[0].isdigit():
                raise ValidationError(
                    _(
                        'The first column does not contain phone '
                        'number, line %(linenum)s',
                        linenum=linenum))
            linenum += 1
        field.data.seek(0)
コード例 #4
0
class UploadForm(Form):

    file = FileField(validators=(file_required(), ))
コード例 #5
0
ファイル: test_uploads.py プロジェクト: warriorzcx/flask-wtf
class TextUploadForm(Form):
    upload = FileField("Upload file",
                       validators=[file_required(),
                                   file_allowed(['txt'])])
コード例 #6
0
ファイル: test_uploads.py プロジェクト: warriorzcx/flask-wtf
class ImageUploadForm(Form):
    upload = FileField("Upload file",
                       validators=[file_required(),
                                   file_allowed(images)])
コード例 #7
0
ファイル: forms.py プロジェクト: shivanshs9/dagen-airflow
class BulkSyncDagenForm(FlaskForm):
    template_id = SelectField(
        'Template ID',
        validators=(validators.required(), ),
    )
    csv_data = FileField(
        'Choose CSV file',
        validators=(file_required(), cron_dump_csv),
        description=
        'Please pick a CSV file containing all the required DAGs (relevant to this template) to generate'
    )
    mark_approved = BooleanField(
        'Mark approved?',
        default=False,
        description=
        'Additionally mark all the new DAG versions as approved if checked.')

    def __init__(self, templates=[], has_approve_perm=True, **kwargs):
        super().__init__(**kwargs)
        if not has_approve_perm:
            del self.mark_approved
        self.template_id.choices = tuple(zip(templates, templates))

    async def process_row(self, row) -> (bool, str):
        form = self.tmpl_clazz.as_form(data=row)
        is_valid = form.validate()
        if is_valid:
            cleaned_data = form.process_form_data(**form.data)
            dag_id = cleaned_data['dag_id']
            dbDag = self.dagmap.get(dag_id, None)
            is_update = dbDag is not None
            if is_update:
                is_success = form.update(dbDag, self.user)
            else:
                dbDag = form.create(self.template_id.data, self.user)
                is_success = dbDag is not None
                if is_success:
                    self.dagmap[dbDag.dag_id] = dbDag
        msg = None
        if is_valid and is_success:
            msg = f'{dbDag.version_str} {"updated" if is_update else "created"} successfully'
        elif is_valid:
            if is_update:
                msg = f'{dbDag.version_str} unchanged'
                # version unchanged is a success condition and should be shown to user
                # as such, hence set it to True here
                is_success = True
        if msg is None:
            msg = f'Encounted errors: {json.dumps(form.errors)}'
        is_success = is_valid and is_success

        # handle missing 'mark_approved' field
        f_mark_approved = getattr(self, 'mark_approved', None)
        if f_mark_approved and f_mark_approved.data and is_success:
            try:
                self.version_qs.approve_live_version(dag_id, self.user.id)
            except ValueError as e:
                msg = f'{msg}\nApproval failed: {e}'
            else:
                msg = f'{msg}\nApproved successfully'
        return is_success, msg

    async def asyncSave(self):
        # dag_qs needed to load versions later
        self.version_qs = DagenDagVersionQueryset()
        # HACK: eager load versions here so update works
        existing = DagenDagQueryset().get_all(eager_load_versions=True)
        self.dagmap = {dbDag.dag_id: dbDag for dbDag in existing}
        self.tmpl_clazz = get_template_loader().get_template_class(
            self.template_id.data)

        # FileStorage uses BytesIO stream so first read, decode and convert to StringIO stream
        stream = StringIO(self.csv_data.data.read().decode('UTF-8'))
        # Close the file object
        self.csv_data.data.close()

        cronreader = csv.DictReader(stream)
        result = await async_gather_dict(
            {row['dag_id']: self.process_row(row)
             for row in cronreader})
        self.version_qs.done()
        return result

    def save(self, user):
        self.user = user
        return async_loop.run_until_complete(self.asyncSave())
コード例 #8
0
ファイル: forms.py プロジェクト: XmlinX/Flask_Learning
class UploadForm(Form):
    avatar = FileField(
        validators=[file_required(),
                    file_allowed(['jpg', 'gif', 'png'])])
    desc = StringField(validators=[InputRequired()])
コード例 #9
0
class UploadForm(FlaskForm):
    photo = FileField(
        'Upload Image',
        validators=[file_required(),
                    file_allowed(['png', 'jpg'])])
    submit = SubmitField('Upload')