diff --git a/app/dao/permissions_dao.py b/app/dao/permissions_dao.py index 09bf82f35..601a95293 100644 --- a/app/dao/permissions_dao.py +++ b/app/dao/permissions_dao.py @@ -7,8 +7,9 @@ from werkzeug.datastructures import MultiDict manage_service = 'manage_service' send_messages = 'send_messages' manage_api_keys = 'manage_api_keys' +manage_templates = 'manage_templates' # Default permissions for a service -default_service_permissions = [manage_service, send_messages, manage_api_keys] +default_service_permissions = [manage_service, send_messages, manage_api_keys, manage_templates] class PermissionDAO(DAOClass): diff --git a/migrations/versions/0030_add_template_permission.py b/migrations/versions/0030_add_template_permission.py new file mode 100644 index 000000000..727ff00af --- /dev/null +++ b/migrations/versions/0030_add_template_permission.py @@ -0,0 +1,36 @@ +"""empty message + +Revision ID: 0030_add_template_permission +Revises: 0029_add_permissions_to_invite +Create Date: 2016-02-26 10:33:20.536362 + +""" + +# revision identifiers, used by Alembic. +revision = '0030_add_template_permission' +down_revision = '0029_add_permissions_to_invite' +import uuid +from datetime import datetime +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +def upgrade(): + ### commands auto generated by Alembic - please adjust! ### + conn = op.get_bind() + user_services = conn.execute("SELECT * FROM user_to_service").fetchall() + for entry in user_services: + id_ = uuid.uuid4() + created_at = datetime.now().isoformat().replace('T', ' ') + conn.execute(( + "INSERT INTO permissions (id, user_id, service_id, permission, created_at)" + " VALUES ('{}', '{}', '{}', 'manage_templates', '{}')").format(id_, entry[0], entry[1], created_at)) + ### end Alembic commands ### + + +def downgrade(): + ### commands auto generated by Alembic - please adjust! ### + conn = op.get_bind() + conn.execute("DELETE FROM permissions where permission='manage_templates") + + ### end Alembic commands ### \ No newline at end of file diff --git a/tests/app/user/test_rest.py b/tests/app/user/test_rest.py index a94df0bdf..c0553cce9 100644 --- a/tests/app/user/test_rest.py +++ b/tests/app/user/test_rest.py @@ -30,7 +30,8 @@ def test_get_user_list(notify_api, notify_db, notify_db_session, sample_user, sa "state": "active", "failed_login_count": 0, "permissions": { - str(sample_admin_service_id): ['manage_service', 'send_messages', 'manage_api_keys']} + str(sample_admin_service_id): [ + 'manage_service', 'send_messages', 'manage_api_keys', 'manage_templates']} } print(json_resp['data']) assert expected in json_resp['data'] @@ -60,7 +61,8 @@ def test_get_user(notify_api, notify_db, notify_db_session, sample_user, sample_ "state": "active", "failed_login_count": 0, "permissions": { - str(sample_admin_service_id): ['manage_service', 'send_messages', 'manage_api_keys']} + str(sample_admin_service_id): [ + 'manage_service', 'send_messages', 'manage_api_keys', 'manage_templates']} } assert json_resp['data'] == expected @@ -200,7 +202,8 @@ def test_put_user(notify_api, notify_db, notify_db_session, sample_user, sample_ "state": "active", "failed_login_count": 0, "permissions": { - str(sample_admin_service_id): ['manage_service', 'send_messages', 'manage_api_keys']} + str(sample_admin_service_id): [ + 'manage_service', 'send_messages', 'manage_api_keys', 'manage_templates']} } assert json_resp['data'] == expected assert json_resp['data']['email_address'] == new_email @@ -299,7 +302,8 @@ def test_get_user_by_email(notify_api, notify_db, notify_db_session, sample_user "state": "active", "failed_login_count": 0, "permissions": { - str(sample_admin_service_id): ['manage_service', 'send_messages', 'manage_api_keys']} + str(sample_admin_service_id): [ + 'manage_service', 'send_messages', 'manage_api_keys', 'manage_templates']} } assert json_resp['data'] == expected