tighten up code for new UJ queryset

This commit is contained in:
AlanCoding
2017-01-22 17:09:29 -05:00
parent 36c68178dd
commit f265d2fe0f
3 changed files with 6 additions and 11 deletions

View File

@@ -1883,14 +1883,12 @@ class UnifiedJobAccess(BaseAccess):
qs = self.model.objects.all() qs = self.model.objects.all()
else: else:
inv_pk_qs = Inventory._accessible_pk_qs(Inventory, self.user, 'read_role') 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( org_auditor_qs = Organization.objects.filter(
Q(admin_role__members=self.user) | Q(auditor_role__members=self.user)) Q(admin_role__members=self.user) | Q(auditor_role__members=self.user))
qs = self.model.objects.filter( qs = self.model.objects.filter(
Q(unified_job_template__id__in=UnifiedJobTemplate.accessible_pk_qs(self.user, 'read_role')) | Q(unified_job_template_id__in=UnifiedJobTemplate.accessible_pk_qs(self.user, 'read_role')) |
Q(inventoryupdate__in=inv_update_qs) | Q(inventoryupdate__inventory_source__inventory__id__in=inv_pk_qs) |
Q(adhoccommand__in=ad_hoc_command_qs) | Q(adhoccommand__inventory__id__in=inv_pk_qs) |
Q(job__inventory__organization__in=org_auditor_qs) | Q(job__inventory__organization__in=org_auditor_qs) |
Q(job__project__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__credential',
# 'job_template__cloud_credential', # 'job_template__cloud_credential',
#) #)
# Maybe we can do these, like:
# 'projectupdate__project',
# 'inventoryupdate__inventory'
return qs.all() return qs.all()

View File

@@ -177,8 +177,8 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique, Notificatio
''' '''
ujt_names = [c.__name__.lower() for c in cls.__subclasses__() ujt_names = [c.__name__.lower() for c in cls.__subclasses__()
if c.__name__.lower() not in ['inventorysource', 'systemjobtemplate']] if c.__name__.lower() not in ['inventorysource', 'systemjobtemplate']]
subclass_content_types = ContentType.objects.filter( subclass_content_types = list(ContentType.objects.filter(
model__in=ujt_names).values_list('id', flat=True) model__in=ujt_names).values_list('id', flat=True))
return ResourceMixin._accessible_pk_qs(cls, accessor, role_field, content_types=subclass_content_types) return ResourceMixin._accessible_pk_qs(cls, accessor, role_field, content_types=subclass_content_types)

View File

@@ -669,11 +669,11 @@ try:
job_idx = 0 job_idx = 0
for n in spread(n_job_events, n_jobs): for n in spread(n_job_events, n_jobs):
job = jobs[job_idx] job = jobs[job_idx]
# Check if job already has events, for idempotence
if not job._is_new: if not job._is_new:
continue continue
sys.stdout.write('\r Creating %d job events for job %d' % (n, job.id)) sys.stdout.write('\r Creating %d job events for job %d' % (n, job.id))
sys.stdout.flush() sys.stdout.flush()
# Check if job already has events, for idempotence
JobEvent.objects.bulk_create([ JobEvent.objects.bulk_create([
JobEvent( JobEvent(
created=now(), created=now(),