mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-25 22:57:45 -06:00
Moved object serialization into a utility function
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import json
|
||||
|
||||
from django.core.serializers import serialize
|
||||
from django.db import models
|
||||
|
||||
from extras.models import ObjectChange
|
||||
from utilities.utils import serialize_object
|
||||
|
||||
|
||||
class ChangeLoggedModel(models.Model):
|
||||
@@ -32,15 +30,10 @@ class ChangeLoggedModel(models.Model):
|
||||
Create a new ObjectChange representing a change made to this object. This will typically be called automatically
|
||||
by extras.middleware.ChangeLoggingMiddleware.
|
||||
"""
|
||||
|
||||
# Serialize the object using Django's built-in JSON serializer, then extract only the `fields` dict.
|
||||
json_str = serialize('json', [self])
|
||||
object_data = json.loads(json_str)[0]['fields']
|
||||
|
||||
ObjectChange(
|
||||
user=user,
|
||||
request_id=request_id,
|
||||
changed_object=self,
|
||||
action=action,
|
||||
object_data=object_data
|
||||
object_data=serialize_object(self)
|
||||
).save()
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
import json
|
||||
import six
|
||||
|
||||
from django.core.serializers import serialize
|
||||
from django.http import HttpResponse
|
||||
|
||||
|
||||
@@ -82,3 +84,15 @@ def dynamic_import(name):
|
||||
for comp in components[1:]:
|
||||
mod = getattr(mod, comp)
|
||||
return mod
|
||||
|
||||
|
||||
def serialize_object(obj, extra=None):
|
||||
"""
|
||||
Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like
|
||||
change logging, not the REST API.)
|
||||
"""
|
||||
json_str = serialize('json', [obj])
|
||||
data = json.loads(json_str)[0]['fields']
|
||||
if extra is not None:
|
||||
data['extra'] = extra
|
||||
return data
|
||||
|
||||
Reference in New Issue
Block a user