def populate(self, json): self.identifier = json.get('identifier', None) definition_id = json.get('definition_id', None) if definition_id: self.definition_id = definition_id definition = json.get('definition', None) if definition: definitin_instance = ObjectDefinition() definitin_instance.populate(definition) self.definition = definitin_instance if self.definition_id and self.definition: if self.definition.identifier and self.definition_id != self.definition.identifier: raise ValueException(u'Object definitions cannot be updated') if not (self.definition_id or self.definition): raise ValueException(u'Object definition or definition_id must be set') self.properties.populate(json.get('properties', Properties('0'))) creator_group = json.get('creator_group', None) if creator_group: cg_instance = Group() cg_instance.populate(creator_group) self.creator_group = cg_instance modifier_group = json.get('modifier_group', None) if modifier_group: cg_instance = Group() cg_instance.populate(modifier_group) self.modifier = cg_instance created_at = json.get('created_at', None) if created_at: self.created_at = strings.stringToDateTime(created_at) modified_on = json.get('modified_on', None) if modified_on: self.modified_on = strings.stringToDateTime(modified_on) rel_obs = json.get('related_objects', None) if rel_obs: for rel_ob in rel_obs: obj_instance = RelatedObject() obj_instance.populate(rel_ob) self.related_objects.append(obj_instance) attribtues = json.get('attributes', None) if attribtues: for attribtue in attribtues: attribute = Attribute() attribute.populate(attribtue) self.attributes.append(attribute)
class SearchResult(RestBase): def __init__(self): RestBase.__init__(self) self.event = None self.object = None self.observable = None self.attribute = None self.report = None self.reference = None def populate(self, json): item = json['event'] self.event = Event() self.event.populate(item) # Check if not a report if json.get('report', None) or json.get('reference', None): item = json.get('report', None) if item: self.report = Report() self.report.populate(item) item = json.get('reference', None) if item: self.reference = Reference() self.reference.populate(item) else: item = json.get('observable', None) if item: self.observable = Observable() self.observable.populate(item) item = json.get('object', None) if item: self.object = Object() self.object.populate(item) item = json.get('attribute', None) if item: self.attribute = Attribute() self.attribute.populate(item)