awacke1 commited on
Commit
9c31d26
Β·
verified Β·
1 Parent(s): d5aded6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -9
app.py CHANGED
@@ -116,9 +116,9 @@ def preprocess_text(text):
116
  return text.strip()
117
 
118
  def sanitize_json_text(text):
 
119
  text = re.sub(r'[\x00-\x08\x0B\x0C\x0E-\x1F]', '', text)
120
- text = text.replace("\n", "\\n").replace("\r", "\\r").replace("\t", "\\t")
121
- return text
122
 
123
  # =============================================================================
124
  # ───────────── COSMOS DB FUNCTIONS ─────────────
@@ -155,15 +155,16 @@ def update_record(container, updated_record):
155
  def delete_record(container, record):
156
  try:
157
  doc_id = record["id"]
158
- partition_key_value = record.get("pk", doc_id)
 
159
  container.delete_item(item=doc_id, partition_key=partition_key_value)
160
  return True, f"Record {doc_id} deleted. πŸ—‘οΈ"
161
  except exceptions.CosmosResourceNotFoundError:
162
- return True, f"Record {doc_id} not found. πŸ—‘οΈ"
163
  except exceptions.CosmosHttpResponseError as e:
164
- return False, f"HTTP error: {str(e)} 🚨"
165
  except Exception as e:
166
- return False, f"Error: {str(e)} 😱"
167
 
168
  def save_to_cosmos_db(container, query, response1, response2):
169
  try:
@@ -366,9 +367,13 @@ def edit_all_documents(container):
366
  with col_save:
367
  if st.button("πŸ’Ύ Save", key=f"save_{doc['id']}"):
368
  try:
369
- updated_doc = json.loads(sanitize_json_text(edited_content))
 
 
 
370
  updated_doc['id'] = doc['id']
371
  updated_doc['pk'] = doc.get('pk', doc['id'])
 
372
  for field in ['_ts', '_rid', '_self', '_etag', '_attachments']:
373
  updated_doc.pop(field, None)
374
  success, message = update_record(container, updated_doc)
@@ -377,8 +382,8 @@ def edit_all_documents(container):
377
  st.session_state[doc_key] = json.dumps(updated_doc, indent=2)
378
  else:
379
  st.error(message)
380
- except json.JSONDecodeError:
381
- st.error("Invalid JSON format.")
382
  except Exception as e:
383
  st.error(f"Save error: {str(e)}")
384
  with col_delete:
@@ -386,6 +391,8 @@ def edit_all_documents(container):
386
  success, message = delete_record(container, doc)
387
  if success:
388
  st.success(message)
 
 
389
  st.rerun()
390
  else:
391
  st.error(message)
 
116
  return text.strip()
117
 
118
  def sanitize_json_text(text):
119
+ # Remove control characters but keep newlines intact
120
  text = re.sub(r'[\x00-\x08\x0B\x0C\x0E-\x1F]', '', text)
121
+ return text.strip()
 
122
 
123
  # =============================================================================
124
  # ───────────── COSMOS DB FUNCTIONS ─────────────
 
155
  def delete_record(container, record):
156
  try:
157
  doc_id = record["id"]
158
+ partition_key_value = record.get("pk", doc_id) # Fallback to id if pk missing
159
+ st.write(f"Deleting {doc_id} with partition key {partition_key_value}") # Debug log
160
  container.delete_item(item=doc_id, partition_key=partition_key_value)
161
  return True, f"Record {doc_id} deleted. πŸ—‘οΈ"
162
  except exceptions.CosmosResourceNotFoundError:
163
+ return True, f"Record {doc_id} not found (already deleted). πŸ—‘οΈ"
164
  except exceptions.CosmosHttpResponseError as e:
165
+ return False, f"HTTP error deleting {doc_id}: {str(e)} 🚨"
166
  except Exception as e:
167
+ return False, f"Unexpected error deleting {doc_id}: {str(e)} 😱"
168
 
169
  def save_to_cosmos_db(container, query, response1, response2):
170
  try:
 
367
  with col_save:
368
  if st.button("πŸ’Ύ Save", key=f"save_{doc['id']}"):
369
  try:
370
+ # Parse edited content
371
+ cleaned_content = sanitize_json_text(edited_content)
372
+ updated_doc = json.loads(cleaned_content)
373
+ # Preserve identity fields
374
  updated_doc['id'] = doc['id']
375
  updated_doc['pk'] = doc.get('pk', doc['id'])
376
+ # Remove system fields
377
  for field in ['_ts', '_rid', '_self', '_etag', '_attachments']:
378
  updated_doc.pop(field, None)
379
  success, message = update_record(container, updated_doc)
 
382
  st.session_state[doc_key] = json.dumps(updated_doc, indent=2)
383
  else:
384
  st.error(message)
385
+ except json.JSONDecodeError as e:
386
+ st.error(f"Invalid JSON format: {str(e)}\nProblematic input:\n{cleaned_content}")
387
  except Exception as e:
388
  st.error(f"Save error: {str(e)}")
389
  with col_delete:
 
391
  success, message = delete_record(container, doc)
392
  if success:
393
  st.success(message)
394
+ if doc_key in st.session_state:
395
+ del st.session_state[doc_key] # Clean up session state
396
  st.rerun()
397
  else:
398
  st.error(message)