Update app.py
Browse files
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="
|
| 757 |
-
save_button = gr.Button("Save & Next (N)", variant="
|
| 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,
|