from boards.abstracts.settingsmanager import SessionSettingsManager from boards.models import Attachment class StickerFactory: def get_image(self, alias): pass class SessionStickerFactory(StickerFactory): def __init__(self, session): self.session = session def get_image(self, alias): settings_manager = SessionSettingsManager(self.session) return settings_manager.get_attachment_by_alias(alias) class ModelStickerFactory(StickerFactory): def get_image(self, alias): if alias.count('/') == 1: return Attachment.objects.get_by_alias(alias) def get_attachment_by_alias(alias, session): """Gets attachment from a source (local or server/global) using an alias.""" factories = [SessionStickerFactory(session), ModelStickerFactory()] for factory in factories: image = factory.get_image(alias) if image is not None: return image