import pathlib from .model import model from .proxy import proxy from .field_generator import field_generator from .constants import constants from .validators import validators from .exceptions import resources_not_exists class attachment(model): """ That model store attachment to the item. Attachment is file, which could be downloaded by the user, like instruction in PDF, or used in frontend like images. Fields ------ name : str Name of the attachment visible for user. description : str Description of the attachment visible for user. """ name = field_generator.name() description = field_generator.description() resources = field_generator.path() @property def resources_path(self) -> pathlib.Path: return pathlib.Path(self.resources) def _validators(self) -> dict: """ That function return dict of validators which would be used to validate text fields of the model. Returns ------- dict Validators which would be used to validate text fields. """ return { "name": validators.name, "description": validators.description, "resources": validators.path } class attachment_proxy(proxy): @classmethod def create(cls, resources: str) -> proxy: return cls(attachment( name = cls.__extract_name(resources), resources = resources, description = constants.empty_text() )) @classmethod def __extract_name(cls, resources: str) -> str: splited = resources.split(".") if len(splited) == 1: return splited[0] return str(".").join(splited[:-1]) def set_name(self, target: str) -> object: self._target.name = target return self def set_description(self, target: str) -> object: self._target.description = target return self