Merge pull request #2393 from alphagov/create-folder-with-user-permissions

Set user permissions when creating a folder
This commit is contained in:
Pea (Malgorzata Tyczynska)
2019-03-12 16:36:25 +00:00
committed by GitHub
3 changed files with 49 additions and 5 deletions

View File

@@ -1,13 +1,22 @@
from app import db
from app.dao.dao_utils import transactional
from app.models import ServiceUser
from app.models import ServiceUser, User
def dao_get_service_user(user_id, service_id):
return ServiceUser.query.filter_by(user_id=user_id, service_id=service_id).one()
def dao_get_active_service_users(service_id):
query = ServiceUser.query.join(ServiceUser.user).filter(
ServiceUser.service_id == service_id,
User.state == 'active'
)
return query.all()
@transactional
def dao_update_service_user(service_user):
db.session.add(service_user)

View File

@@ -11,6 +11,7 @@ from app.dao.template_folder_dao import (
dao_delete_template_folder
)
from app.dao.services_dao import dao_fetch_service_by_id
from app.dao.service_user_dao import dao_get_active_service_users
from app.errors import InvalidRequest, register_errors
from app.models import TemplateFolder
from app.template_folder.template_folder_schema import (
@@ -49,17 +50,19 @@ def create_template_folder(service_id):
data = request.get_json()
validate(data, post_create_template_folder_schema)
if data.get('parent_id') is not None:
try:
dao_get_template_folder_by_id_and_service_id(data['parent_id'], service_id)
parent_folder = dao_get_template_folder_by_id_and_service_id(data['parent_id'], service_id)
users_with_permission = parent_folder.users
except NoResultFound:
raise InvalidRequest("parent_id not found", status_code=400)
else:
users_with_permission = dao_get_active_service_users(service_id)
template_folder = TemplateFolder(
service_id=service_id,
name=data['name'].strip(),
parent_id=data['parent_id']
parent_id=data['parent_id'],
users=users_with_permission,
)
dao_create_template_folder(template_folder)