Skip to content

Commit

Permalink
services: added group resource service permission
Browse files Browse the repository at this point in the history
  • Loading branch information
ergo committed Nov 21, 2016
1 parent 873d2c7 commit 1ddb3dd
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 1 deletion.
8 changes: 7 additions & 1 deletion ziggurat_foundations/models/group_resource_permission.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.orm import validates
from ziggurat_foundations.models.base import BaseModel
from ziggurat_foundations.models.services.group_resource_permission import \
GroupResourcePermissionService

__all__ = ['GroupResourcePermissionMixin']

Expand All @@ -11,8 +13,12 @@ class GroupResourcePermissionMixin(BaseModel):
"""
Mixin for GroupResourcePermission model
"""
__table_args__ = (sa.PrimaryKeyConstraint(
'group_id', 'resource_id', 'perm_name',
name='pk_users_resources_permissions '),
{'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'})

__table_args__ = {'mysql_engine': 'InnoDB', 'mysql_charset': 'utf8'}
_ziggurat_services = [GroupResourcePermissionService]

@declared_attr
def __tablename__(self):
Expand Down
23 changes: 23 additions & 0 deletions ziggurat_foundations/models/services/group_resource_permission.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from __future__ import unicode_literals
from ziggurat_foundations.models.services import BaseService
from ziggurat_foundations.models.base import get_db_session

__all__ = ['GroupResourcePermissionService']


class GroupResourcePermissionService(BaseService):
@classmethod
def get(cls, group_id, resource_id, perm_name, db_session=None):
"""
Fetch row using primary key -
will use existing object in session if already present
:param group_id:
:param resource_id:
:param perm_name:
:param db_session:
:return:
"""
db_session = get_db_session(db_session)
return db_session.query(cls.model).get(
[group_id, resource_id, perm_name])
20 changes: 20 additions & 0 deletions ziggurat_foundations/tests/test_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
UserPermissionService
from ziggurat_foundations.models.services.user_resource_permission import \
UserResourcePermissionService
from ziggurat_foundations.models.services.group_resource_permission import \
GroupResourcePermissionService


class TestUserPermissions(BaseTestCase):
Expand Down Expand Up @@ -759,6 +761,24 @@ def test_resources_with_possible_perms_group2(self, db_session):

check_one_in_other(perms, second)

def test_group_resource_permission(self, db_session):
self.set_up_user_group_and_perms(db_session)
resource3 = add_resource_b(db_session, 3, 'other resource')
db_session.flush()
group_permission2 = GroupResourcePermission(
perm_name='group_perm2',
group_id=self.group2.id,
)
row = GroupResourcePermissionService.get(
group_id=self.group2.id, resource_id=self.resource2.resource_id,
perm_name='group_perm2', db_session=db_session)
assert row is None
self.resource2.group_permissions.append(group_permission2)
row = GroupResourcePermissionService.get(
group_id=self.group2.id, resource_id=self.resource2.resource_id,
perm_name='group_perm2', db_session=db_session)
assert row is not None


class TestUserPermission(BaseTestCase):
def test_repr(self, db_session):
Expand Down

0 comments on commit 1ddb3dd

Please sign in to comment.