mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-23 08:51:30 -05: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 = self.get_query(filter_by_dict={'user': user.id, 'service': service.id})
|
||||||
query.delete()
|
query.delete()
|
||||||
|
|
||||||
def set_user_permission(self, user, permissions):
|
def set_user_service_permission(self, user, service, permissions, _commit=False):
|
||||||
try:
|
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()
|
query.delete()
|
||||||
for p in permissions:
|
for p in permissions:
|
||||||
self.create_instance(p, _commit=False)
|
self.create_instance(p, _commit=False)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.session.rollback()
|
if _commit:
|
||||||
|
db.session.rollback()
|
||||||
raise e
|
raise e
|
||||||
else:
|
else:
|
||||||
db.session.commit()
|
if _commit:
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
permission_dao = PermissionDAO()
|
permission_dao = PermissionDAO()
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ def dao_create_service(service, user):
|
|||||||
permission_dao.add_default_service_permissions_for_user(user, service)
|
permission_dao.add_default_service_permissions_for_user(user, service)
|
||||||
db.session.add(service)
|
db.session.add(service)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Proper clean up
|
|
||||||
db.session.rollback()
|
db.session.rollback()
|
||||||
raise e
|
raise e
|
||||||
else:
|
else:
|
||||||
@@ -38,10 +37,17 @@ def dao_update_service(service):
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
def dao_add_user_to_service(service, user):
|
def dao_add_user_to_service(service, user, permissions=[]):
|
||||||
service.users.append(user)
|
try:
|
||||||
db.session.add(service)
|
from app.dao.permissions_dao import permission_dao
|
||||||
db.session.commit()
|
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):
|
def dao_remove_user_from_service(service, user):
|
||||||
@@ -51,7 +57,6 @@ def dao_remove_user_from_service(service, user):
|
|||||||
service.users.remove(user)
|
service.users.remove(user)
|
||||||
db.session.add(service)
|
db.session.add(service)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Proper clean up
|
|
||||||
db.session.rollback()
|
db.session.rollback()
|
||||||
raise e
|
raise e
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -152,9 +152,9 @@ def add_user_to_service(service_id, user_id):
|
|||||||
return jsonify(result='error',
|
return jsonify(result='error',
|
||||||
message='User id: {} already part of service id: {}'.format(user_id, service_id)), 400
|
message='User id: {} already part of service id: {}'.format(user_id, service_id)), 400
|
||||||
|
|
||||||
dao_add_user_to_service(service, user)
|
permissions_json = request.get_json().get('permissions', [])
|
||||||
permissions = request.get_json()['permissions']
|
permissions = _process_permissions(user, service, permissions_json)
|
||||||
_process_permissions(user, service, permissions)
|
dao_add_user_to_service(service, user, permissions)
|
||||||
|
|
||||||
data, errors = service_schema.dump(service)
|
data, errors = service_schema.dump(service)
|
||||||
return jsonify(data=data), 201
|
return jsonify(data=data), 201
|
||||||
@@ -183,4 +183,4 @@ def _process_permissions(user, service, permission_groups):
|
|||||||
for permission in permissions:
|
for permission in permissions:
|
||||||
permission.user = user
|
permission.user = user
|
||||||
permission.service = service
|
permission.service = service
|
||||||
permission_dao.set_user_permission(user, permissions)
|
return permissions
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ def set_permissions(user_id, service_id):
|
|||||||
for p in permissions:
|
for p in permissions:
|
||||||
p.user = user
|
p.user = user
|
||||||
p.service = service
|
p.service = service
|
||||||
permission_dao.set_user_permission(user, permissions)
|
permission_dao.set_user_service_permission(user, service, permissions, _commit=True)
|
||||||
return jsonify({}), 204
|
return jsonify({}), 204
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user