mirror of
https://github.com/ansible/awx.git
synced 2026-01-16 04:10:44 -03:30
Be lazier with original parent role computations to avoid unnecessary queries
This commit is contained in:
parent
712ec98f54
commit
7310f9aa44
@ -3,7 +3,6 @@
|
||||
|
||||
# Django
|
||||
from django.db.models.signals import (
|
||||
post_init,
|
||||
pre_save,
|
||||
post_save,
|
||||
post_delete,
|
||||
@ -105,7 +104,6 @@ class ImplicitRoleField(models.ForeignKey):
|
||||
setattr(cls, '__implicit_role_fields', [])
|
||||
getattr(cls, '__implicit_role_fields').append(self)
|
||||
|
||||
post_init.connect(self._post_init, cls, True, dispatch_uid='implicit-role-post-init')
|
||||
pre_save.connect(self._pre_save, cls, True, dispatch_uid='implicit-role-pre-save')
|
||||
post_save.connect(self._post_save, cls, True, dispatch_uid='implicit-role-post-save')
|
||||
post_delete.connect(self._post_delete, cls, True)
|
||||
@ -163,15 +161,6 @@ class ImplicitRoleField(models.ForeignKey):
|
||||
getattr(instance, self.name).parents.remove(getattr(obj, field_attr))
|
||||
return _m2m_update
|
||||
|
||||
|
||||
def _post_init(self, instance, *args, **kwargs):
|
||||
original_parent_roles = dict()
|
||||
if instance.pk:
|
||||
for implicit_role_field in getattr(instance.__class__, '__implicit_role_fields'):
|
||||
original_parent_roles[implicit_role_field.name] = implicit_role_field._resolve_parent_roles(instance)
|
||||
|
||||
setattr(instance, '__original_parent_roles', original_parent_roles)
|
||||
|
||||
def _create_role_instance_if_not_exists(self, instance):
|
||||
role = getattr(instance, self.name, None)
|
||||
if role:
|
||||
@ -213,6 +202,15 @@ class ImplicitRoleField(models.ForeignKey):
|
||||
for implicit_role_field in getattr(instance.__class__, '__implicit_role_fields'):
|
||||
implicit_role_field._create_role_instance_if_not_exists(instance)
|
||||
|
||||
original_parent_roles = dict()
|
||||
if instance.pk:
|
||||
original = instance.__class__.objects.get(pk=instance.pk)
|
||||
for implicit_role_field in getattr(instance.__class__, '__implicit_role_fields'):
|
||||
original_parent_roles[implicit_role_field.name] = implicit_role_field._resolve_parent_roles(original)
|
||||
|
||||
setattr(instance, '__original_parent_roles', original_parent_roles)
|
||||
|
||||
|
||||
def _post_save(self, instance, created, *args, **kwargs):
|
||||
if created:
|
||||
for implicit_role_field in getattr(instance.__class__, '__implicit_role_fields'):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user