fix 0 link eligibility
This commit is contained in:
parent
63f2ccebbf
commit
c5280e3828
Binary file not shown.
23
app/app.py
23
app/app.py
|
|
@ -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"),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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 %}
|
||||||
|
|
|
||||||
|
|
@ -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 %}
|
||||||
|
|
|
||||||
|
|
@ -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 %}
|
||||||
|
|
|
||||||
|
|
@ -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 %}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue