group.py 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # -*- coding: utf-8 -*-
  2. import typing
  3. from sqlalchemy.orm.exc import NoResultFound
  4. from tracim.exceptions import GroupNotExist
  5. __author__ = 'damien'
  6. from tracim.models.auth import Group, User
  7. from sqlalchemy.orm import Query
  8. from sqlalchemy.orm import Session
  9. class GroupApi(object):
  10. def __init__(
  11. self,
  12. session: Session,
  13. current_user: typing.Optional[User],
  14. ):
  15. self._user = current_user
  16. self._session = session
  17. def _base_query(self) -> Query:
  18. return self._session.query(Group)
  19. def get_one(self, group_id) -> Group:
  20. try:
  21. group = self._base_query().filter(Group.group_id == group_id).one()
  22. return group
  23. except NoResultFound:
  24. raise GroupNotExist()
  25. def get_one_with_name(self, group_name) -> Group:
  26. try:
  27. group = self._base_query().filter(Group.group_name == group_name).one()
  28. return group
  29. except NoResultFound:
  30. raise GroupNotExist()
  31. def get_all(self):
  32. return self._base_query().order_by(Group.group_id).all()