Browse Source

Remove specialized coronavirus views

Coronavirus topics have slowed down greatly now, with generally only
about 3 per day, and are almost all restricted to ~health.coronavirus,
so users can easily find (or avoid) them by just using that group.
merge-requests/106/head
Deimos 4 years ago
parent
commit
a66e16d6c7
  1. 2
      tildes/tildes/request_methods.py
  2. 22
      tildes/tildes/templates/home.jinja2
  3. 4
      tildes/tildes/templates/topic_listing.jinja2
  4. 39
      tildes/tildes/views/topic.py

2
tildes/tildes/request_methods.py

@ -121,7 +121,7 @@ def current_listing_base_url(
"bookmarks": ("per_page", "type"),
"group": ("order", "period", "per_page", "tag", "unfiltered"),
"group_search": ("order", "period", "per_page", "q"),
"home": ("order", "period", "per_page", "tag", "unfiltered", "view"),
"home": ("order", "period", "per_page", "tag", "unfiltered"),
"ignored_topics": ("per_page",),
"search": ("order", "period", "per_page", "q"),
"user": ("order", "per_page", "type"),

22
tildes/tildes/templates/home.jinja2

@ -13,27 +13,7 @@
<meta property="og:description" content="Tildes is a non-profit community site with no advertising or investors. It respects its users and their privacy, and prioritizes high-quality content and discussions.">
{% endblock %}
{% block header_context_link %}
{% if not view %}
<div class="toast toast-minor" id="coronavirus-views">Specialized views: <a href="/?view=coronavirus-filtered">No coronavirus topics</a> / <a href="/?view=coronavirus-only">Only coronavirus topics</a></div>
{% endif %}
{% endblock %}
{% block filter_info %}
{% if view %}
<div class="topic-listing-filter">
{% if view == "coronavirus-only" %}
Showing only topics related to coronavirus.
{% elif view == "coronavirus-filtered" %}
Showing only topics <em>not</em> related to coronavirus.
{% endif %}
<a href="/">Back to normal view</a>
</div>
{% endif %}
{{ super() }}
{% endblock %}
{% block header_context_link %}{% endblock %}
{% block content %}
{% if request.user %}

4
tildes/tildes/templates/topic_listing.jinja2

@ -49,10 +49,6 @@
<input type="hidden" name="q" value="{{ search }}">
{% endif %}
{% if view is defined %}
<input type="hidden" name="view" value="{{ view }}">
{% endif %}
<div class="form-group">
<label for="period">from</label>
<select id="period" name="period" class="form-select" data-js-time-period-select>

39
tildes/tildes/views/topic.py

@ -14,7 +14,7 @@ from pyramid.renderers import render_to_response
from pyramid.request import Request
from pyramid.response import Response
from pyramid.view import view_config
from sqlalchemy import cast, or_
from sqlalchemy import cast
from sqlalchemy.sql.expression import any_, desc, text
from sqlalchemy_utils import Ltree
from webargs.pyramidparser import use_kwargs
@ -140,7 +140,6 @@ def post_group_topics(
@view_config(route_name="home", renderer="home.jinja2")
@view_config(route_name="group", renderer="topic_listing.jinja2")
@use_kwargs(TopicListingSchema())
@use_kwargs({"view": String(missing=None)})
def get_group_topics( # noqa
request: Request,
after: Optional[str],
@ -150,7 +149,6 @@ def get_group_topics( # noqa
rank_start: Optional[int],
tag: Optional[Ltree],
unfiltered: bool,
view: Optional[str],
**kwargs: Any
) -> dict:
"""Get a listing of topics in the group."""
@ -159,31 +157,11 @@ def get_group_topics( # noqa
is_home_page = request.matched_route.name == "home"
# only allow the special coronavirus views on the home page
if not is_home_page:
view = None
if view:
coronavirus_group = (
request.query(Group)
.filter(Group.path == Ltree("health.coronavirus"))
.one_or_none()
)
else:
coronavirus_group = None
if is_home_page:
# on the home page, include topics from the user's subscribed groups
# (or all groups, if logged-out)
if request.user:
groups = [sub.group for sub in request.user.subscriptions]
if (
view == "coronavirus-only"
and coronavirus_group
and coronavirus_group not in groups
):
groups.append(coronavirus_group)
else:
groups = [
group for group in request.query(Group).all() if group.path != "test"
@ -219,20 +197,6 @@ def get_group_topics( # noqa
.apply_sort_option(order)
)
if view and coronavirus_group:
if view == "coronavirus-only":
query = query.filter( # noqa
or_(
Topic.group_id == coronavirus_group.group_id,
Topic.tags.contains(["coronaviruses.covid19"]), # type: ignore
)
)
elif view == "coronavirus-filtered":
query = query.filter(
Topic.group_id != coronavirus_group.group_id,
~Topic.tags.contains(["coronaviruses.covid19"]), # type: ignore
)
# restrict the time period, if not set to "all time"
if period:
query = query.inside_time_period(period)
@ -331,7 +295,6 @@ def get_group_topics( # noqa
"most_recent_scheduled_topics": most_recent_scheduled_topics,
"financial_data": financial_data,
"current_time": utc_now(),
"view": view,
}

Loading…
Cancel
Save