def update(self, data, writeable): validate(data, self._schema) collection_id = data.pop('collection_id', []) self.update_collections(collection_id, writeable) meta = self.meta meta.update(data, safe=True) self.meta = meta db.session.add(self)
def __init__(self, config): validate(config, 'mapping.json#') self.config = config uri = os.path.expandvars(self.config.get('database')) self.engine = create_engine(uri) self.meta = MetaData() self.meta.bind = self.engine self.nodes = [NodeMapping(self, n, c) for (n, c) in config.get('nodes').items()] self.edges = [EdgeMapping(self, c) for c in config.get('edges', [])]
def create(cls, data, role): validate(data, 'alert.json#') alert = cls() alert.role_id = role.id q = extract_query(data.get('query')) alert.query = {k: q.getlist(k) for k in q.keys()} alert.signature = query_signature(q) alert.custom_label = data.get('custom_label') alert.update() return alert
def __init__(self, config): validate(config, 'mapping.json#') self.config = config uri = os.path.expandvars(self.config.get('database')) self.engine = create_engine(uri) self.meta = MetaData() self.meta.bind = self.engine self.nodes = [ NodeMapping(self, n, c) for (n, c) in config.get('nodes').items() ] self.edges = [EdgeMapping(self, c) for c in config.get('edges', [])]
def create(cls, data, role): validate(data, 'alert.json#') alert = cls() alert.role_id = role.id alert.query_text = data.get('query_text') if alert.query_text is not None: alert.query_text = alert.query_text.strip() alert.query_text = alert.query_text or None alert.entity_id = data.get('entity_id') or None alert.custom_label = data.get('label') alert.update() return alert
def __init__(self, config): validate(config, 'mapping.json#') self.config = config uri = os.path.expandvars(self.config.get('database')) self.engine = create_engine(uri) self.meta = MetaData() self.meta.bind = self.engine self.nodes = [NodeMapping(self, n, c) for (n, c) in config.get('nodes').items()] self.edges = [EdgeMapping(self, c) for c in config.get('edges', [])] self.collection = Collection.create({ 'foreign_id': config.get('collection'), 'label': config.get('collection'), 'managed': True }) db.session.add(self.collection) db.session.commit()
def schema_update(self, data, merge=False): """Update the object based on JSON schema properties.""" validate(data, self._schema) db.session.add(self) for prop in self.schema_visitor.properties: if prop.name == 'id': continue if prop.name not in data: continue prop_data = data[prop.name] if prop.is_value: self._schema_update_value(prop, prop_data) elif prop.is_object and self._schema_recurse: self._schema_update_object(prop, prop_data) elif prop.is_array and self._schema_recurse: self._schema_update_array(prop, prop_data, merge=merge) if isinstance(self, DatedModel): self.updated_at = datetime.utcnow()
def __init__(self, config): validate(config, 'mapping.json#') self.config = config uri = os.path.expandvars(self.config.get('database')) self.engine = create_engine(uri) self.meta = MetaData() self.meta.bind = self.engine self.nodes = [ NodeMapping(self, n, c) for (n, c) in config.get('nodes').items() ] self.edges = [EdgeMapping(self, c) for c in config.get('edges', [])] self.collection = Collection.create({ 'foreign_id': config.get('collection'), 'label': config.get('collection'), 'managed': True }) db.session.add(self.collection) db.session.commit()
def update(self, data): validate(data, 'entity.json#') self.name = data.get('name') self.category = data.get('category') self.data = data.get('data') db.session.add(self) db.session.flush() selectors = set(data.get('selectors', [])) selectors.add(self.name) existing = list(self.selectors) for sel in list(existing): if sel.text in selectors: selectors.remove(sel.text) existing.remove(sel) for sel in existing: db.session.delete(sel) for text in selectors: sel = Selector() sel.entity = self sel.text = text db.session.add(sel)
def update(self, data): validate(data, 'collection.json#') self.label = data.get('label') self.touch()
def update(self, data): validate(data, self._schema) self.label = data.pop("label") self.data = {"nodes": data.pop("nodes", []), "edges": data.pop("edges", []), "view": data.pop("view", {})} db.session.add(self)
def update(self, data): validate(data, 'role.json#') self.name = data.get('name') self.email = data.get('email')
def update(self, data): validate(data, 'source.json#') self.label = data.get('label') if 'category' in data: self.category = data.get('category')