From f265d2fe0f4d1e92372bedf4dfaae5805ed00095 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Sun, 22 Jan 2017 17:09:29 -0500 Subject: [PATCH] tighten up code for new UJ queryset --- awx/main/access.py | 11 +++-------- awx/main/models/unified_jobs.py | 4 ++-- tools/data_generators/rbac_dummy_data_generator.py | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/awx/main/access.py b/awx/main/access.py index e99a77dd88..ded2c18239 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -1883,14 +1883,12 @@ class UnifiedJobAccess(BaseAccess): qs = self.model.objects.all() else: inv_pk_qs = Inventory._accessible_pk_qs(Inventory, self.user, 'read_role') - inv_update_qs = InventoryUpdate.objects.filter(inventory_source__inventory__id__in=inv_pk_qs) - ad_hoc_command_qs = AdHocCommand.objects.filter(inventory__id__in=inv_pk_qs) org_auditor_qs = Organization.objects.filter( Q(admin_role__members=self.user) | Q(auditor_role__members=self.user)) qs = self.model.objects.filter( - Q(unified_job_template__id__in=UnifiedJobTemplate.accessible_pk_qs(self.user, 'read_role')) | - Q(inventoryupdate__in=inv_update_qs) | - Q(adhoccommand__in=ad_hoc_command_qs) | + Q(unified_job_template_id__in=UnifiedJobTemplate.accessible_pk_qs(self.user, 'read_role')) | + Q(inventoryupdate__inventory_source__inventory__id__in=inv_pk_qs) | + Q(adhoccommand__inventory__id__in=inv_pk_qs) | Q(job__inventory__organization__in=org_auditor_qs) | Q(job__project__organization__in=org_auditor_qs) ) @@ -1919,9 +1917,6 @@ class UnifiedJobAccess(BaseAccess): # 'job_template__credential', # 'job_template__cloud_credential', #) - # Maybe we can do these, like: - # 'projectupdate__project', - # 'inventoryupdate__inventory' return qs.all() diff --git a/awx/main/models/unified_jobs.py b/awx/main/models/unified_jobs.py index 896e740c0c..fdbe566fc2 100644 --- a/awx/main/models/unified_jobs.py +++ b/awx/main/models/unified_jobs.py @@ -177,8 +177,8 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique, Notificatio ''' ujt_names = [c.__name__.lower() for c in cls.__subclasses__() if c.__name__.lower() not in ['inventorysource', 'systemjobtemplate']] - subclass_content_types = ContentType.objects.filter( - model__in=ujt_names).values_list('id', flat=True) + subclass_content_types = list(ContentType.objects.filter( + model__in=ujt_names).values_list('id', flat=True)) return ResourceMixin._accessible_pk_qs(cls, accessor, role_field, content_types=subclass_content_types) diff --git a/tools/data_generators/rbac_dummy_data_generator.py b/tools/data_generators/rbac_dummy_data_generator.py index 8fe910d401..a2c69e35c9 100755 --- a/tools/data_generators/rbac_dummy_data_generator.py +++ b/tools/data_generators/rbac_dummy_data_generator.py @@ -669,11 +669,11 @@ try: job_idx = 0 for n in spread(n_job_events, n_jobs): job = jobs[job_idx] + # Check if job already has events, for idempotence if not job._is_new: continue sys.stdout.write('\r Creating %d job events for job %d' % (n, job.id)) sys.stdout.flush() - # Check if job already has events, for idempotence JobEvent.objects.bulk_create([ JobEvent( created=now(),