diff --git a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py index ed3e3d6d..40f53c13 100644 --- a/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py +++ b/orm/services/customer_manager/cms_rest/controllers/v1/orm/group/region_users.py @@ -5,7 +5,8 @@ from wsmeext.pecan import wsexpose from orm.common.orm_common.utils import api_error_utils as err_utils from orm.common.orm_common.utils import utils from orm.services.customer_manager.cms_rest.logger import get_logger -from orm.services.customer_manager.cms_rest.logic.error_base import ErrorStatus, NotFound +from orm.services.customer_manager.cms_rest.logic.error_base import \ + ErrorStatus, NotFound from orm.services.customer_manager.cms_rest.logic.group_logic import GroupLogic from orm.services.customer_manager.cms_rest.model.GroupModels import \ RegionUser, RegionUserResultWrapper @@ -18,9 +19,10 @@ class RegionUserController(rest.RestController): @wsexpose([str], str, str, str, rest_content_types='json') def get(self, group_id, region_id, user_id): - return ["This is groups region user controller for group id: " + group_id] + return ["This is groups region user controller for group id: " + + group_id] - @wsexpose([RegionUserResultWrapper], str, str, body=[RegionUser], + @wsexpose(RegionUserResultWrapper, str, str, body=[RegionUser], rest_content_types='json', status_code=200) def post(self, group_id, region_id, users): LOG.info("RegionUserController - Add users to group id {0} " diff --git a/orm/services/customer_manager/cms_rest/data/sql_alchemy/models.py b/orm/services/customer_manager/cms_rest/data/sql_alchemy/models.py index b150f36f..0dc9bef7 100755 --- a/orm/services/customer_manager/cms_rest/data/sql_alchemy/models.py +++ b/orm/services/customer_manager/cms_rest/data/sql_alchemy/models.py @@ -126,43 +126,53 @@ class Groups(Base, CMSBaseModel): domain_name = self.domain_name description = self.description enabled = True if self.enabled else False - regions = [group_region.to_wsme() for group_region in self.group_regions if - group_region.region_id != -1] + regions = [group_region.to_wsme() for group_region in + self.group_regions if group_region.region_id != -1] + + roles = [] customer_roles = [customer_role.get_role_name() for customer_role in self.groups_customer_roles] domain_roles = [domain_role.get_role_name() for domain_role in self.groups_domain_roles] roles = sorted(set(customer_roles + domain_roles)) - # users = [groups_user.to_wsme() for groups_user in self.groups_users if - # groups_user.region_id == -1] + + users = [] + for user in self.groups_users: + if user.region_id == -1: + users.append(GroupWsmeModels.User(id=[user.user.name], + domain=user.domain_name)) result = GroupWsmeModels.Group(description=description, name=name, uuid=uuid, regions=regions, roles=list(roles), + users=users, enabled=enabled, domain=domain_name) return result ''' -' GroupsRegion is a DataObject and contains all the fields defined in GroupsRegion -' table record. Defined as SqlAlchemy model map to a table +' GroupsRegion is a DataObject and contains all the fields defined in +' in GroupsRegion table record. Defined as SqlAlchemy model map to a table ''' class GroupsRegion(Base, CMSBaseModel): __tablename__ = "groups_region" - group_id = Column(String(64), ForeignKey('groups.uuid'), primary_key=True, nullable=False, index=True) - region_id = Column(Integer, ForeignKey('cms_region.id'), primary_key=True, nullable=False, index=True) + group_id = Column(String(64), ForeignKey('groups.uuid'), + primary_key=True, nullable=False, index=True) + region_id = Column(Integer, ForeignKey('cms_region.id'), + primary_key=True, nullable=False, index=True) - group_region_users = relationship("GroupsUser", - uselist=True, - order_by="GroupsUser.user_id", - primaryjoin="and_(GroupsRegion.group_id==GroupsUser.group_id," - "GroupsRegion.region_id==GroupsUser.region_id)") + group_region_users = relationship( + "GroupsUser", + uselist=True, + order_by="GroupsUser.domain_name", + primaryjoin="and_(GroupsRegion.group_id==GroupsUser.group_id," + "GroupsRegion.region_id==GroupsUser.region_id)") region = relationship("Region", viewonly=True) @@ -173,7 +183,8 @@ class GroupsRegion(Base, CMSBaseModel): return dict( group_id=self.group_id, region_id=self.region_id, - group_region_users=[groups_user.__json__() for groups_user in self.group_region_users] + group_region_users=[groups_user.__json__() for groups_user in + self.group_region_users] ) def get_proxy_dict(self): @@ -187,21 +198,12 @@ class GroupsRegion(Base, CMSBaseModel): def to_wsme(self): name = self.region.name type = self.region.type - # users = [groups_user.to_wsme() for groups_user in self.group_region_users if - # groups_user.region_id > -1] - users = [] - user = None - for user_role in self.group_region_users: - if user and user.id != user_role.user.name: - users.append(user) - user = GroupWsmeModels.User(id=[user_role.user.name], domain=user_role.domain_name) - elif user is None: - user = GroupWsmeModels.User(id=[user_role.user.name], domain=user_role.domain_name) - else: - user.role.append(user_role.user.name) - if user: - users.append(user) + + for user in self.group_region_users: + if user.region_id != -1: + users.append(GroupWsmeModels.User(id=[user.user.name], + domain=user.domain_name)) region = GroupWsmeModels.Region(name=name, type=type, diff --git a/orm/services/customer_manager/cms_rest/model/GroupModels.py b/orm/services/customer_manager/cms_rest/model/GroupModels.py index 51b9f07f..c691a985 100755 --- a/orm/services/customer_manager/cms_rest/model/GroupModels.py +++ b/orm/services/customer_manager/cms_rest/model/GroupModels.py @@ -43,23 +43,6 @@ class User(Model): self.domain = domain -class UserUsers(Model): - users = wsme.wsattr([str], mandatory=True) - - def __init__(self, user=""): - self.users = users - - def validate_model(self): - # check no duplicate users in dictonary list - # if len(set(self.users)) != len(self.users) and - # len(set(self.domain)) != len(self.users): - # raise ErrorStatus(400, "Duplicate regions found") - pass - - # Remove the below return once implementation is done - return None - - class RegionUser(Model): id = wsme.wsattr([str]) domain = wsme.wsattr(wsme.types.text, mandatory=True) @@ -69,25 +52,6 @@ class RegionUser(Model): self.domain = domain -# class UserAssignment(Model): -# userUsers = wsme.wsattr([UserUsers], mandatory=True) -# userRegions = wsme.wsattr([UserRegions], mandatory=True) -# -# def __init__(self, status="", userUsers=None, userRegions=""): -# self.userUsers = userUsers -# self.userRegions = userRegions -# -# def validate_model(self): -# -# if not userUsers and not userRegions: -# raise ErrorStatus(400, "Either regions or users" -# "is required. ") - - # check no duplicate users in dictonary list - # for userRegion in userRegions: - # if dups found issue 400 duplicate region error - - class Region(Model): """network model the region """