docker/models/storage.py (28 lines of code) (raw):
from mongoengine import EnumField, DictField, StringField, EmbeddedDocument, \
EmbeddedDocumentField
from commons.enum import ListEnum
from models.base_model import BaseModel
class StorageServiceEnum(ListEnum):
S3_BUCKET = 'S3_BUCKET'
@classmethod
def get_default(cls):
return cls.S3_BUCKET
class StorageTypeEnum(ListEnum):
DATA_SOURCE = 'DATA_SOURCE'
STORAGE = 'STORAGE'
class Storage(BaseModel):
name = StringField(unique=True)
service = EnumField(StorageServiceEnum)
type = EnumField(StorageTypeEnum)
access = DictField()
meta = {'allow_inheritance': True}
dto_skip_attrs = ['_cls']
class S3Access(EmbeddedDocument):
bucket_name = StringField()
prefix = StringField(null=True)
class S3Storage(Storage):
name = StringField(unique=True)
service = EnumField(StorageServiceEnum)
type = EnumField(StorageTypeEnum)
access = EmbeddedDocumentField(S3Access)
dto_skip_attrs = ['_cls']