| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import json
- import pathlib
- from .user import user
- from .user import user_factory
- from .user import user_builder
- from .exception import config_exception
- from .users_collection import users_collection
- class 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 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
|