kotti.filedepot¶
- class kotti.filedepot.DBFileStorage[source]¶
Implementation of
depot.io.interfaces.FileStorage
,Uses kotti.filedepot.DBStoredFile to store blob data in an SQL database.
- create(content: Union[bytes, FieldStorage], filename: Optional[str] = None, content_type: Optional[str] = None) str [source]¶
Saves a new file and returns the file id
- Parameters
content – can either be
bytes
, anotherfile object
or acgi.FieldStorage
. Whenfilename
andcontent_type
parameters are not provided they are deducted from the content itself.filename (string) – filename for this file
content_type (string) – Mimetype of this file
- Returns
the unique
file_id
associated to this file- Return type
string
- delete(file_or_id: str) None [source]¶
Deletes a file. If the file didn’t exist it will just do nothing.
- Parameters
file_or_id – can be either
DBStoredFile
or afile_id
- exists(file_or_id: str) bool [source]¶
Returns if a file or its ID still exist.
- Returns
Returns if a file or its ID still exist.
- Return type
bool
- static get(file_id: str) DBStoredFile [source]¶
Returns the file given by the file_id
- Parameters
file_id (string) – the unique id associated to the file
- Result
a
kotti.filedepot.DBStoredFile
instance- Return type
- static list(*args) None [source]¶
Returns a list of file IDs that exist in the Storage.
Depending on the implementation there is the possibility that this returns more IDs than there have been created. Therefore this method is NOT guaranteed to be RELIABLE.
- replace(file_or_id: Union[DBStoredFile, str], content: bytes, filename: Optional[str] = None, content_type: Optional[str] = None) None [source]¶
Replaces an existing file, an
IOError
is raised if the file didn’t already exist.Given a
StoredFile
or its ID it will replace the current content with the providedcontent
value. Iffilename
andcontent_type
are provided or can be deducted by thecontent
itself they will also replace the previous values, otherwise the current values are kept.- Parameters
file_or_id – can be either
DBStoredFile
or afile_id
content – can either be
bytes
, anotherfile object
or acgi.FieldStorage
. Whenfilename
andcontent_type
parameters are not provided they are deducted from the content itself.filename (string) – filename for this file
content_type (string) – Mimetype of this file
- class kotti.filedepot.DBStoredFile(file_id, filename=None, content_type=None, last_modified=None, content_length=None, **kwds)[source]¶
depot.io.interfaces.StoredFile
implementation that stores file data in SQL database.Can be used together with
kotti.filedepot.DBFileStorage
to implement blobs storage in the database.- static close(*args, **kwargs) None [source]¶
Implement
StoredFile.close()
.DBStoredFile
never closes.
- content_length¶
Size of the blob in bytes (
sqlalchemy.types.Integer
)
- content_type¶
MIME type of the blob (
sqlalchemy.types.String
)
- data¶
The binary data itself (
sqlalchemy.types.LargeBinary
)
- file_id¶
Unique file id given to this blob (
sqlalchemy.types.String
)
- filename¶
The original filename it had when it was uploaded. (
sqlalchemy.types.String
)
- id¶
Primary key column in the DB (
sqlalchemy.types.Integer
)
- last_modified¶
Date / time the blob was created or last modified (
sqlalchemy.types.DateTime
)
- property name: str¶
Implement
StoredFile.name()
.- Result
the filename of the saved file
- Return type
string
- read(n: int = - 1) bytes [source]¶
Reads
n
bytes from the file.If
n
is not specified or is-1
the whole file content is read in memory and returned
- seek(offset: int, whence: int = 0) None [source]¶
Change stream position.
Change the stream position to the given byte offset. The offset is interpreted relative to the position indicated by whence.
- Parameters
offset (int) – Position for the cursor
whence (int) –
- 0 – start of stream (the default);
offset should be zero or positive
1 – current stream position; offset may be negative
2 – end of stream; offset is usually negative
- class kotti.filedepot.StoredFileResponse(f: MemoryStoredFile, request: Request, disposition: str = 'attachment', cache_max_age: int = 604800, content_type: None = None, content_encoding: None = None)[source]¶
A Response object that can be used to serve an UploadedFile instance.
Code adapted from
pyramid.response.FileResponse
.
- class kotti.filedepot.TweenFactory(handler: Optional[Callable], registry: Registry)[source]¶
Factory for a Pyramid tween in charge of serving Depot files.
This is the Pyramid tween version of
depot.middleware.DepotMiddleware
. It does exactly the same as Depot’s WSGI middleware, but operates on apyramid.request.Request
object instead of the WSGI environment.
- kotti.filedepot.extract_depot_settings(prefix: Optional[str] = 'kotti.depot.', settings: Optional[Dict[str, str]] = None) List[Dict[str, str]] [source]¶
Merges items from a dictionary that have keys that start with prefix to a list of dictionaries.
- Parameters
prefix (string) – A dotted string representing the prefix for the common values
settings – A dictionary with settings. Result is extracted from this
- kotti.filedepot.includeme(config: Configurator) None [source]¶
Pyramid includeme hook.
- Parameters
config (
pyramid.config.Configurator
) – app config
- kotti.filedepot.set_metadata(event: Union[ObjectUpdate, ObjectInsert]) None [source]¶
Set DBStoredFile metadata based on data
- Parameters
event (
ObjectInsert
orObjectUpdate
) – event that triggered this handler.