mirror of
https://github.com/ZwareBear/awx.git
synced 2026-05-13 05:18:37 -05:00
Get created_by and modified_by updating automatically.
This commit is contained in:
@@ -27,6 +27,9 @@ from taggit.managers import TaggableManager
|
||||
# Django-Celery
|
||||
from djcelery.models import TaskMeta
|
||||
|
||||
# Django-CRUM
|
||||
from crum import get_current_user
|
||||
|
||||
# Ansible Tower
|
||||
from awx.main.utils import encrypt_field
|
||||
|
||||
@@ -284,6 +287,20 @@ class PrimordialModel(CreatedModifiedModel):
|
||||
self.save(update_fields=update_fields)
|
||||
return update_fields
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
update_fields = kwargs.get('update_fields', [])
|
||||
user = get_current_user()
|
||||
if user and not user.pk:
|
||||
user = None
|
||||
if not self.pk:
|
||||
self.created_by = user
|
||||
if 'created_by' not in update_fields:
|
||||
update_fields.append('created_by')
|
||||
self.modified_by = user
|
||||
if 'modified_by' not in update_fields:
|
||||
update_fields.append('modified_by')
|
||||
super(PrimordialModel, self).save(*args, **kwargs)
|
||||
|
||||
def clean_description(self):
|
||||
# Description should always be empty string, never null.
|
||||
return self.description or ''
|
||||
|
||||
@@ -12,6 +12,10 @@ from django.conf import settings
|
||||
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete, m2m_changed
|
||||
from django.dispatch import receiver
|
||||
|
||||
# Django-CRUM
|
||||
from crum import get_current_request
|
||||
from crum.signals import current_user_getter
|
||||
|
||||
# AWX
|
||||
from awx.main.models import *
|
||||
from awx.api.serializers import *
|
||||
@@ -361,3 +365,15 @@ def activity_stream_associate(sender, instance, **kwargs):
|
||||
activity_entry.save()
|
||||
getattr(activity_entry, object1).add(obj1)
|
||||
getattr(activity_entry, object2).add(obj2_actual)
|
||||
|
||||
|
||||
@receiver(current_user_getter)
|
||||
def get_current_user_from_drf_request(sender, **kwargs):
|
||||
'''
|
||||
Provider a signal handler to return the current user from the current
|
||||
request when using Django REST Framework. Requires that the APIView set
|
||||
drf_request on the underlying Django Request object.
|
||||
'''
|
||||
request = get_current_request()
|
||||
drf_request = getattr(request, 'drf_request', None)
|
||||
return (getattr(drf_request, 'user', False), 0)
|
||||
|
||||
Reference in New Issue
Block a user