예제 #1
0
    def get_serializer_context(self, *args, **kwargs):
        full_context = super(OrganizationDetail,
                             self).get_serializer_context(*args, **kwargs)

        if not hasattr(self, 'kwargs') or 'pk' not in self.kwargs:
            return full_context
        org_id = int(self.kwargs['pk'])

        org_counts = {}
        access_kwargs = {
            'accessor': self.request.user,
            'role_field': 'read_role'
        }
        direct_counts = Organization.objects.filter(id=org_id).annotate(
            users=Count('member_role__members', distinct=True),
            admins=Count('admin_role__members',
                         distinct=True)).values('users', 'admins')

        if not direct_counts:
            return full_context

        org_counts = direct_counts[0]
        org_counts['inventories'] = Inventory.accessible_objects(
            **access_kwargs).filter(organization__id=org_id).count()
        org_counts['teams'] = Team.accessible_objects(**access_kwargs).filter(
            organization__id=org_id).count()
        org_counts['projects'] = Project.accessible_objects(
            **access_kwargs).filter(organization__id=org_id).count()
        org_counts['job_templates'] = JobTemplate.accessible_objects(
            **access_kwargs).filter(organization__id=org_id).count()

        full_context['related_field_counts'] = {}
        full_context['related_field_counts'][org_id] = org_counts

        return full_context
예제 #2
0
파일: inventory.py 프로젝트: bakuppus/awx-4
 def get_queryset(self):
     qs = Inventory.accessible_objects(self.request.user, 'read_role')
     qs = qs.select_related('admin_role', 'read_role', 'update_role', 'use_role', 'adhoc_role')
     qs = qs.prefetch_related('created_by', 'modified_by', 'organization')
     return qs