Ejemplo n.º 1
0
    def file_validation_mime_type(self, fixture):
        """A FileField can also limit the mimetype of files allowed to be uploaded.
        """

        field = FileField(allow_multiple=True, accept=['text/*'])
        obj = fixture.model_object
        field.bind('file_value', obj)

        files = [UploadedFile('file1', b'stuff 1', 'text/html'), UploadedFile('file2', b'stuff 2', 'text/xml')]
        with expected(NoException):
            field.set_user_input(files)

        files = [UploadedFile('file1', b'stuff 3', 'text/html'), UploadedFile('file2', b'stuff 4', 'application/java')]
        with expected(MimeTypeConstraint):
            field.set_user_input(files)
Ejemplo n.º 2
0
    def file_validation_max_files(self, fixture):
        """A maximum can be placed upon the number of files that may be uploaded.
        """

        field = FileField(allow_multiple=True, max_files=1)
        obj = fixture.model_object
        field.bind('file_value', obj)

        files = [UploadedFile('file1', b'stuff 1', '')]
        with expected(NoException):
            field.set_user_input(files)

        files = [UploadedFile('file1', b'stuff 2', ''), UploadedFile('file2', b'stuff 3', '')]
        with expected(MaxFilesConstraint):
            field.set_user_input(files)
Ejemplo n.º 3
0
    def file_validation_size(self, fixture):
        """A FileField can also limit the size if files uploaded.
        """

        field = FileField(allow_multiple=True, max_size_bytes=100)
        obj = fixture.model_object
        field.bind('file_value', obj)

        files = [UploadedFile('file1', b'.'*100, ''), UploadedFile('file2', b'.'*50, '')]
        with expected(NoException):
            field.set_user_input(files)

        files = [UploadedFile('file1', b'.'*100, ''), UploadedFile('file2', b'.'*200, '')]
        with expected(FileSizeConstraint):
            field.set_user_input(files)
Ejemplo n.º 4
0
 def accept_input(self, input_values):
     value = [
         UploadedFile(f.filename, f.file_obj.read(), f.mime_type)
         for f in self.persisted_file_class.get_persisted_for_form(
             self.form, self.name)
     ]
     self.bound_field.from_input(value)
Ejemplo n.º 5
0
 def get_value_from_input(self, input_values):
     return [
         UploadedFile(f.filename, f.file_obj.read(), f.mime_type)
         for f in self.persisted_file_class.get_persisted_for_form(
             self.form, self.name)
     ]