def get_data(self): try: t_role_id = '' for role in self.request.user.roles: if role['name'] == TENANTADMIN_ROLE: t_role_id = get_admin_roleid(self.request) role_assign_obj = client_factory(self.request).role_assignments member_id_dict = dict() number_of_admins = 0 for r_item in role_assign_obj.list( project=self.request.user.tenant_id): if not r_item.user['id'] in member_id_dict: member_id_dict[r_item.user['id']] = [False, 0, 0] if r_item.role['id'] == t_role_id: member_id_dict[r_item.user['id']][0] = True number_of_admins += 1 member_id_dict[r_item.user['id']][1] += 1 for rp_item in member_id_dict.itervalues(): rp_item[2] = number_of_admins result = list() q_args = { 'registration__userid__in': member_id_dict, 'project__projectid': self.request.user.tenant_id } for expir in Expiration.objects.filter(**q_args): reg = expir.registration result.append( MemberItem(reg, member_id_dict[reg.userid], expir.expdate)) return result except Exception: LOG.error("Member view error", exc_info=True) messages.error(self.request, _('Unable to retrieve member list.')) return list()
def get_data(self): try: t_role_id = '' for role in self.request.user.roles: if role['name'] == TENANTADMIN_ROLE: t_role_id = get_admin_roleid(self.request) role_assign_obj = client_factory(self.request).role_assignments member_id_dict = dict() number_of_admins = 0 for r_item in role_assign_obj.list(project=self.request.user.tenant_id): if not r_item.user['id'] in member_id_dict: member_id_dict[r_item.user['id']] = [False, 0, 0] if r_item.role['id'] == t_role_id: member_id_dict[r_item.user['id']][0] = True number_of_admins +=1 member_id_dict[r_item.user['id']][1] += 1 for rp_item in member_id_dict.itervalues(): rp_item[2] = number_of_admins result = list() q_args = { 'registration__userid__in' : member_id_dict, 'project__projectid' : self.request.user.tenant_id } for expir in Expiration.objects.filter(**q_args): reg = expir.registration result.append(MemberItem(reg, member_id_dict[reg.userid], expir.expdate)) return result except Exception: LOG.error("Member view error", exc_info=True) messages.error(self.request, _('Unable to retrieve member list.')) return list()
def single(self, data_table, request, obj_id): try: t_role_id = '' for role in request.user.roles: if role['name'] == TENANTADMIN_ROLE: t_role_id = get_admin_roleid(request) roles_obj = client_factory(request).roles arg_dict = {'project': request.user.tenant_id, 'user': obj_id} tmpres = EMail.objects.filter(registration__userid=obj_id) member_email = tmpres[0].email if tmpres else None tmpres = EMail.objects.filter(registration__userid=request.user.id) admin_email = tmpres[0].email if tmpres else None datum = data_table.get_object_by_id(obj_id) if datum.is_t_admin: with transaction.atomic(): PrjRole.objects.filter(registration__userid=obj_id, project__projectname=request.user. tenant_name).delete() if datum.num_of_roles == 1: missing_default = True for item in roles_obj.list(): if item.name == DEFAULT_ROLE: roles_obj.grant(item.id, **arg_dict) missing_default = False if missing_default: raise Exception('Cannot swith to member role') roles_obj.revoke(t_role_id, **arg_dict) noti_params = { 'admin_address': admin_email, 'project': request.user.tenant_name, 's_role': _('Project manager'), 'd_role': _('Project user') } notifyUser(request=request, rcpt=member_email, action=CHANGED_MEMBER_ROLE, context=noti_params, dst_project_id=request.user.project_id, dst_user_id=obj_id) else: with transaction.atomic(): prjRole = PrjRole() prjRole.registration = Registration.objects.filter( userid=obj_id)[0] prjRole.project = Project.objects.get( projectname=request.user.tenant_name) prjRole.roleid = t_role_id prjRole.save() roles_obj.grant(t_role_id, **arg_dict) noti_params = { 'admin_address': admin_email, 'project': request.user.tenant_name, 's_role': _('Project user'), 'd_role': _('Project manager') } notifyUser(request=request, rcpt=member_email, action=CHANGED_MEMBER_ROLE, context=noti_params, dst_project_id=request.user.project_id, dst_user_id=obj_id) except: LOG.error("Toggle role error", exc_info=True) messages.error(request, _('Unable to toggle the role.')) if obj_id == request.user.id: response = shortcuts.redirect(reverse_lazy('logout')) msg = _("Roles changed. Please log in again to continue.") utils.add_logout_reason(request, response, msg) return response return shortcuts.redirect( reverse_lazy('horizon:idmanager:member_manager:index'))
def single(self, data_table, request, obj_id): try: t_role_id = '' for role in request.user.roles: if role['name'] == TENANTADMIN_ROLE: t_role_id = get_admin_roleid(request) roles_obj = client_factory(request).roles arg_dict = { 'project' : request.user.tenant_id, 'user' : obj_id } tmpres = EMail.objects.filter(registration__userid=obj_id) member_email = tmpres[0].email if tmpres else None tmpres = EMail.objects.filter(registration__userid=request.user.id) admin_email = tmpres[0].email if tmpres else None datum = data_table.get_object_by_id(obj_id) if datum.is_t_admin: with transaction.atomic(): PrjRole.objects.filter( registration__userid=obj_id, project__projectname=request.user.tenant_name ).delete() if datum.num_of_roles == 1: missing_default = True for item in roles_obj.list(): if item.name == DEFAULT_ROLE: roles_obj.grant(item.id, **arg_dict) missing_default = False if missing_default: raise Exception('Cannot swith to member role') roles_obj.revoke(t_role_id, **arg_dict) noti_params = { 'admin_address' : admin_email, 'project' : request.user.tenant_name, 's_role' : _('Project manager'), 'd_role' : _('Project user') } notifyUser(request=request, rcpt=member_email, action=CHANGED_MEMBER_ROLE, context=noti_params, dst_project_id=request.user.project_id, dst_user_id=obj_id) else: with transaction.atomic(): prjRole = PrjRole() prjRole.registration = Registration.objects.filter(userid=obj_id)[0] prjRole.project = Project.objects.get(projectname=request.user.tenant_name) prjRole.roleid = t_role_id prjRole.save() roles_obj.grant(t_role_id, **arg_dict) noti_params = { 'admin_address' : admin_email, 'project' : request.user.tenant_name, 's_role' : _('Project user'), 'd_role' : _('Project manager') } notifyUser(request=request, rcpt=member_email, action=CHANGED_MEMBER_ROLE, context=noti_params, dst_project_id=request.user.project_id, dst_user_id=obj_id) except: LOG.error("Toggle role error", exc_info=True) messages.error(request, _('Unable to toggle the role.')) if obj_id == request.user.id: response = shortcuts.redirect(reverse_lazy('logout')) msg = _("Roles changed. Please log in again to continue.") utils.add_logout_reason(request, response, msg) return response return shortcuts.redirect(reverse_lazy('horizon:idmanager:member_manager:index'))
def single(self, data_table, request, obj_id): try: t_role_id = '' for role in request.user.roles: if role['name'] == TENANTADMIN_ROLE: t_role_id = get_admin_roleid(request) roles_obj = client_factory(request).roles arg_dict = { 'project' : request.user.tenant_id, 'user' : obj_id } users_obj = client_factory(request).users member = users_obj.get(obj_id) datum = data_table.get_object_by_id(obj_id) if datum.is_t_admin: if datum.num_of_roles == 1: missing_default = True for item in roles_obj.list(): if item.name == DEFAULT_ROLE: roles_obj.grant(item.id, **arg_dict) missing_default = False if missing_default: raise Exception('Cannot swith to member role') roles_obj.revoke(t_role_id, **arg_dict) noti_params = { 'admin_address' : users_obj.get(request.user.id).email, 'project' : request.user.tenant_name, 's_role' : _('Project manager'), 'd_role' : _('Project user') } noti_sbj, noti_body = notification_render(CHANGED_MEMBER_ROLE, noti_params) notifyUsers(member.email, noti_sbj, noti_body) else: roles_obj.grant(t_role_id, **arg_dict) noti_params = { 'admin_address' : users_obj.get(request.user.id).email, 'project' : request.user.tenant_name, 's_role' : _('Project user'), 'd_role' : _('Project manager') } noti_sbj, noti_body = notification_render(CHANGED_MEMBER_ROLE, noti_params) notifyUsers(member.email, noti_sbj, noti_body) except: LOG.error("Toggle role error", exc_info=True) messages.error(request, _('Unable to toggle the role.')) if obj_id == request.user.id: response = shortcuts.redirect(reverse_lazy('logout')) msg = _("Roles changed. Please log in again to continue.") utils.add_logout_reason(request, response, msg) return response return shortcuts.redirect(reverse_lazy('horizon:idmanager:member_manager:index'))