コード例 #1
0
    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()
コード例 #2
0
    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()
コード例 #3
0
    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'))
コード例 #4
0
    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'))
コード例 #5
0
    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'))