fix: Replace jank way of sorting/pagination/searching for all/featured/winners in projects pages with an even jankier way

Signed-off-by: Skylar "The Cobra" Widulski <cobra@vern.cc>
This commit is contained in:
Skylar "The Cobra" Widulski 2023-06-10 12:51:50 -04:00
parent 3f602c6342
commit c8f041cf36
Signed by: cobra
GPG Key ID: 4FD8F812083FF6F9
2 changed files with 15 additions and 17 deletions

12
main.py
View File

@ -117,18 +117,16 @@ def search(path, head, args, query='*', teachers=False):
if not type_ == '':
category = "+%26%26+" + category
channel = f"{'channel' if not teachers else 'teachers'}%3A%20" + quote(head) #\
# if len(split_path) > 2 and \
# split_path[2] != '' and \
# split_path[2] != 'projects' and \
# not split_path[2].startswith("?x") \
# else ''
channel = f"{'channel' if not teachers else 'teachers'}%3A%20" + quote(head) \
if head != '' \
else ''
if not type_ == '' or not category == '':
channel = "+%26%26+" + channel
search_url += f"&filter_by={type_}{category}{channel}&per_page=60"
search_data = requests.get(search_url, headers={"X-Typesense-API-Key": typesense_key})
print(search_data.text)
if search_data.status_code != 200:
return Response(render_template(str(search_data.status_code) + ".html"), status=search_data.status_code)
@ -219,7 +217,7 @@ def project_list(path, head, args=None, realpath=None, teachers=False):
page = searched[1]
pages = searched[2]
return render_template("projects.html", data=[header, ibles, realpath, page, pages], sub=re.sub)
return render_template("projects.html", data=[header, ibles, realpath, page, pages], subn=re.subn, str=str)

View File

@ -11,15 +11,15 @@
{% include "header.html" %}
<center>
<h1>{{ data[0] }}</h1>
<span><a href="{{ sub("[&?]projects=[^&]*", '', data[2]) }}&projects=all">All</a></span>
<span><a href="{{ sub("[&?]projects=[^&]*", '', data[2]) }}&projects=featured">Featured</a></span>
<span><a href="{{ sub("[&?]projects=[^&]*", '', data[2]) }}&projects=winners">Winners</a></span>
<span><a href="{{ subn("([&?])projects=[^&]*", '\\1projects=all', data[2])[0] }}{{ "&projects=all" if subn("([&?])projects=[^&]*", '\\1projects=all', data[2])[1] == 0 else '' }}">All</a></span>
<span><a href="{{ subn("([&?])projects=[^&]*", '\\1projects=featured', data[2])[0] }}{{ "&projects=featured" if subn("([&?])projects=[^&]*", '\\1projects=featured', data[2])[1] == 0 else '' }}">Featured</a></span>
<span><a href="{{ subn("([&?])projects=[^&]*", '\\1projects=winners', data[2])[0] }}{{ "&projects=winners" if subn("([&?])projects=[^&]*", '\\1projects=winners', data[2])[1] == 0 else '' }}">Winners</a></span>
<br>
<span>Sort by:</span>
<span><a href="{{ sub("[&?]sort=[^&]*", '', data[2]) }}&sort=Newest">Date</a></span>
<span><a href="{{ sub("[&?]sort=[^&]*", '', data[2]) }}&sort=Views">Views</a></span>
<span><a href="{{ sub("[&?]sort=[^&]*", '', data[2]) }}&sort=Favorites">Favorites</a></span>
<span><a href="{{ sub("[&?]sort=[^&]*", '', data[2]) }}&sort=I+Made+Its">I Made Its</a></span>
<span><a href="{{ subn("([&?])sort=[^&]*", '\\1sort=Newest', data[2])[0] }}{{ "&sort=Newest" if subn("([&?])sort=[^&]*", '\\1sort=Newest', data[2])[1] == 0 else '' }}">Date</a></span>
<span><a href="{{ subn("([&?])sort=[^&]*", '\\1sort=Views', data[2])[0] }}{{ "&sort=Views" if subn("([&?])sort=[^&]*", '\\1sort=Views', data[2])[1] == 0 else '' }}">Views</a></span>
<span><a href="{{ subn("([&?])sort=[^&]*", '\\1sort=Favorites', data[2])[0] }}{{ "&sort=Favorites" if subn("([&?])sort=[^&]*", '\\1sort=Favorites', data[2])[1] == 0 else '' }}">Favorites</a></span>
<span><a href="{{ subn("([&?])sort=[^&]*", '\\1sort=I+Made+Its', data[2])[0] }}{{ "&sort=I+Made+Its" if subn("([&?])sort=[^&]*", '\\1sort=I+Made+Its', data[2])[1] == 0 else '' }}">I Made Its</a></span>
<br>
<div style="max-width:90%;">
@ -38,12 +38,12 @@
{% if data[3] == 1 %}
<li class="arrow arrow-prev disabled"><a>Previous</a></li>
{% else %}
<li class="arrow arrow-prev"><a href="{{ data[2] }}&page={{ data[3] - 1 }}">Previous</a></li>
<li class="arrow arrow-prev"><a href="{{ subn("([&?])page=[^&]*", '\\1page=' + str(data[3] - 1), data[2])[0] }}{{ "&page=" + str(data[3] - 1) if subn("([&?])page=[^&]*", '\\1page=' + str(data[3] - 1), data[2])[1] == 0 else '' }}">Previous</a></li>
{% endif %}
{% for page in range(1, data[4] + 1) %}
{% if ((data[3] - page < 3) and (data[3] - page > -3)) or (page == 1 or page == data[4]) %}
{% if page != data[3] %}
<li><a href="{{ data[2] }}&page={{ page }}">{{ page }}</a></li>
<li><a href="{{ subn("([&?])page=[^&]*", '\\1page=' + str(page), data[2])[0] }}{{ "&page=" + str(page) if subn("([&?])page=[^&]*", '\\1page=' + str(page), data[2])[1] == 0 else '' }}">{{ page }}</a></li>
{% else %}
<li class="active"><a>{{ page }}</a></li>
{% endif %}
@ -52,7 +52,7 @@
{% if data[3] == data[4] %}
<li class="arrow arrow-next disabled"><a>Next</a></li>
{% else %}
<li class="arrow arrow-next"><a href="{{ data[2] }}&page={{ data[3] + 1 }}">Next</a></li>
<li class="arrow arrow-next"><a href="{{ subn("([&?])page=[^&]*", '\\1page=' + str(data[3] + 1), data[2])[0] }}{{ "&page=" + str(data[3] + 1) if subn("([&?])page=[^&]*", '\\1page=' + str(data[3] + 1), data[2])[1] == 0 else '' }}">Next</a></li>
{% endif %}
</ul>
</center>