def save_site(data): """Create or update an site content type""" content_type = content_type_check_and_load("Site Content Type") if data["hidden_node_id"] and data["hidden_node_version"]: # Assume update existing_content = load_and_revise(data["hidden_node_id"], SiteRevision) update_object_hash_and_save(existing_content, data) return existing_content else: # Assume new site node = _register_node() site = Site( _version=1, _node_id=node._id, _lock="", site_name=data["site_name"], environment_name=data["environment_name"], local_build_dir=data["local_build_dir"], static_files_dir=data["static_files_dir"], hosting_type=data["hosting_type"], index_content=data["index_content"], menu_content=data["menu_content"], groups_content=data["groups_content"], ) # First save get's our article ID to include in the hash #!!! <- being first save db.session.add(site) db.session.commit() db.session.refresh(site) #!!! -> end first saved ### reuse hash and save here site._hash = _hash_table(site) # Hash after getting id site._hash_chain = _hash_table(site, chain=True) db.session.add(site) db.session.commit() db.session.refresh(site) content_obj = _associate_node(node, site, content_type) return content_obj