| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | import jsonimport pathlibfrom .user import userfrom .user import user_factoryfrom .user import user_builderfrom .exception import config_exceptionfrom .users_collection import users_collectionclass users_saver:    """    This class is responsible for saving and storing user config file.    """    def __init__(self, collection: users_collection) -> None:        """        This initialize class, by set users collection.                Parameters:            collection (users_collection): This is collection of users to save        """        self.__collection = collection        self.__where = None        @property    def users(self) -> list:        """ This return list of users in setup collection. """        return [ count.flat for count in self.__collection.all ]    def drop(self, where: pathlib.Path) -> object:        """        This drop config file, when it already exists. If given path is         directory, raise config exception. Path is been saving to use it         in save. When first call to drop, save after it could be call without        parameters.        Parameters:            where (pathlib.Path): Place where config file had been                Returns:            (users_saver): Object instance itself        """        self.__where = where        if not where.exists():            return self        if where.is_dir():            content = "Can not remove users config, because target \""            content = content + str(where) + "\" is file."            raise config_exception(content)                where.unlink()        return self        def save(self, where: pathlib.Path | None = None) -> object:        """        This function save users collection as users config file. When place        is not provided, trying to load it from previous place, in drop. When        config file already exists, raise config.        Parameters:            where (pathlib.Path | None): Place to save config (default: None)        Returns:            (users_saver): Instance of this class itself        """        if where is None:            where = self.__where        if where is None:            raise RuntimeError("Where is not set.")        if where.exists():            content = "Config file \"" + str(where) + "\" already exists."                        raise config_exception(content)        with where.open("w") as handle:            handle.write(json.dumps(self.users))        return self
 |