[WIP] invited user now has comma separated permission values

stored against it so that user can be created with correct
permissions.
This commit is contained in:
Adam Shimali
2016-02-29 09:49:12 +00:00
parent 6f786143c8
commit 59aec1939c
7 changed files with 47 additions and 5 deletions

View File

@@ -264,6 +264,12 @@ class InvitedUser(db.Model):
default=datetime.datetime.now) default=datetime.datetime.now)
status = db.Column( status = db.Column(
db.Enum(*INVITED_USER_STATUS_TYPES, name='invited_users_status_types'), nullable=False, default='pending') db.Enum(*INVITED_USER_STATUS_TYPES, name='invited_users_status_types'), nullable=False, default='pending')
permissions = db.Column(db.String, nullable=False)
# would like to have used properties for this but haven't found a way to make them
# play nice with marshmallow yet
def get_permissions(self):
return self.permissions.split(',')
class Permission(db.Model): class Permission(db.Model):

View File

@@ -166,6 +166,7 @@ class NotificationStatusSchema(BaseSchema):
class InvitedUserSchema(BaseSchema): class InvitedUserSchema(BaseSchema):
class Meta: class Meta:
model = models.InvitedUser model = models.InvitedUser

View File

@@ -0,0 +1,26 @@
"""empty message
Revision ID: 0029_add_permissions_to_invite
Revises: 0028_add_default_permissions
Create Date: 2016-02-26 16:17:30.612924
"""
# revision identifiers, used by Alembic.
revision = '0029_add_permissions_to_invite'
down_revision = '0028_add_default_permissions'
from alembic import op
import sqlalchemy as sa
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.add_column('invited_users', sa.Column('permissions', sa.String(), nullable=False))
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_column('invited_users', 'permissions')
### end Alembic commands ###

View File

@@ -3,4 +3,4 @@
set -e set -e
source environment.sh source environment.sh
celery -A run_celery.notify_celery worker --loglevel=INFO --logfile=/var/log/notify/application.log --concurrency=4 -Q sms,sms-code,email-code,email,process-job,bulk-sms,bulk-email celery -A run_celery.notify_celery worker --loglevel=INFO --concurrency=4 -Q sms,sms-code,email-code,email,process-job,bulk-sms,bulk-email

View File

@@ -316,7 +316,8 @@ def sample_invited_user(notify_db,
data = { data = {
'service': service, 'service': service,
'email_address': to_email_address, 'email_address': to_email_address,
'from_user': from_user 'from_user': from_user,
'permissions': 'send_messages,manage_service,manage_api_keys'
} }
invited_user = InvitedUser(**data) invited_user = InvitedUser(**data)
save_invited_user(invited_user) save_invited_user(invited_user)

View File

@@ -17,7 +17,8 @@ def test_create_invited_user(notify_db, notify_db_session, sample_service):
data = { data = {
'service': sample_service, 'service': sample_service,
'email_address': email_address, 'email_address': email_address,
'from_user': invite_from 'from_user': invite_from,
'permissions': 'send_messages,manage_service'
} }
invited_user = InvitedUser(**data) invited_user = InvitedUser(**data)
@@ -26,6 +27,10 @@ def test_create_invited_user(notify_db, notify_db_session, sample_service):
assert InvitedUser.query.count() == 1 assert InvitedUser.query.count() == 1
assert invited_user.email_address == email_address assert invited_user.email_address == email_address
assert invited_user.from_user == invite_from assert invited_user.from_user == invite_from
permissions = invited_user.get_permissions()
assert len(permissions) == 2
assert 'send_messages' in permissions
assert 'manage_service' in permissions
def test_get_invited_user(notify_db, notify_db_session, sample_invited_user): def test_get_invited_user(notify_db, notify_db_session, sample_invited_user):

View File

@@ -14,7 +14,8 @@ def test_create_invited_user(notify_api, sample_service):
data = { data = {
'service': str(sample_service.id), 'service': str(sample_service.id),
'email_address': email_address, 'email_address': email_address,
'from_user': invite_from.id 'from_user': invite_from.id,
'permissions': 'send_messages,manage_service,manage_api_keys'
} }
data = json.dumps(data) data = json.dumps(data)
@@ -36,6 +37,7 @@ def test_create_invited_user(notify_api, sample_service):
assert json_resp['data']['service'] == str(sample_service.id) assert json_resp['data']['service'] == str(sample_service.id)
assert json_resp['data']['email_address'] == email_address assert json_resp['data']['email_address'] == email_address
assert json_resp['data']['from_user'] == invite_from.id assert json_resp['data']['from_user'] == invite_from.id
assert json_resp['data']['permissions'] == 'send_messages,manage_service,manage_api_keys'
assert json_resp['data']['id'] assert json_resp['data']['id']
@@ -49,7 +51,8 @@ def test_create_invited_user_invalid_email(notify_api, sample_service):
data = { data = {
'service': str(sample_service.id), 'service': str(sample_service.id),
'email_address': email_address, 'email_address': email_address,
'from_user': invite_from.id 'from_user': invite_from.id,
'permissions': 'send_messages,manage_service,manage_api_keys'
} }
data = json.dumps(data) data = json.dumps(data)