mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-16 20:48:37 -04:00
Transaction management added for one example. All tests passing.
This commit is contained in:
@@ -61,17 +61,19 @@ class PermissionDAO(DAOClass):
|
||||
query = self.get_query(filter_by_dict={'user': user.id, 'service': service.id})
|
||||
query.delete()
|
||||
|
||||
def set_user_permission(self, user, permissions):
|
||||
def set_user_service_permission(self, user, service, permissions, _commit=False):
|
||||
try:
|
||||
query = self.get_query(filter_by_dict={'user': user.id})
|
||||
query = self.get_query(filter_by_dict={'user': user.id, 'service': service.id})
|
||||
query.delete()
|
||||
for p in permissions:
|
||||
self.create_instance(p, _commit=False)
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
if _commit:
|
||||
db.session.rollback()
|
||||
raise e
|
||||
else:
|
||||
db.session.commit()
|
||||
if _commit:
|
||||
db.session.commit()
|
||||
|
||||
|
||||
permission_dao = PermissionDAO()
|
||||
|
||||
@@ -26,7 +26,6 @@ def dao_create_service(service, user):
|
||||
permission_dao.add_default_service_permissions_for_user(user, service)
|
||||
db.session.add(service)
|
||||
except Exception as e:
|
||||
# Proper clean up
|
||||
db.session.rollback()
|
||||
raise e
|
||||
else:
|
||||
@@ -38,10 +37,17 @@ def dao_update_service(service):
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def dao_add_user_to_service(service, user):
|
||||
service.users.append(user)
|
||||
db.session.add(service)
|
||||
db.session.commit()
|
||||
def dao_add_user_to_service(service, user, permissions=[]):
|
||||
try:
|
||||
from app.dao.permissions_dao import permission_dao
|
||||
service.users.append(user)
|
||||
permission_dao.set_user_service_permission(user, service, permissions, _commit=False)
|
||||
db.session.add(service)
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
raise e
|
||||
else:
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def dao_remove_user_from_service(service, user):
|
||||
@@ -51,7 +57,6 @@ def dao_remove_user_from_service(service, user):
|
||||
service.users.remove(user)
|
||||
db.session.add(service)
|
||||
except Exception as e:
|
||||
# Proper clean up
|
||||
db.session.rollback()
|
||||
raise e
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user