Add required pronouns dropdown and fix admin vocal gender selector
- Added a required Pronouns dropdown to /request and /admin/request: He/Him/His, She/Her/Hers, They/Them/Their. - Moved Email to the top of the customer request form; Pronouns sit just below Name. - Added column to the requests schema with automatic migration. - Stored pronouns are included in confirmation emails and Hermes prompt copy. - Fixed /admin/request so Preferred singer voice / gender is a dropdown matching the customer form instead of a free-text input. - Updated README to describe pronouns and the structured style selectors. Bumps version to 0.4.7.
This commit is contained in:
parent
10ee182558
commit
3f7bbf4b12
6 changed files with 65 additions and 17 deletions
11
app.py
11
app.py
|
|
@ -529,6 +529,10 @@ def request_form():
|
|||
decade = request.form.get('decade', '').strip()
|
||||
basic_style = request.form.get('basic_style', '').strip()
|
||||
additional_style = request.form.get('additional_style', '').strip()
|
||||
pronouns = request.form.get('pronouns', '').strip()
|
||||
if not pronouns:
|
||||
flash('Please select your pronouns.', 'error')
|
||||
return render_template('request.html', form=request.form, decades=DECADES, genres=MUSIC_GENRES), 400
|
||||
if not decade:
|
||||
flash('Please select a decade.', 'error')
|
||||
return render_template('request.html', form=request.form, decades=DECADES, genres=MUSIC_GENRES), 400
|
||||
|
|
@ -538,6 +542,7 @@ def request_form():
|
|||
form_data = {
|
||||
'name': request.form.get('name', '').strip(),
|
||||
'email': request.form.get('email', '').strip().lower(),
|
||||
'pronouns': pronouns,
|
||||
'hobbies': request.form.get('hobbies', '').strip(),
|
||||
'notable_facts': request.form.get('notable_facts', '').strip(),
|
||||
'style_genre': build_style_genre(decade, basic_style, additional_style),
|
||||
|
|
@ -561,6 +566,7 @@ def request_form():
|
|||
"Here's what we have on file:",
|
||||
f"Name: {req['name']}",
|
||||
f"Email: {req['email']}",
|
||||
f"Pronouns: {req['pronouns'] or '-'}",
|
||||
f"Style / genre: {req['style_genre'] or '-'}",
|
||||
f"Preferred singer voice / gender: {req['vocal_gender'] or 'No preference'}",
|
||||
f"Hobbies: {req['hobbies'] or '-'}",
|
||||
|
|
@ -1070,9 +1076,13 @@ def admin_request(rid):
|
|||
|
||||
elif action == 'update_customer_info':
|
||||
new_email = request.form.get('email', '').strip().lower()
|
||||
pronouns = request.form.get('pronouns', '').strip()
|
||||
if not is_valid_email(new_email):
|
||||
flash('Please enter a valid email address.', 'error')
|
||||
return redirect(url_for('admin_request', rid=rid))
|
||||
if not pronouns:
|
||||
flash('Pronouns are required.', 'error')
|
||||
return redirect(url_for('admin_request', rid=rid))
|
||||
style_genre = build_style_genre(
|
||||
request.form.get('decade', '').strip(),
|
||||
request.form.get('basic_style', '').strip(),
|
||||
|
|
@ -1081,6 +1091,7 @@ def admin_request(rid):
|
|||
update_request(rid,
|
||||
email=new_email,
|
||||
name=request.form.get('name', '').strip(),
|
||||
pronouns=pronouns,
|
||||
hobbies=request.form.get('hobbies', '').strip(),
|
||||
notable_facts=request.form.get('notable_facts', '').strip(),
|
||||
style_genre=style_genre,
|
||||
|
|
|
|||
Reference in a new issue