fix 0 link eligibility

This commit is contained in:
Stephani, John 2026-03-16 17:10:12 -05:00
parent 63f2ccebbf
commit c5280e3828
No known key found for this signature in database
GPG Key ID: D1DF11026392A2DD
6 changed files with 29 additions and 2 deletions

Binary file not shown.

View File

@ -43,6 +43,9 @@ def get_puzzle_numbers(cursor):
def get_nav_numbers(puzzle_numbers, center): def get_nav_numbers(puzzle_numbers, center):
return [number for number in puzzle_numbers if center - 2 <= number <= center + 2] return [number for number in puzzle_numbers if center - 2 <= number <= center + 2]
def should_show_zero_link(center):
return center <= 2
def get_puzzle_summaries(cursor): def get_puzzle_summaries(cursor):
rows = cursor.execute( rows = cursor.execute(
"SELECT number, author, creation_date FROM puzzle ORDER BY number" "SELECT number, author, creation_date FROM puzzle ORDER BY number"
@ -107,6 +110,7 @@ def render_puzzle(puzzle_number):
author=author, author=author,
creation_date=creation_date, creation_date=creation_date,
nav_numbers=nav_numbers, nav_numbers=nav_numbers,
show_zero_link=should_show_zero_link(puzzle_number),
current_puzzle=puzzle_number, current_puzzle=puzzle_number,
) )
@ -127,7 +131,12 @@ def all_puzzles():
nav_numbers = get_nav_numbers(puzzle_numbers, nav_center) nav_numbers = get_nav_numbers(puzzle_numbers, nav_center)
puzzles = get_all_puzzle_rows(cursor) puzzles = get_all_puzzle_rows(cursor)
return render_template('all.html', nav_numbers=nav_numbers, puzzles=puzzles) return render_template(
'all.html',
nav_numbers=nav_numbers,
show_zero_link=should_show_zero_link(nav_center),
puzzles=puzzles,
)
@app.route('/new', methods=['GET', 'POST']) @app.route('/new', methods=['GET', 'POST'])
def new_puzzle(): def new_puzzle():
@ -139,7 +148,12 @@ def new_puzzle():
default_creation_date = today_display_date() default_creation_date = today_display_date()
if request.method == 'GET': if request.method == 'GET':
return render_template('new.html', creation_date=default_creation_date, nav_numbers=nav_numbers) return render_template(
'new.html',
creation_date=default_creation_date,
nav_numbers=nav_numbers,
show_zero_link=should_show_zero_link(nav_center),
)
author = request.form.get("author", "").strip() author = request.form.get("author", "").strip()
raw_creation_date = request.form.get("creation_date", "").strip() or default_creation_date raw_creation_date = request.form.get("creation_date", "").strip() or default_creation_date
@ -160,6 +174,7 @@ def new_puzzle():
error="Author is required.", error="Author is required.",
creation_date=raw_creation_date, creation_date=raw_creation_date,
nav_numbers=nav_numbers, nav_numbers=nav_numbers,
show_zero_link=should_show_zero_link(nav_center),
form=request.form form=request.form
), 400 ), 400
@ -169,6 +184,7 @@ def new_puzzle():
error='Creation date must be in the format "Day Month Year" (example: 15 March 2026).', error='Creation date must be in the format "Day Month Year" (example: 15 March 2026).',
creation_date=raw_creation_date, creation_date=raw_creation_date,
nav_numbers=nav_numbers, nav_numbers=nav_numbers,
show_zero_link=should_show_zero_link(nav_center),
form=request.form form=request.form
), 400 ), 400
@ -178,6 +194,7 @@ def new_puzzle():
error="Each category needs a name and exactly 4 words.", error="Each category needs a name and exactly 4 words.",
creation_date=raw_creation_date, creation_date=raw_creation_date,
nav_numbers=nav_numbers, nav_numbers=nav_numbers,
show_zero_link=should_show_zero_link(nav_center),
form=request.form form=request.form
), 400 ), 400
@ -198,6 +215,7 @@ def new_puzzle():
success=f"Saved puzzle #{number}.", success=f"Saved puzzle #{number}.",
creation_date=creation_date, creation_date=creation_date,
nav_numbers=get_nav_numbers(puzzle_numbers + [number], number), nav_numbers=get_nav_numbers(puzzle_numbers + [number], number),
show_zero_link=should_show_zero_link(number),
) )
@app.route('/delete', methods=['GET', 'POST']) @app.route('/delete', methods=['GET', 'POST'])
@ -228,6 +246,7 @@ def delete_puzzle():
'delete.html', 'delete.html',
puzzles=puzzles, puzzles=puzzles,
nav_numbers=get_nav_numbers([puzzle["number"] for puzzle in puzzles], puzzles[-1]["number"] if puzzles else 0), nav_numbers=get_nav_numbers([puzzle["number"] for puzzle in puzzles], puzzles[-1]["number"] if puzzles else 0),
show_zero_link=should_show_zero_link(puzzles[-1]["number"] if puzzles else 0),
deleted=request.args.get("deleted"), deleted=request.args.get("deleted"),
error=request.args.get("error"), error=request.args.get("error"),
) )

View File

@ -11,7 +11,9 @@
<body> <body>
<nav class="header-links"> <nav class="header-links">
<a href="/all" class="active">all</a> <a href="/all" class="active">all</a>
{% if show_zero_link %}
<a href="/0">0</a> <a href="/0">0</a>
{% endif %}
{% for number in nav_numbers %} {% for number in nav_numbers %}
<a href="/{{ number }}">{{ number }}</a> <a href="/{{ number }}">{{ number }}</a>
{% endfor %} {% endfor %}

View File

@ -11,7 +11,9 @@
<body> <body>
<nav class="header-links"> <nav class="header-links">
<a href="/all">all</a> <a href="/all">all</a>
{% if show_zero_link %}
<a href="/0">0</a> <a href="/0">0</a>
{% endif %}
{% for number in nav_numbers %} {% for number in nav_numbers %}
<a href="/{{ number }}">{{ number }}</a> <a href="/{{ number }}">{{ number }}</a>
{% endfor %} {% endfor %}

View File

@ -11,7 +11,9 @@
<body> <body>
<nav class="header-links"> <nav class="header-links">
<a href="/all">all</a> <a href="/all">all</a>
{% if show_zero_link %}
<a href="/0" class="{{ 'active' if current_puzzle == 0 else '' }}">0</a> <a href="/0" class="{{ 'active' if current_puzzle == 0 else '' }}">0</a>
{% endif %}
{% for number in nav_numbers %} {% for number in nav_numbers %}
<a href="/{{ number }}" class="{{ 'active' if current_puzzle == number else '' }}">{{ number }}</a> <a href="/{{ number }}" class="{{ 'active' if current_puzzle == number else '' }}">{{ number }}</a>
{% endfor %} {% endfor %}

View File

@ -11,7 +11,9 @@
<body> <body>
<nav class="header-links"> <nav class="header-links">
<a href="/all">all</a> <a href="/all">all</a>
{% if show_zero_link %}
<a href="/0">0</a> <a href="/0">0</a>
{% endif %}
{% for number in nav_numbers %} {% for number in nav_numbers %}
<a href="/{{ number }}">{{ number }}</a> <a href="/{{ number }}">{{ number }}</a>
{% endfor %} {% endfor %}