reservations_collection.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from .product import product
  2. from .reservation import reservation
  3. class reservations_collection:
  4. def __init__(self) -> None:
  5. self.__content = list()
  6. def append(self, target: reservation) -> object:
  7. self.__content.append(target)
  8. return self
  9. def _filter(self, action: function) -> object:
  10. new = list()
  11. for item in self.__content:
  12. if action(item):
  13. new.append(item)
  14. self.__content = new
  15. return self
  16. def by_target(self, target: product) -> object:
  17. if not target.in_database:
  18. raise reservation_exception("Target product must be in database.")
  19. return self._filter(lambda item: item.target_id == target.id)
  20. def by_email(self, target: str) -> object:
  21. return self._filter(lambda item: item.email == target)
  22. def by_phone_number(self, target: str) -> object:
  23. return self._filter(lambda item: item.phone_number == target)
  24. @property
  25. def result(self) -> list:
  26. return self.__content