kaiju_files.converters module

class ErrorCodes[source]

Bases: object

NO_CONVERTER_CLASS_FOUND = 'NO_CONVERTER_CLASS_FOUND'
INVALID_CONVERTER_SETTINGS = 'INVALID_CONVERTER_SETTINGS'
class FileConverterService[source]

Bases: SQLService, AbstractRPCCompatible

File converters storage and execution.

You can use it for image and other data types conversion.

First if you need a specific converter class you should inherit it from AbstractFileConverter interface and register it in converters class registry.

from kaiju_files.abc import AbstractFileConverter
from kaiju_files.converters import converters

class MyConverterClass(AbstractFileConverter):
    ...

converters.register_class(MyConverterClass)

From now you can use it in you converter service. It’s best to init this service within a service context manager but you can init it directly by providing instances of a database service and a file service. Then you can save your converter settings and convert files using your converter.

my_converter_settings = {...}

async with FileConverterService(...) as fcs:
    row = {'cls': 'MyConverterClass', 'name': 'my converter', 'settings': my_converter_settings}
    row = await fcs.create(row)
    versions_info = await fsc.convert(row['id'], my_file_id)
service_name = 'FileConverter'

you may define a custom service name here

MAX_PROCESSING_TIME = 300
update_columns = {'settings', 'system'}

you may specify columns for update here

__init__(app, database_service, file_service=False, converters=<kaiju_files.converters.FileConvertersRegistry object>, max_processing_time=300, logger=None)[source]

Initialize.

Parameters:
  • app

  • database_service (DatabaseService) –

  • file_service (FileService) –

  • converters – converters registry (uses default registry)

  • max_processing_time – conversion time limit (sec)

  • logger

async get_converter_class_specs(cls=None)[source]

Return a list of registered converter classes specification.

Parameters:

cls (str | None) –

async convert(id, file_id, settings=None, metadata=None, **__)[source]

Convert a file.

Parameters:
  • id – converter ID

  • file_id – file to convert

  • settings (dict | None) – additional converter settings

  • metadata (dict | None) – additional metadata

Returns:

Return type:

_ConvertedFileInfo

prepare_insert_data(data)[source]

Define your custom row init logic here.

Parameters:

data (dict) –

Return type:

dict

async init_converter(id, settings=None)[source]

Return a converter instance ready to use.

Parameters:
  • id – converter ID

  • settings – additional settings to update default settings

Return type:

AbstractFileConverter

class FileConvertersRegistry[source]

Bases: AbstractClassRegistry

Registry of all file converters.

base_classes = (<class 'kaiju_files.abc.AbstractFileConverter'>,)

a tuple of base classes