Esempio n. 1
0
class EditScheduledChangeNewReleaseForm(ScheduledChangeTimeForm):
    """Any Release field may be changed when editing an Scheduled Change for a new
    Release."""
    name = StringField('Name', validators=[Optional()])
    product = StringField('Product', validators=[Optional()])
    data = JSONStringField(None, 'Data', validators=[Optional()], widget=FileInput())
    sc_data_version = IntegerField('sc_data_version', validators=[InputRequired()], widget=HiddenInput())
Esempio n. 2
0
class CompleteReleaseForm(Form):
    name = StringField('Name', validators=[Required()])
    product = StringField('Product', validators=[Required()])
    blob = JSONStringField({},
                           'Data',
                           validators=[Required()],
                           widget=FileInput())
    data_version = IntegerField('data_version', widget=HiddenInput())
Esempio n. 3
0
class EditScheduledChangeExistingReleaseForm(ScheduledChangeTimeForm):
    """Only data may be changed when editing an existing Scheduled Change for
    a Release. Name cannot be changed because it is a PK field, and product
    cannot be changed because it almost never makes sense to (and can be done
    by deleting/recreating instead)."""
    data = JSONStringField(None, 'Data', validators=[Optional()], widget=FileInput())
    data_version = IntegerField('data_version', widget=HiddenInput())
    sc_data_version = IntegerField('sc_data_version', validators=[InputRequired()], widget=HiddenInput())
Esempio n. 4
0
class ScheduledChangeNewReleaseForm(ScheduledChangeTimeForm):
    """All Release fields (name, product, data) are required when creating
    a new Release, so they must be provided when Scheduling a Change that
    does the same."""
    name = StringField('Name', validators=[InputRequired()])
    product = StringField('Product', validators=[InputRequired()])
    data = JSONStringField({}, 'Data', validators=[InputRequired()], widget=FileInput())
    change_type = SelectField("Change Type", choices=[('insert', 'insert'), ('update', 'update'), ('delete'), ('delete')])
Esempio n. 5
0
class ScheduledChangeExistingReleaseForm(ScheduledChangeTimeForm):
    """Name must be provided when Scheduling a Change that modifies an existing
    Release so that we can identify it. Other Release fields (product, data) are
    optional."""
    name = StringField('Name', validators=[InputRequired()])
    product = StringField('Product', validators=[Optional()])
    data = JSONStringField({}, 'Data', validators=[Optional()], widget=FileInput())
    data_version = IntegerField('data_version', validators=[InputRequired()], widget=HiddenInput())
    change_type = SelectField("Change Type", choices=[('insert', 'insert'), ('update', 'update'), ('delete'), ('delete')])
Esempio n. 6
0
 def __call__(self, field, **kwargs):
     if field.accept:
         kwargs[u'accept'] = ','.join(field.accept)
     return _FileInput.__call__(self, field, **kwargs)
Esempio n. 7
0
class BlobUploadField(fields.StringField):

    widget = FileInput()

    def __init__(self,
                 label=None,
                 allowed_extensions=None,
                 size_field=None,
                 filename_field=None,
                 mimetype_field=None,
                 **kwargs):

        self.allowed_extensions = allowed_extensions
        self.size_field = size_field
        self.filename_field = filename_field
        self.mimetype_field = mimetype_field
        validators = [required()]

        super(BlobUploadField, self).__init__(label, validators, **kwargs)

    def is_file_allowed(self, filename):
        """
            Check if file extension is allowed.

            :param filename:
                File name to check
        """
        if not self.allowed_extensions:
            return True

        return ('.' in filename and filename.rsplit('.', 1)[1].lower() in map(
            lambda x: x.lower(), self.allowed_extensions))

    def _is_uploaded_file(self, data):
        return (data and isinstance(data, FileStorage) and data.filename)

    def pre_validate(self, form):
        super(BlobUploadField, self).pre_validate(form)
        if self._is_uploaded_file(
                self.data) and not self.is_file_allowed(self.data.filename):
            raise ValidationError(
                'Format no valid. Formats acceptats: '
                '[.pdf, .doc, .docx, .xls, .xlsx, jpeg, png, jpg, gif]')

    def process_formdata(self, valuelist):
        if valuelist:
            data = valuelist[0]
            self.data = data

    def populate_obj(self, obj, name):

        if self._is_uploaded_file(self.data):

            _blob = self.data.read()

            setattr(obj, name, _blob)

            if self.size_field:
                setattr(obj, self.size_field, len(_blob))

            if self.filename_field:
                setattr(obj, self.filename_field, self.data.filename)

            if self.mimetype_field:
                setattr(obj, self.mimetype_field, self.data.content_type)
Esempio n. 8
0
class BlobUploadField(fields.StringField):

    widget = FileInput()

    def __init__(self,
                 label=None,
                 allowed_extensions=None,
                 size_field=None,
                 filename_field=None,
                 mimetype_field=None,
                 **kwargs):

        self.allowed_extensions = allowed_extensions
        self.size_field = size_field
        self.filename_field = filename_field
        self.mimetype_field = mimetype_field
        # validators = [required()]
        validators = []

        super(BlobUploadField, self).__init__(label, validators, **kwargs)

    def is_file_allowed(self, filename):
        """
            Check if file extension is allowed.

            :param filename:
                File name to check
        """
        if not self.allowed_extensions:
            return True

        return ('.' in filename and filename.rsplit('.', 1)[1].lower() in map(
            lambda x: x.lower(), self.allowed_extensions))

    def _is_uploaded_file(self, data):
        return data and data.filename

    def pre_validate(self, form):
        super(BlobUploadField, self).pre_validate(form)
        if (self._is_uploaded_file(self.data)
                and not self.is_file_allowed(self.data.filename)):
            raise ValidationError(gettext('Invalid file extension'))

    def process_formdata(self, valuelist):
        if valuelist:
            data = valuelist[0]
            self.data = data

    def populate_obj(self, obj, name):

        if self._is_uploaded_file(self.data):

            _blob = self.data.read()

            setattr(obj, name, _blob)

            if self.size_field:
                setattr(obj, self.size_field, len(_blob))
            '''
            if self.filename_field:
                setattr(obj, self.filename_field, self.data.filename)
                '''

            if self.mimetype_field:
                setattr(obj, self.mimetype_field, self.data.content_type)
Esempio n. 9
0
class NewReleaseForm(Form):
    name = StringField('Name', validators=[Required()])
    version = StringField('Version', validators=[Required()])
    product = StringField('Product', validators=[Required()])
    blob = JSONStringField('Data', validators=[Required()], widget=FileInput())
Esempio n. 10
0
class UploadForm(FlaskForm):
    filename = FileInput()
    submit = SubmitField('Upload')
Esempio n. 11
0
class UploadForm(Form):
    img = FileField(u"Select image file:",
                    validators=[file_required(),
                                file_allowed(images, "Images only!")], 
                    widget=FileInput())
Esempio n. 12
0
 def __call__(self, field, **kwargs):
     if field.accept:
         kwargs[u"accept"] = ",".join(field.accept)
     return _FileInput.__call__(self, field, **kwargs)
Esempio n. 13
0
 def __call__(self, field, **kwargs):
     if field.accept:
         kwargs[u'accept'] = ','.join(field.accept)
     return _FileInput.__call__(self, field, **kwargs)
Esempio n. 14
0
    def __init__(self):

        self._field_renderer = FileInput()