Add links to show/hide hidden items
This commit is contained in:
parent
dddb46a627
commit
547699a9fc
|
@ -29,6 +29,19 @@ def item_sort_key(item: Item):
|
||||||
return item.sort_key
|
return item.sort_key
|
||||||
|
|
||||||
|
|
||||||
|
def get_show_hidden(default: bool):
|
||||||
|
"""
|
||||||
|
Get the value of the ?hidden query parameter, with a default value if it is
|
||||||
|
absent or set to an unnown value.
|
||||||
|
"""
|
||||||
|
hidden = request.args.get("hidden")
|
||||||
|
if hidden == "true":
|
||||||
|
return True
|
||||||
|
if hidden == "false":
|
||||||
|
return False
|
||||||
|
return default
|
||||||
|
|
||||||
|
|
||||||
@app.template_filter("datetimeformat")
|
@app.template_filter("datetimeformat")
|
||||||
def datetimeformat(value):
|
def datetimeformat(value):
|
||||||
if not value:
|
if not value:
|
||||||
|
@ -37,6 +50,20 @@ def datetimeformat(value):
|
||||||
return dt.strftime("%Y-%m-%d %H:%M:%S")
|
return dt.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
|
|
||||||
|
@app.template_global()
|
||||||
|
def set_query(**kwargs):
|
||||||
|
"""
|
||||||
|
Helper function to create a URL plus or minus some query parameters.
|
||||||
|
"""
|
||||||
|
args = request.args.copy()
|
||||||
|
for key, val in kwargs.items():
|
||||||
|
if val is None and key in args:
|
||||||
|
del args[key]
|
||||||
|
else:
|
||||||
|
args[key] = val
|
||||||
|
return url_for(request.endpoint, **request.view_args, **args)
|
||||||
|
|
||||||
|
|
||||||
def auth_check(route):
|
def auth_check(route):
|
||||||
"""
|
"""
|
||||||
Checks the HTTP Basic Auth header against the stored credential.
|
Checks the HTTP Basic Auth header against the stored credential.
|
||||||
|
@ -95,7 +122,7 @@ def source_feed(name):
|
||||||
if not source.source_path.exists():
|
if not source.source_path.exists():
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
return _sources_feed(name, [source], show_hidden=request.args.get("hidden", True))
|
return _sources_feed(name, [source], show_hidden=get_show_hidden(True))
|
||||||
|
|
||||||
|
|
||||||
@app.get("/channel/<string:name>")
|
@app.get("/channel/<string:name>")
|
||||||
|
@ -112,7 +139,7 @@ def channel_feed(name):
|
||||||
abort(404)
|
abort(404)
|
||||||
sources = [LocalSource(intake_data_dir(), name) for name in channels[name]]
|
sources = [LocalSource(intake_data_dir(), name) for name in channels[name]]
|
||||||
|
|
||||||
return _sources_feed(name, sources, show_hidden=request.args.get("hidden", False))
|
return _sources_feed(name, sources, show_hidden=get_show_hidden(False))
|
||||||
|
|
||||||
|
|
||||||
def _sources_feed(name: str, sources: List[LocalSource], show_hidden: bool):
|
def _sources_feed(name: str, sources: List[LocalSource], show_hidden: bool):
|
||||||
|
@ -154,8 +181,9 @@ def _sources_feed(name: str, sources: List[LocalSource], show_hidden: bool):
|
||||||
for item in paged_items
|
for item in paged_items
|
||||||
if "id" in item
|
if "id" in item
|
||||||
],
|
],
|
||||||
pager_prev=pager_prev,
|
page_num=page,
|
||||||
pager_next=pager_next,
|
page_count=count,
|
||||||
|
item_count=len(all_items),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -340,11 +368,7 @@ def add_item():
|
||||||
if form_body := request.form.get("body"):
|
if form_body := request.form.get("body"):
|
||||||
fields["body"] = form_body
|
fields["body"] = form_body
|
||||||
if form_tags := request.form.get("tags"):
|
if form_tags := request.form.get("tags"):
|
||||||
fields["tags"] = [
|
fields["tags"] = [tag.strip() for tag in form_tags.split() if tag.strip()]
|
||||||
tag.strip()
|
|
||||||
for tag in form_tags.split()
|
|
||||||
if tag.strip()
|
|
||||||
]
|
|
||||||
if form_tts := request.form.get("tts"):
|
if form_tts := request.form.get("tts"):
|
||||||
fields["tts"] = _get_ttx_for_date(datetime.fromisoformat(form_tts))
|
fields["tts"] = _get_ttx_for_date(datetime.fromisoformat(form_tts))
|
||||||
if form_ttl := request.form.get("ttl"):
|
if form_ttl := request.form.get("ttl"):
|
||||||
|
|
|
@ -57,7 +57,7 @@ pre {
|
||||||
table.feed-control td {
|
table.feed-control td {
|
||||||
font-family: monospace; padding: 5px 10px;
|
font-family: monospace; padding: 5px 10px;
|
||||||
}
|
}
|
||||||
div.center {
|
article.center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -122,7 +122,15 @@ var doAction = function (source, itemid, action) {
|
||||||
<body>
|
<body>
|
||||||
<main>
|
<main>
|
||||||
<article class="center">
|
<article class="center">
|
||||||
<span class="item-title"><a href="{{url_for('root')}}">Home</a></span>
|
<span class="item-title">
|
||||||
|
<a href="{{url_for('root')}}">Home</a>
|
||||||
|
[<a href="{{ set_query(hidden='false', page=None, count=None) }}">Active</a> | <a href="{{ set_query(hidden='true', page=None, count=None) }}">All</a>]
|
||||||
|
{% if item_count > items|length -%}
|
||||||
|
[<a {% if page_num is greaterthan(0) -%} href="{{ set_query(page=page_num - 1) }}" {%- endif %}>Prev</a>
|
||||||
|
|
|
||||||
|
<a {% if ((page_num + 1) * page_count) is lessthan(item_count) -%} href="{{ set_query(page=page_num + 1) }}" {%- endif %}>Next</a>]
|
||||||
|
{%- endif %}
|
||||||
|
</span>
|
||||||
</article>
|
</article>
|
||||||
{% if items %}
|
{% if items %}
|
||||||
{% for item in items %}
|
{% for item in items %}
|
||||||
|
@ -176,18 +184,18 @@ var doAction = function (source, itemid, action) {
|
||||||
</article>
|
</article>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if pager_prev or pager_next %}
|
{% if item_count > items|length %}
|
||||||
<article class="center">
|
<article class="center">
|
||||||
<span class="item-title">
|
<span class="item-title">
|
||||||
<a {% if pager_prev -%} href="{{pager_prev}}" {%- endif %}>Prev</a> | <a {% if pager_next -%} href="{{pager_next}}" {%- endif %}>Next</a>
|
<a {% if page_num is greaterthan(0) -%} href="{{ set_query(page=page_num - 1) }}" {%- endif %}>Prev</a>
|
||||||
|
|
|
||||||
|
<a {% if ((page_num + 1) * page_count) is lessthan(item_count) -%} href="{{ set_query(page=page_num + 1) }}" {%- endif %}>Next</a>
|
||||||
</span>
|
</span>
|
||||||
</article>
|
</article>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<article>
|
<article class="center">
|
||||||
<div style="text-align:center;">
|
|
||||||
<button onclick="javascript:mdeactivate({{ mdeac|safe }})">Deactivate All</button>
|
<button onclick="javascript:mdeactivate({{ mdeac|safe }})">Deactivate All</button>
|
||||||
</div>
|
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
{# if items #}
|
{# if items #}
|
||||||
|
|
Loading…
Reference in New Issue