Add a field to the activity stream model that more closely identifies the api object type for aid in api querying

This commit is contained in:
Matthew Jones 2013-11-14 23:24:00 -05:00
parent 639b87d55a
commit 8448c5b4d5
4 changed files with 23 additions and 6 deletions

View File

@ -1007,7 +1007,7 @@ class ActivityStreamSerializer(BaseSerializer):
class Meta:
model = ActivityStream
fields = ('id', 'url', 'related', 'summary_fields', 'timestamp', 'operation', 'changes',
'object1_id', 'object1_type', 'object2_id', 'object2_type', 'object_relationship_type')
'object1_id', 'object1', 'object1_type', 'object2_id', 'object2', 'object2_type', 'object_relationship_type')
def get_related(self, obj):
if obj is None:
@ -1030,8 +1030,11 @@ class ActivityStreamSerializer(BaseSerializer):
short_obj_type = obj.object1_type.split(".")[-1]
under_short_obj_type = camelcase_to_underscore(short_obj_type)
obj1 = eval(obj.object1_type + ".objects.get(id=" + str(obj.object1_id) + ")")
d['object1'] = {'name': obj1.name, 'description': obj1.description,
'base': under_short_obj_type, 'id': obj.object1_id}
if hasattr(obj1, "name"):
d['object1'] = {'name': obj1.name, 'description': obj1.description,
'base': under_short_obj_type, 'id': obj.object1_id}
else:
d['object1'] = {'base': under_short_obj_type, 'id': obj.object1_id}
if under_short_obj_type == "host" or under_short_obj_type == "group":
d['inventory'] = {'name': obj1.inventory.name, 'id': obj1.inventory.id}
except Exception, e:
@ -1041,8 +1044,11 @@ class ActivityStreamSerializer(BaseSerializer):
under_short_obj_type = camelcase_to_underscore(short_obj_type)
if obj.operation in ('associate', 'disassociate'):
obj2 = eval(obj.object2_type + ".objects.get(id=" + str(obj.object2_id) + ")")
d['object2'] = {'name': obj2.name, 'description': obj2.description,
'base': under_short_obj_type, 'id': obj.object2_id}
if hasattr(obj2, "name"):
d['object2'] = {'name': obj2.name, 'description': obj2.description,
'base': under_short_obj_type, 'id': obj.object2_id}
else:
d['object2'] = {'base': under_short_obj_type, 'id': obj.object2_id}
if under_short_obj_type == "host" or under_short_obj_type == "group":
d['inventory'] = {'name': obj2.inventory.name, 'id': obj2.inventory.id}
except Exception, e:

View File

@ -16,8 +16,10 @@ class Migration(SchemaMigration):
('timestamp', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('changes', self.gf('django.db.models.fields.TextField')(blank=True)),
('object1_id', self.gf('django.db.models.fields.PositiveIntegerField')(db_index=True)),
('object1', self.gf('django.db.models.fields.TextField')()),
('object1_type', self.gf('django.db.models.fields.TextField')()),
('object2_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, db_index=True)),
('object2', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
('object2_type', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
('object_relationship_type', self.gf('django.db.models.fields.TextField')(blank=True)),
))
@ -70,8 +72,10 @@ class Migration(SchemaMigration):
'Meta': {'object_name': 'ActivityStream'},
'changes': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'object1': ('django.db.models.fields.TextField', [], {}),
'object1_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
'object1_type': ('django.db.models.fields.TextField', [], {}),
'object2': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'object2_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'db_index': 'True'}),
'object2_type': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'object_relationship_type': ('django.db.models.fields.TextField', [], {'blank': 'True'}),

View File

@ -28,9 +28,11 @@ class ActivityStream(models.Model):
changes = models.TextField(blank=True)
object1_id = models.PositiveIntegerField(db_index=True)
object1 = models.TextField()
object1_type = models.TextField()
object2_id = models.PositiveIntegerField(db_index=True, null=True)
object2 = models.TextField(null=True, blank=True)
object2_type = models.TextField(null=True, blank=True)
object_relationship_type = models.TextField(blank=True)

View File

@ -12,7 +12,7 @@ from django.dispatch import receiver
# AWX
from awx.main.models import *
from awx.main.utils import model_instance_diff, model_to_dict
from awx.main.utils import model_instance_diff, model_to_dict, camelcase_to_underscore
__all__ = []
@ -178,6 +178,7 @@ def activity_stream_create(sender, instance, created, **kwargs):
activity_entry = ActivityStream(
operation='create',
object1_id=instance.id,
object1=camelcase_to_underscore(instance.__class__.__name__),
object1_type=instance.__class__.__module__ + "." + instance.__class__.__name__,
changes=json.dumps(model_to_dict(instance)))
activity_entry.save()
@ -193,6 +194,7 @@ def activity_stream_update(sender, instance, **kwargs):
activity_entry = ActivityStream(
operation='update',
object1_id=instance.id,
object1=camelcase_to_underscore(instance.__class__.__name__),
object1_type=instance.__class__.__module__ + "." + instance.__class__.__name__,
changes=json.dumps(changes))
activity_entry.save()
@ -202,6 +204,7 @@ def activity_stream_delete(sender, instance, **kwargs):
activity_entry = ActivityStream(
operation='delete',
object1_id=instance.id,
object1=camelcase_to_underscore(instance.__class__.__name__),
object1_type=instance.__class__.__module__ + "." + instance.__class__.__name__)
activity_entry.save()
@ -222,8 +225,10 @@ def activity_stream_associate(sender, instance, **kwargs):
activity_entry = ActivityStream(
operation=action,
object1_id=obj1_id,
object1=camelcase_to_underscore(obj1.__class__.__name__),
object1_type=obj1.__class__.__module__ + "." + obj1.__class__.__name__,
object2_id=obj2_id,
object2=camelcase_to_underscore(obj2.__name__),
object2_type=obj2.__module__ + "." + obj2.__name__,
object_relationship_type=obj_rel)
activity_entry.save()