Default permissions added on service creation. All tests working.

This commit is contained in:
Nicholas Staples
2016-02-26 17:11:30 +00:00
parent 75b9f77f92
commit 9b73b0d9f8
6 changed files with 79 additions and 17 deletions

View File

@@ -14,9 +14,10 @@ class DAOClass(object):
class Meta:
model = None
def create_instance(self, inst):
def create_instance(self, inst, _commit=True):
db.session.add(inst)
db.session.commit()
if _commit:
db.session.commit()
def update_instance(self, inst, update_dict):
# Make sure the id is not included in the update_dict

View File

@@ -2,10 +2,23 @@ from app.dao import DAOClass
from app.models import Permission
# Service Permissions
manage_service = 'manage_service'
send_messages = 'send_messages'
manage_api_keys = 'manage_api_keys'
# Default permissions for a service
default_service_permissions = [manage_service, send_messages, manage_api_keys]
class PermissionDAO(DAOClass):
class Meta:
model = Permission
def add_default_service_permissions_for_user(self, user, service):
for name in default_service_permissions:
permission = Permission(permission=name, user=user, service=service)
self.create_instance(permission, _commit=False)
permission_dao = PermissionDAO()

View File

@@ -20,7 +20,14 @@ def dao_fetch_service_by_id_and_user(service_id, user_id):
def dao_create_service(service, user):
service.users.append(user)
try:
from app.dao.permissions_dao import permission_dao
service.users.append(user)
permission_dao.add_default_service_permissions_for_user(user, service)
except Exception as e:
# Proper clean up
db.session.rollback()
raise e
db.session.add(service)
db.session.commit()