impersonate requesting user in inventory deletion task

This commit is contained in:
AlanCoding
2017-07-25 10:54:37 -04:00
parent faa40b23e2
commit 55cc23a712
5 changed files with 39 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ from django.db.models.signals import post_save, pre_delete, post_delete, m2m_cha
from django.dispatch import receiver
# Django-CRUM
from crum import get_current_request
from crum import get_current_request, get_current_user
from crum.signals import current_user_getter
# AWX
@@ -385,7 +385,8 @@ def activity_stream_create(sender, instance, created, **kwargs):
activity_entry = ActivityStream(
operation='create',
object1=object1,
changes=json.dumps(changes))
changes=json.dumps(changes),
actor=get_current_user())
activity_entry.save()
#TODO: Weird situation where cascade SETNULL doesn't work
# it might actually be a good idea to remove all of these FK references since
@@ -412,7 +413,8 @@ def activity_stream_update(sender, instance, **kwargs):
activity_entry = ActivityStream(
operation='update',
object1=object1,
changes=json.dumps(changes))
changes=json.dumps(changes),
actor=get_current_user())
activity_entry.save()
if instance._meta.model_name != 'setting': # Is not conf.Setting instance
getattr(activity_entry, object1).add(instance)
@@ -430,7 +432,8 @@ def activity_stream_delete(sender, instance, **kwargs):
activity_entry = ActivityStream(
operation='delete',
changes=json.dumps(changes),
object1=object1)
object1=object1,
actor=get_current_user())
activity_entry.save()
@@ -477,7 +480,8 @@ def activity_stream_associate(sender, instance, **kwargs):
operation=action,
object1=object1,
object2=object2,
object_relationship_type=obj_rel)
object_relationship_type=obj_rel,
actor=get_current_user())
activity_entry.save()
getattr(activity_entry, object1).add(obj1)
getattr(activity_entry, object2).add(obj2_actual)
@@ -515,8 +519,9 @@ def get_current_user_from_drf_request(sender, **kwargs):
@receiver(pre_delete, sender=Organization)
def delete_inventory_for_org(sender, instance, **kwargs):
inventories = Inventory.objects.filter(organization__pk=instance.pk)
user = get_current_user()
for inventory in inventories:
try:
inventory.schedule_deletion()
inventory.schedule_deletion(user_id=getattr(user, 'id', None))
except RuntimeError, e:
logger.debug(e)