new: [dispatcher/livelog] Added support of ObjectAttributes

pull/82/head
mokaddem 2019-02-22 15:16:50 +01:00
parent 999e59b5cb
commit b207338501
6 changed files with 104 additions and 58 deletions

View File

@ -589,4 +589,3 @@ class Contributor_helper:
return { 'remainingPts': i-points, 'stepPts': prev }
prev = i
return { 'remainingPts': 0, 'stepPts': self.rankMultiplier**self.levelMax }

View File

@ -32,6 +32,7 @@ class Live_helper:
self.serv_live.publish(channel, j_to_send)
self.logger.debug('Published: {}'.format(j_to_send))
if name != 'Keepalive':
name = 'Attribute' if 'ObjectAttribute' else name
self.add_to_stream_log_cache(name, j_to_send_keep)

View File

@ -121,9 +121,13 @@ class EventMessage():
self.name = jsonMsg['name']
self.zmqName = jsonMsg['zmqName']
if self.name == 'Attribute':
self.feed = jsonMsg['log']
self.feed = LogItem(self.feed, filters).get_row()
elif self.name == 'ObjectAttribute':
self.feed = jsonMsg['log']
self.feed = LogItem(self.feed, filters).get_row()
else:
self.feed = jsonMsg['log']

View File

@ -175,7 +175,7 @@ $(document).ready(function () {
pollingFrequency: 5000,
tableHeader: head,
tableMaxEntries: 50,
animate: false,
// animate: false,
preDataURL: urlForLogs,
endpoint: urlForLogs
});
@ -333,7 +333,6 @@ function createHead(callback) {
{ targets: 0, orderable: false },
{ targets: '_all', searchable: false, orderable: false,
render: function ( data, type, row ) {
// return data +' ('+ row[3]+')';
var $toRet;
if (typeof data === 'object') {
$toRet = $('<span></span>');
@ -474,6 +473,9 @@ function createHead(callback) {
case 'Attribute':
that.add_entry(entry);
break;
case 'ObjectAttribute':
that.add_entry(entry, true);
break;
default:
break;
}
@ -499,6 +501,9 @@ function createHead(callback) {
case 'Attribute':
that.add_entry(entry);
break;
case 'ObjectAttribute':
that.add_entry(entry, true);
break;
default:
break;
}
@ -577,14 +582,21 @@ function createHead(callback) {
}
},
add_entry: function(entry) {
add_entry: function(entry, isObjectAttribute) {
var rowNode = this.dt.row.add(entry).draw().node();
if (this.animate) {
if (this._options.animate) {
$( rowNode )
.css( 'background-color', '#5cb85c' )
.animate( { 'background-color': '', duration: 600 } );
.css( 'background-color', '#5cb85c !important' )
.animate( { 'background-color': '' }, { duration: 1500 } );
}
if (isObjectAttribute === true) {
console.log(entry);
$( rowNode ).children().last()
.css('position', 'relative')
.append(
$('<it class="fa fa-th rowTableIsObject" title="This attribute belong to an Object"></it>')
);
}
// this.dt.row.add(entry).draw( false );
// remove entries
var numRows = this.dt.rows().count();
var rowsToRemove = numRows - this._options.tableMaxEntries;

View File

@ -189,10 +189,17 @@ div.dataTables_scrollHead table.dataTable {
left: 15px !important;
right: 10px !important;
z-index: 1001 !important;
bottom: 5px !important;
bottom: -7px !important;
height: unset !important;
}
.rowTableIsObject {
position: absolute;
right: 15px;
top: 0px;
color: #3465a4;
}
</style>
<body>

View File

@ -122,7 +122,16 @@ def handler_conversation(zmq_name, jsonevent):
def handler_object(zmq_name, jsondata):
logger.info('Handling object')
return
# check if jsonattr is an mispObject object
if 'Object' in jsondata:
jsonobj = jsondata['Object']
soleObject = copy.deepcopy(jsonobj)
del soleObject['Attribute']
for jsonattr in jsonobj['Attribute']:
jsonattrcpy = copy.deepcopy(jsonobj)
jsonattrcpy['Event'] = jsondata['Event']
jsonattrcpy['Attribute'] = jsonattr
handler_attribute(zmq_name, jsonattrcpy, False, parentObject=soleObject)
def handler_sighting(zmq_name, jsondata):
logger.info('Handling sighting')
@ -168,6 +177,16 @@ def handler_event(zmq_name, jsonobj):
else:
handler_attribute(zmq_name, attributes)
if 'Object' in jsonevent:
objects = jsonevent['Object']
if type(objects) is list:
for obj in objects:
jsoncopy = copy.deepcopy(jsonobj)
jsoncopy['Object'] = obj
handler_object(zmq_name, jsoncopy)
else:
handler_object(zmq_name, objects)
action = jsonobj.get('action', None)
eventLabeled = len(jsonobj.get('EventTag', [])) > 0
org = jsonobj.get('Orgc', {}).get('name', None)
@ -179,11 +198,15 @@ def handler_event(zmq_name, jsonobj):
action,
isLabeled=eventLabeled)
def handler_attribute(zmq_name, jsonobj, hasAlreadyBeenContributed=False):
def handler_attribute(zmq_name, jsonobj, hasAlreadyBeenContributed=False, parentObject=False):
logger.info('Handling attribute')
# check if jsonattr is an attribute object
if 'Attribute' in jsonobj:
jsonattr = jsonobj['Attribute']
else:
jsonattr = jsonobj
attributeType = 'Attribute' if jsonattr['object_id'] == '0' else 'ObjectAttribute'
#Add trending
categName = jsonattr['category']
@ -210,12 +233,12 @@ def handler_attribute(zmq_name, jsonobj, hasAlreadyBeenContributed=False):
eventLabeled = len(jsonobj.get('EventTag', [])) > 0
action = jsonobj.get('action', None)
contributor_helper.handleContribution(zmq_name, jsonobj['Event']['Orgc']['name'],
'Attribute',
attributeType,
jsonattr['category'],
action,
isLabeled=eventLabeled)
# Push to log
live_helper.publish_log(zmq_name, 'Attribute', jsonobj)
live_helper.publish_log(zmq_name, attributeType, jsonobj)
###############