AhmedAshrafMarzouk commited on
Commit
6e8f160
Β·
verified Β·
1 Parent(s): c1700b1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -11
app.py CHANGED
@@ -217,6 +217,19 @@ COUNTRY_DIALECTS = {
217
  }
218
  }
219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
 
221
  def get_dialect_code(country, dialect):
222
  """Generate full dialect code from country and dialect."""
@@ -451,7 +464,7 @@ def normalize_username(name, dialect_code, gender):
451
  gender_suffix = "_m" if gender == "Male" else "_f" if gender == "Female" else ""
452
  return f"{base_name}_{unique_id}_{dialect_code}{gender_suffix}"
453
 
454
- def register_user(name, email, password, country, dialect, city, gender, consent):
455
  """Register a new user with country, dialect, city, and gender."""
456
  users = load_users()
457
  email = email.lower()
@@ -473,6 +486,7 @@ def register_user(name, email, password, country, dialect, city, gender, consent
473
  "email": email,
474
  "password": hashed_password,
475
  "country": country,
 
476
  "dialect": dialect,
477
  "dialect_code": dialect_code,
478
  "city": city,
@@ -700,6 +714,7 @@ def login_interface():
700
  register_email = gr.Textbox(label="Email")
701
  register_password = gr.Textbox(label="Password", type="password")
702
  register_country = gr.Dropdown(choices=COUNTRIES, label="Country", value="Saudi Arabia")
 
703
  register_dialect = gr.Dropdown(choices=[], label="Dialect", value=None)
704
  register_city = gr.Textbox(label="City", placeholder="Enter your city name")
705
  register_gender = gr.Dropdown(choices=GENDERS, label="Gender")
@@ -714,7 +729,7 @@ def login_interface():
714
 
715
  return (
716
  login_title, login_email, login_password, login_button, login_message,
717
- register_name, register_email, register_password, register_country, register_dialect,
718
  register_city, register_gender, register_consent, consent_details,
719
  register_button, register_message
720
  )
@@ -753,8 +768,8 @@ def main_app_interface():
753
  )
754
 
755
  with gr.Row(visible=False) as button_row:
756
- discard_button = gr.Button("Discard (D)", variant="primary")
757
- save_button = gr.Button("Save & Next (N)", variant="stop")
758
  with gr.Row(visible=False) as skip_row:
759
  skip_button = gr.Button("Skip (S)", variant="secondary")
760
 
@@ -798,7 +813,7 @@ def create_app():
798
  # Create interface components
799
  (
800
  login_title, login_email, login_password, login_button, login_message,
801
- register_name, register_email, register_password, register_country, register_dialect,
802
  register_city, register_gender, register_consent, consent_details,
803
  register_button, register_message
804
  ) = login_interface()
@@ -873,6 +888,7 @@ def create_app():
873
  gr.update(visible=False), # register_email
874
  gr.update(visible=False), # register_password
875
  gr.update(visible=False), # register_country
 
876
  gr.update(visible=False), # register_dialect
877
  gr.update(visible=False), # register_city
878
  gr.update(visible=False), # register_gender
@@ -912,6 +928,7 @@ def create_app():
912
  gr.update(visible=True), # register_email
913
  gr.update(visible=True), # register_password
914
  gr.update(visible=True), # register_country
 
915
  gr.update(visible=True), # register_dialect
916
  gr.update(visible=True), # register_city
917
  gr.update(visible=True), # register_gender
@@ -941,14 +958,14 @@ def create_app():
941
  )
942
 
943
  # Register function
944
- def register(name, email, password, country, dialect, city, gender, consent, state_dict):
945
  email = email.lower()
946
- if not all([name, email, password, country, dialect, city, gender]):
947
  return state_dict, "Please fill in all fields", gr.update(visible=True)
948
  if not consent:
949
  return state_dict, "You must agree to the research data usage terms to register", gr.update(visible=True)
950
 
951
- success, result = register_user(name, email, password, country, dialect, city, gender, consent)
952
  if success:
953
  return state_dict, f"Registration successful! Your username is: {result}. Please go to the Login tab.", gr.update(visible=True)
954
  else:
@@ -980,6 +997,7 @@ def create_app():
980
  gr.update(visible=True), # register_email
981
  gr.update(visible=True), # register_password
982
  gr.update(visible=True), # register_country
 
983
  gr.update(visible=True), # register_dialect
984
  gr.update(visible=True), # register_city
985
  gr.update(visible=True), # register_gender
@@ -1249,7 +1267,7 @@ def create_app():
1249
  inputs=[login_email, login_password, state],
1250
  outputs=[
1251
  state, login_title, login_email, login_password, login_button, login_message,
1252
- register_name, register_email, register_password, register_country, register_dialect,
1253
  register_city, register_gender, register_consent, consent_details, register_button,
1254
  register_message, main_title, user_row, username_display, logout_button,
1255
  instructions_accordion, instructions_display, recording_row, current_sentence_display,
@@ -1260,7 +1278,7 @@ def create_app():
1260
 
1261
  register_button.click(
1262
  register,
1263
- inputs=[register_name, register_email, register_password, register_country, register_dialect,
1264
  register_city, register_gender, register_consent, state],
1265
  outputs=[state, register_message, consent_details]
1266
  )
@@ -1270,7 +1288,7 @@ def create_app():
1270
  inputs=[state],
1271
  outputs=[
1272
  state, login_title, login_email, login_password, login_button, login_message,
1273
- register_name, register_email, register_password, register_country, register_dialect,
1274
  register_city, register_gender, register_consent, consent_details, register_button,
1275
  register_message, main_title, user_row, username_display, logout_button,
1276
  instructions_accordion, instructions_display, recording_row, current_sentence_display,
 
217
  }
218
  }
219
 
220
+ AGES = [
221
+ "5–9", # Early childhood
222
+ "10–14", # Adolescence (early teens)
223
+ "15–19", # Late teens
224
+ "20–24", # Young adults
225
+ "25–34", # Early adulthood
226
+ "35–44", # Mid adulthood
227
+ "45–54", # Mature adulthood
228
+ "55–64", # Early senior
229
+ "65–74", # Seniors
230
+ "75–84", # Elderly
231
+ "85+" # Oldest old
232
+ ]
233
 
234
  def get_dialect_code(country, dialect):
235
  """Generate full dialect code from country and dialect."""
 
464
  gender_suffix = "_m" if gender == "Male" else "_f" if gender == "Female" else ""
465
  return f"{base_name}_{unique_id}_{dialect_code}{gender_suffix}"
466
 
467
+ def register_user(name, email, password, country, age, dialect, city, gender, consent):
468
  """Register a new user with country, dialect, city, and gender."""
469
  users = load_users()
470
  email = email.lower()
 
486
  "email": email,
487
  "password": hashed_password,
488
  "country": country,
489
+ "age": age,
490
  "dialect": dialect,
491
  "dialect_code": dialect_code,
492
  "city": city,
 
714
  register_email = gr.Textbox(label="Email")
715
  register_password = gr.Textbox(label="Password", type="password")
716
  register_country = gr.Dropdown(choices=COUNTRIES, label="Country", value="Saudi Arabia")
717
+ register_age = gr.Dropdown(choices=AGES, label="Age", value="19-24")
718
  register_dialect = gr.Dropdown(choices=[], label="Dialect", value=None)
719
  register_city = gr.Textbox(label="City", placeholder="Enter your city name")
720
  register_gender = gr.Dropdown(choices=GENDERS, label="Gender")
 
729
 
730
  return (
731
  login_title, login_email, login_password, login_button, login_message,
732
+ register_name, register_email, register_password, register_country, register_age, register_dialect,
733
  register_city, register_gender, register_consent, consent_details,
734
  register_button, register_message
735
  )
 
768
  )
769
 
770
  with gr.Row(visible=False) as button_row:
771
+ discard_button = gr.Button("Discard (D)", variant="stop")
772
+ save_button = gr.Button("Save & Next (N)", variant="primary")
773
  with gr.Row(visible=False) as skip_row:
774
  skip_button = gr.Button("Skip (S)", variant="secondary")
775
 
 
813
  # Create interface components
814
  (
815
  login_title, login_email, login_password, login_button, login_message,
816
+ register_name, register_email, register_password, register_country, register_age, register_dialect,
817
  register_city, register_gender, register_consent, consent_details,
818
  register_button, register_message
819
  ) = login_interface()
 
888
  gr.update(visible=False), # register_email
889
  gr.update(visible=False), # register_password
890
  gr.update(visible=False), # register_country
891
+ gr.update(visible=False), # register_age
892
  gr.update(visible=False), # register_dialect
893
  gr.update(visible=False), # register_city
894
  gr.update(visible=False), # register_gender
 
928
  gr.update(visible=True), # register_email
929
  gr.update(visible=True), # register_password
930
  gr.update(visible=True), # register_country
931
+ gr.update(visible=True), # register_age
932
  gr.update(visible=True), # register_dialect
933
  gr.update(visible=True), # register_city
934
  gr.update(visible=True), # register_gender
 
958
  )
959
 
960
  # Register function
961
+ def register(name, email, password, country, age, dialect, city, gender, consent, state_dict):
962
  email = email.lower()
963
+ if not all([name, email, password, country, age, dialect, city, gender]):
964
  return state_dict, "Please fill in all fields", gr.update(visible=True)
965
  if not consent:
966
  return state_dict, "You must agree to the research data usage terms to register", gr.update(visible=True)
967
 
968
+ success, result = register_user(name, email, password, country, age, dialect, city, gender, consent)
969
  if success:
970
  return state_dict, f"Registration successful! Your username is: {result}. Please go to the Login tab.", gr.update(visible=True)
971
  else:
 
997
  gr.update(visible=True), # register_email
998
  gr.update(visible=True), # register_password
999
  gr.update(visible=True), # register_country
1000
+ gr.update(visible=True), # register_age
1001
  gr.update(visible=True), # register_dialect
1002
  gr.update(visible=True), # register_city
1003
  gr.update(visible=True), # register_gender
 
1267
  inputs=[login_email, login_password, state],
1268
  outputs=[
1269
  state, login_title, login_email, login_password, login_button, login_message,
1270
+ register_name, register_email, register_password, register_country, register_age, register_dialect,
1271
  register_city, register_gender, register_consent, consent_details, register_button,
1272
  register_message, main_title, user_row, username_display, logout_button,
1273
  instructions_accordion, instructions_display, recording_row, current_sentence_display,
 
1278
 
1279
  register_button.click(
1280
  register,
1281
+ inputs=[register_name, register_email, register_password, register_country, register_age, register_dialect,
1282
  register_city, register_gender, register_consent, state],
1283
  outputs=[state, register_message, consent_details]
1284
  )
 
1288
  inputs=[state],
1289
  outputs=[
1290
  state, login_title, login_email, login_password, login_button, login_message,
1291
+ register_name, register_email, register_password, register_country, register_age, register_dialect,
1292
  register_city, register_gender, register_consent, consent_details, register_button,
1293
  register_message, main_title, user_row, username_display, logout_button,
1294
  instructions_accordion, instructions_display, recording_row, current_sentence_display,