def _project_and_permission(private=False, reader=False, editor=False, admin=False, account_id=1): project = Project(private=private) db.session.add(project) db.session.commit() perm = Permission(account_id=account_id, project_id=project.id, reader=reader, editor=editor, admin=admin) db.session.add(perm) db.session.commit() return project, perm
def save(data, permission=None): validator = PermissionValidator() data = validator.deserialize(data) if permission is None: q = Permission.all() q = q.filter(Permission.project == data['project']) q = q.filter(Permission.account == data['account']) permission = q.first() if permission is None: permission = Permission() permission.project = data.get('project') permission.account = data.get('account') permission.reader = data['reader'] or data['editor'] or data['admin'] permission.editor = data['editor'] or data['admin'] permission.admin = data['admin'] db.session.add(permission) db.session.flush() return permission