gursul commited on
Commit
fd69ed9
·
verified ·
1 Parent(s): fa7773a

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +62 -7
app.py CHANGED
@@ -235,6 +235,48 @@ def add_word(english, wtype, article, german):
235
 
236
  return "✅ Word(s) added!", get_words_table_en_de(), get_words_table_de_en()
237
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  def toggle_article_input(word_type):
239
  return gr.update(interactive=(word_type == "noun"))
240
 
@@ -328,13 +370,20 @@ with gr.Blocks(fill_width=False) as demo:
328
  de_new_btn = gr.Button("New Word (DE→EN)")
329
  de_submit_btn = gr.Button("Check Answer (DE→EN)")
330
 
331
- with gr.Tab("Add Words"):
332
- english_in = gr.Textbox(label="English Word")
333
- type_in = gr.Dropdown(label="Word Type", choices=["noun", "verb", "adj"], value="noun")
334
- article_in = gr.Textbox(label="Artikel (der/die/das) — only for nouns")
335
- german_in = gr.Textbox(label="German Translation")
336
- add_btn = gr.Button("Add Word")
337
- add_result = gr.Markdown()
 
 
 
 
 
 
 
338
 
339
  with gr.Row(equal_height=True):
340
  search_box = gr.Textbox(label="Search words", placeholder="Type to filter...", scale=5)
@@ -395,6 +444,12 @@ with gr.Blocks(fill_width=False) as demo:
395
  outputs=[add_result, word_table_en_de, word_table_de_en]
396
  )
397
 
 
 
 
 
 
 
398
  type_in.change(
399
  fn=toggle_article_input,
400
  inputs=type_in,
 
235
 
236
  return "✅ Word(s) added!", get_words_table_en_de(), get_words_table_de_en()
237
 
238
+ def delete_word(word, lang):
239
+ """
240
+ Delete a word from dictionaries.
241
+ lang = "en" means the word is an English word.
242
+ lang = "de" means the word is a German word.
243
+ """
244
+ eng_data = load_english()
245
+ ger_data = load_german()
246
+
247
+ word = (word or "").strip()
248
+ if not word:
249
+ return "❌ Please provide a word to delete.", get_words_table_en_de(), get_words_table_de_en()
250
+
251
+ if lang == "en":
252
+ if word not in eng_data:
253
+ return f"⚠ English word '{word}' not found.", get_words_table_en_de(), get_words_table_de_en()
254
+ # remove links from german side
255
+ for g in eng_data[word].get("translations", []):
256
+ if g in ger_data and word in ger_data[g].get("translations", []):
257
+ ger_data[g]["translations"].remove(word)
258
+ if not ger_data[g]["translations"]:
259
+ del ger_data[g] # remove orphan
260
+ del eng_data[word]
261
+
262
+ elif lang == "de":
263
+ if word not in ger_data:
264
+ return f"⚠ German word '{word}' not found.", get_words_table_en_de(), get_words_table_de_en()
265
+ # remove links from english side
266
+ for e in ger_data[word].get("translations", []):
267
+ if e in eng_data and word in eng_data[e].get("translations", []):
268
+ eng_data[e]["translations"].remove(word)
269
+ if not eng_data[e]["translations"]:
270
+ del eng_data[e] # remove orphan
271
+ del ger_data[word]
272
+ else:
273
+ return "❌ Invalid language parameter. Use 'en' or 'de'.", get_words_table_en_de(), get_words_table_de_en()
274
+
275
+ save_english(eng_data)
276
+ save_german(ger_data)
277
+
278
+ return f"✅ '{word}' deleted.", get_words_table_en_de(), get_words_table_de_en()
279
+
280
  def toggle_article_input(word_type):
281
  return gr.update(interactive=(word_type == "noun"))
282
 
 
370
  de_new_btn = gr.Button("New Word (DE→EN)")
371
  de_submit_btn = gr.Button("Check Answer (DE→EN)")
372
 
373
+ with gr.Tab("Words Dataset"):
374
+ with gr.Row():
375
+ with gr.Column():
376
+ english_in = gr.Textbox(label="English Word")
377
+ type_in = gr.Dropdown(label="Word Type", choices=["noun", "verb", "other"], value="noun")
378
+ article_in = gr.Textbox(label="Artikel (der/die/das) — only for nouns")
379
+ german_in = gr.Textbox(label="German Translation")
380
+ add_btn = gr.Button("Add Word")
381
+ add_result = gr.Markdown()
382
+ with gr.Column():
383
+ delete_word_in = gr.Textbox(label="Word to Delete")
384
+ delete_lang_in = gr.Dropdown(label="Language", choices=["en", "de"], value="en")
385
+ delete_btn = gr.Button("Delete Word")
386
+ delete_result = gr.Markdown()
387
 
388
  with gr.Row(equal_height=True):
389
  search_box = gr.Textbox(label="Search words", placeholder="Type to filter...", scale=5)
 
444
  outputs=[add_result, word_table_en_de, word_table_de_en]
445
  )
446
 
447
+ delete_btn.click(
448
+ fn=delete_word,
449
+ inputs=[delete_word_in, delete_lang_in],
450
+ outputs=[delete_result, word_table_en_de, word_table_de_en]
451
+ )
452
+
453
  type_in.change(
454
  fn=toggle_article_input,
455
  inputs=type_in,