diff --git a/catalog/jobs/discover.py b/catalog/jobs/discover.py index 209e0ca0..9d7b99fa 100644 --- a/catalog/jobs/discover.py +++ b/catalog/jobs/discover.py @@ -8,6 +8,7 @@ from django.utils import timezone from django.utils.translation import gettext_lazy as _ from loguru import logger +from boofilsic.settings import MIN_MARKS_FOR_DISCOVER from catalog.models import * from common.models import BaseJob, JobManager from journal.models import ( @@ -138,10 +139,10 @@ class DiscoverGenerator(BaseJob): .order_by("-edited_time") .values_list("pk", flat=True)[:40] ) - tags = TagManager.popular_tags(days=14, limit=20) - post_ids = Takahe.get_popular_posts(days=14, limit=20).values_list( - "pk", flat=True - ) + tags = TagManager.popular_tags(days=14)[:40] + post_ids = Takahe.get_popular_posts( + 30, settings.MIN_MARKS_FOR_DISCOVER + ).values_list("pk", flat=True)[:20] cache.set(cache_key, gallery_list, timeout=None) cache.set("trends_links", trends, timeout=None) cache.set("featured_collections", collection_ids, timeout=None) diff --git a/catalog/templates/discover.html b/catalog/templates/discover.html index 9d0af36a..c5ec65e9 100644 --- a/catalog/templates/discover.html +++ b/catalog/templates/discover.html @@ -147,7 +147,48 @@ {% endif %} {% if request.user.is_authenticated %} - {% include "_sidebar.html" with identity=request.user.identity %} + {% else %} {% include "_sidebar_anonymous.html" %} {% endif %} diff --git a/catalog/views.py b/catalog/views.py index 1871d532..97e2650b 100644 --- a/catalog/views.py +++ b/catalog/views.py @@ -263,7 +263,10 @@ def discover(request): layout = request.user.preference.discover_layout identity = request.user.identity announcements = [] - popular_posts = Takahe.get_posts(cache.get("popular_posts", [])) + post_ids = cache.get("popular_posts", []) + i = rot * len(post_ids) // 10 + post_ids = post_ids[i:] + post_ids[:i] + popular_posts = Takahe.get_posts(post_ids) else: identity = None layout = [] diff --git a/common/templates/_sidebar.html b/common/templates/_sidebar.html index b142253b..369a9a13 100644 --- a/common/templates/_sidebar.html +++ b/common/templates/_sidebar.html @@ -23,34 +23,6 @@ {% endif %} - {% if popular_tags is not None %} -
-
-
- {% trans 'Popular Tags' %} -
- {% for t in popular_tags %} - - {{ t }} - - {% empty %} -
{% trans "nothing so far." %}
- {% endfor %} -
-
-
-
- {% endif %} - {% if popular_posts is not None %} -
-
-
- {% trans 'Popular Posts' %} -
{% include "posts.html" with posts=popular_posts %}
-
-
-
- {% endif %} {% if show_profile %}
diff --git a/journal/models/tag.py b/journal/models/tag.py index fc11738f..27bdbad8 100644 --- a/journal/models/tag.py +++ b/journal/models/tag.py @@ -129,7 +129,7 @@ class TagManager: return TagManager.all_tags_by_owner(self.owner, public_only=True) @staticmethod - def popular_tags(days: int = 30, limit: int = 20): + def popular_tags(days: int = 30): t = timezone.now() - timedelta(days=days) titles = ( TagMember.objects.filter(created_time__gt=t) @@ -138,7 +138,7 @@ class TagManager: .values("title") .annotate(total=Count("parent_id", distinct=True)) .order_by("-total") - .values_list("title", flat=True)[:limit] + .values_list("title", flat=True) ) return titles diff --git a/takahe/utils.py b/takahe/utils.py index 01bab0a5..5470b4af 100644 --- a/takahe/utils.py +++ b/takahe/utils.py @@ -973,8 +973,8 @@ class Takahe: ) @staticmethod - def get_popular_posts(days: int = 14, limit: int = 20): - since = timezone.now().date() - timedelta(days=days) + def get_popular_posts(days: int = 30, min_interaction: int = 1): + since = timezone.now() - timedelta(days=days) domains = Takahe.get_neodb_peers() + [settings.SITE_DOMAIN] return ( Post.objects.exclude(state__in=["deleted", "deleted_fanned_out"]) @@ -982,8 +982,8 @@ class Takahe: author__domain__in=domains, visibility__in=[0, 4], published__gte=since ) .annotate(num_interactions=Count("interactions")) - .filter(num_interactions__gt=0) - .order_by("-num_interactions", "-published")[:limit] + .filter(num_interactions__gte=min_interaction) + .order_by("-num_interactions", "-published") ) @staticmethod