Files
notifications-api/app/dao/permissions_dao.py

61 lines
1.9 KiB
Python
Raw Normal View History

from app import db
from app.dao import DAOClass
from app.enums import PermissionType
from app.models import Permission
2016-03-02 11:10:52 +00:00
class PermissionDAO(DAOClass):
class Meta:
model = Permission
def add_default_service_permissions_for_user(self, user, service):
for name in PermissionType.defaults():
permission = Permission(permission=name, user=user, service=service)
self.create_instance(permission, _commit=False)
def remove_user_service_permissions(self, user, service):
query = self.Meta.model.query.filter_by(user=user, service=service)
query.delete()
def remove_user_service_permissions_for_all_services(self, user):
query = self.Meta.model.query.filter_by(user=user)
query.delete()
2023-08-29 14:54:30 -07:00
def set_user_service_permission(
self, user, service, permissions, _commit=False, replace=False
):
try:
if replace:
query = self.Meta.model.query.filter_by(user=user, service=service)
query.delete()
for p in permissions:
p.user = user
p.service = service
self.create_instance(p, _commit=False)
except Exception as e:
if _commit:
db.session.rollback()
raise e
else:
if _commit:
db.session.commit()
def get_permissions_by_user_id(self, user_id):
2023-08-29 14:54:30 -07:00
return (
self.Meta.model.query.filter_by(user_id=user_id)
.join(Permission.service)
.filter_by(active=True)
.all()
)
def get_permissions_by_user_id_and_service_id(self, user_id, service_id):
2023-08-29 14:54:30 -07:00
return (
self.Meta.model.query.filter_by(user_id=user_id)
.join(Permission.service)
.filter_by(active=True, id=service_id)
.all()
)
permission_dao = PermissionDAO()