def save(form, node=None, root=None): g.cursor.execute('BEGIN') try: if node: log_action = 'update' root = g.nodes[node.root[-1]] if node.root else None super_ = g.nodes[node.root[0]] if node.root else None else: log_action = 'insert' node = NodeMapper.insert(root.class_.code, form.name.data) super_ = 'new' new_super_id = getattr(form, str(root.id)).data new_super = g.nodes[int(new_super_id)] if new_super_id else g.nodes[ root.id] if new_super.id == node.id: flash(_('error node self as super'), 'error') return if new_super.root and node.id in new_super.root: flash(_('error node sub as super'), 'error') return node.name = form.name.data if root.directional and form.name_inverse.data.strip(): node.name += ' (' + form.name_inverse.data.strip() + ')' if not root.directional: node.name = node.name.replace('(', '').replace(')', '') node.description = form.description.data if form.description else form.unit.data node.update() # Update super if changed and node is not a root node if super_ and (super_ == 'new' or super_.id != new_super_id): property_code = 'P127' if node.class_.code == 'E55' else 'P89' node.delete_links(property_code) node.link(property_code, new_super) g.cursor.execute('COMMIT') url = url_for('node_view', id_=node.id) if form.continue_.data == 'yes': url = url_for('node_insert', root_id=root.id, super_id=new_super_id if new_super_id else None) logger.log_user(node.id, log_action) flash( _('entity created') if log_action == 'insert' else _('info update'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') url = url_for('node_index') return url
def save(form, node=None, root=None): g.cursor.execute('BEGIN') try: if node: log_action = 'update' root = g.nodes[node.root[-1]] if node.root else None super_ = g.nodes[node.root[0]] if node.root else None else: log_action = 'insert' node = NodeMapper.insert(root.class_.code, form.name.data) super_ = 'new' new_super_id = getattr(form, str(root.id)).data new_super = g.nodes[int(new_super_id)] if new_super_id else g.nodes[root.id] if new_super.id == node.id: flash(_('error node self as super'), 'error') return if new_super.root and node.id in new_super.root: flash(_('error node sub as super'), 'error') return node.name = form.name.data if root.directional and form.name_inverse.data.strip(): node.name += ' (' + form.name_inverse.data.strip() + ')' if not root.directional: node.name = node.name.replace('(', '').replace(')', '') node.description = form.description.data node.update() # Update super if changed and node is not a root node if super_ and (super_ == 'new' or super_.id != new_super_id): property_code = 'P127' if node.class_.code == 'E55' else 'P89' node.delete_links(property_code) node.link(property_code, new_super) g.cursor.execute('COMMIT') url = url_for('node_view', id_=node.id) if form.continue_.data == 'yes': url = url_for('node_insert', root_id=root.id, super_id=new_super_id if new_super_id else None) logger.log_user(node.id, log_action) flash(_('entity created') if log_action == 'insert' else _('info update'), 'info') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') url = url_for('node_index') return url
def save(form, node=None, value_type: Optional[bool] = False): g.cursor.execute('BEGIN') try: if not node: node = NodeMapper.insert('E55', sanitize(form.name.data, 'node')) NodeMapper.insert_hierarchy(node, form, value_type) else: node = g.nodes[node.id] NodeMapper.update_hierarchy(node, form) node.name = sanitize(form.name.data, 'node') node.description = form.description.data node.update() g.cursor.execute('COMMIT') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') return node
def save(form, node=None, value_type=False): g.cursor.execute('BEGIN') try: if not node: node = NodeMapper.insert('E55', sanitize(form.name.data, 'node')) NodeMapper.insert_hierarchy(node, form, value_type) else: node = g.nodes[node.id] NodeMapper.update_hierarchy(node, form) node.name = sanitize(form.name.data, 'node') node.description = form.description.data node.update() g.cursor.execute('COMMIT') except Exception as e: # pragma: no cover g.cursor.execute('ROLLBACK') logger.log('error', 'database', 'transaction failed', e) flash(_('error transaction'), 'error') return node