awacke1 commited on
Commit
b651660
ยท
verified ยท
1 Parent(s): f6bf80b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -52
app.py CHANGED
@@ -806,78 +806,60 @@ def main():
806
  if st.button("๐Ÿค– Run AI", key=f'run_with_ai_button_{idx}'):
807
  search_glossary(json.dumps(editable_doc, indent=2))
808
 
809
-
810
- elif selected_view == 'Clone Document2':
811
- # ๐Ÿงฌ Clone Document per record
812
- st.markdown("#### Clone a document:")
813
- for idx, doc in enumerate(documents_to_display):
814
- st.markdown(f"##### Document ID: {doc.get('id', '')}")
815
- if st.button("๐Ÿ“„ Clone Document", key=f'clone_button_{idx}'):
816
- cloned_doc = doc.copy()
817
-
818
- # Generate a unique ID
819
- st.code(cloned_doc, )
820
- cloned_doc['id'] = generate_unique_id()
821
- cloned_doc['name'] = generate_unique_id()
822
- cloned_doc_str = st.text_area("Cloned Document Content (in JSON format) - Update name please to make it unique before saving!", value=cloned_doc, height=300)
823
-
824
- st.markdown("#### Edit Cloned Document and Name Your Clone:")
825
- if st.button("๐Ÿ’พ Save Cloned Document"):
826
- success, message = insert_record(container, cloned_doc)
827
- if success:
828
- st.success(f"Cloned document saved with id: {new_doc['id']} ๐ŸŽ‰")
829
- st.session_state.selected_document_id = new_doc['id']
830
- st.session_state.clone_mode = False
831
- st.session_state.cloned_doc = None
832
- st.session_state.cloned_doc_str = ''
833
- #st.rerun()
834
- else:
835
- st.error(message)
836
 
837
  elif selected_view == 'Clone Document':
838
- # ๐Ÿงฌ Clone Document per record
839
  st.markdown("#### Clone a document:")
840
 
841
  for idx, doc in enumerate(documents_to_display):
842
  st.markdown(f"##### Document ID: {doc.get('id', '')}")
843
 
844
  if st.button("๐Ÿ“„ Clone Document", key=f'clone_button_{idx}'):
 
845
  cloned_doc = doc.copy()
846
 
847
- # Generate new unique IDs for both 'id' and 'name'
848
- cloned_doc['id'] = generate_unique_id()
849
- cloned_doc['name'] = generate_unique_id()
850
 
851
- # Display the cloned document in JSON format with a prompt to edit
852
- cloned_doc_str = st.text_area("Cloned Document Content (in JSON format) - You can edit before saving!",
853
- value=str(cloned_doc), height=300)
854
- cloned_doc_str = cloned_doc_str.replace("'id': None,", "'id': 'test123',")
855
- cloned_doc_str = cloned_doc_str.replace("'name': None,", "'name': 'test123',")
856
- st.write(cloned_doc_str)
857
-
 
 
 
 
 
 
 
 
 
 
858
 
859
- st.markdown("#### Edit Cloned Document and Name Your Clone:")
 
 
 
 
 
 
 
860
 
861
- # Allow user to save the cloned document
862
  if st.button("๐Ÿ’พ Save Cloned Document"):
863
- # Convert the string back to dictionary (if edited)
864
  try:
865
- # Assuming that cloned_doc_str will be valid JSON
866
- cloned_doc = json.loads(cloned_doc_str)
867
- success, message = insert_record(container, cloned_doc)
868
 
869
  if success:
870
- st.success(f"Cloned document saved with id: {cloned_doc['id']} ๐ŸŽ‰")
871
- st.session_state.selected_document_id = cloned_doc['id']
872
- st.session_state.clone_mode = False
873
- st.session_state.cloned_doc = None
874
- st.session_state.cloned_doc_str = ''
875
  st.rerun()
876
  else:
877
- st.error(message)
878
  except json.JSONDecodeError as e:
879
- st.error(f"Error decoding the document. Please ensure it's valid JSON: {e}")
880
-
881
 
882
 
883
  elif selected_view == 'New Record':
 
806
  if st.button("๐Ÿค– Run AI", key=f'run_with_ai_button_{idx}'):
807
  search_glossary(json.dumps(editable_doc, indent=2))
808
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
809
 
810
  elif selected_view == 'Clone Document':
 
811
  st.markdown("#### Clone a document:")
812
 
813
  for idx, doc in enumerate(documents_to_display):
814
  st.markdown(f"##### Document ID: {doc.get('id', '')}")
815
 
816
  if st.button("๐Ÿ“„ Clone Document", key=f'clone_button_{idx}'):
817
+ # Create copy of original document
818
  cloned_doc = doc.copy()
819
 
820
+ # Generate new unique IDs
821
+ new_id = generate_unique_id()
822
+ new_name = generate_unique_id()
823
 
824
+ # Update ID and name fields at root level
825
+ cloned_doc['id'] = new_id
826
+ if 'name' in cloned_doc:
827
+ cloned_doc['name'] = new_name
828
+
829
+ # Update nested ID and name fields if they exist
830
+ def update_nested_ids(obj):
831
+ if isinstance(obj, dict):
832
+ if 'id' in obj:
833
+ obj['id'] = new_id
834
+ if 'name' in obj:
835
+ obj['name'] = new_name
836
+ for value in obj.values():
837
+ update_nested_ids(value)
838
+ elif isinstance(obj, list):
839
+ for item in obj:
840
+ update_nested_ids(item)
841
 
842
+ update_nested_ids(cloned_doc)
843
+
844
+ # Display editable JSON
845
+ edited_doc_str = st.text_area(
846
+ "Edit cloned document before saving:",
847
+ value=json.dumps(cloned_doc, indent=2),
848
+ height=300
849
+ )
850
 
 
851
  if st.button("๐Ÿ’พ Save Cloned Document"):
 
852
  try:
853
+ final_doc = json.loads(edited_doc_str)
854
+ success, message = insert_record(container, final_doc)
 
855
 
856
  if success:
857
+ st.success(f"Cloned document saved successfully with ID: {final_doc['id']}")
 
 
 
 
858
  st.rerun()
859
  else:
860
+ st.error(f"Failed to save clone: {message}")
861
  except json.JSONDecodeError as e:
862
+ st.error(f"Invalid JSON format: {str(e)}")
 
863
 
864
 
865
  elif selected_view == 'New Record':