diff --git a/bookwyrm/templates/goal.html b/bookwyrm/templates/goal.html index 134f419f..b285eec4 100644 --- a/bookwyrm/templates/goal.html +++ b/bookwyrm/templates/goal.html @@ -17,9 +17,9 @@ {% block panel %}
- {% if user == request.user %} + {% now 'Y' as current_year %} + {% if user == request.user and year == current_year %}
- {% now 'Y' as year %}

diff --git a/bookwyrm/tests/views/test_goal.py b/bookwyrm/tests/views/test_goal.py index ad615ba6..23bd8e1a 100644 --- a/bookwyrm/tests/views/test_goal.py +++ b/bookwyrm/tests/views/test_goal.py @@ -39,6 +39,7 @@ class GoalViews(TestCase): ) self.anonymous_user = AnonymousUser self.anonymous_user.is_authenticated = False + self.year = timezone.now().year models.SiteSettings.objects.create() def test_goal_page_no_goal(self): @@ -47,7 +48,7 @@ class GoalViews(TestCase): request = self.factory.get("") request.user = self.rat - result = view(request, self.local_user.localname, 2020) + result = view(request, self.local_user.localname, self.year) self.assertEqual(result.status_code, 404) def test_goal_page_no_goal_self(self): @@ -56,7 +57,7 @@ class GoalViews(TestCase): request = self.factory.get("") request.user = self.local_user - result = view(request, self.local_user.localname, 2020) + result = view(request, self.local_user.localname, self.year) result.render() self.assertIsInstance(result, TemplateResponse) @@ -66,7 +67,7 @@ class GoalViews(TestCase): request = self.factory.get("") request.user = self.anonymous_user - result = view(request, self.local_user.localname, 2020) + result = view(request, self.local_user.localname, self.year) self.assertEqual(result.status_code, 302) def test_goal_page_public(self): @@ -94,13 +95,13 @@ class GoalViews(TestCase): def test_goal_page_private(self): """view a user's private goal""" models.AnnualGoal.objects.create( - user=self.local_user, year=2020, goal=15, privacy="followers" + user=self.local_user, year=self.year, goal=15, privacy="followers" ) view = views.Goal.as_view() request = self.factory.get("") request.user = self.rat - result = view(request, self.local_user.localname, 2020) + result = view(request, self.local_user.localname, self.year) self.assertEqual(result.status_code, 404) @patch("bookwyrm.activitystreams.ActivityStream.add_status") @@ -112,19 +113,19 @@ class GoalViews(TestCase): { "user": self.local_user.id, "goal": 10, - "year": 2020, + "year": self.year, "privacy": "unlisted", "post-status": True, }, ) request.user = self.local_user with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"): - view(request, self.local_user.localname, 2020) + view(request, self.local_user.localname, self.year) goal = models.AnnualGoal.objects.get() self.assertEqual(goal.user, self.local_user) self.assertEqual(goal.goal, 10) - self.assertEqual(goal.year, 2020) + self.assertEqual(goal.year, self.year) self.assertEqual(goal.privacy, "unlisted") status = models.GeneratedNote.objects.get() diff --git a/bookwyrm/views/goal.py b/bookwyrm/views/goal.py index 84091fe3..12224517 100644 --- a/bookwyrm/views/goal.py +++ b/bookwyrm/views/goal.py @@ -4,6 +4,7 @@ from django.http import HttpResponseNotFound from django.shortcuts import redirect from django.template.loader import get_template from django.template.response import TemplateResponse +from django.utils import timezone from django.utils.decorators import method_decorator from django.views import View from django.views.decorators.http import require_POST @@ -26,6 +27,10 @@ class Goal(View): if not goal and user != request.user: return HttpResponseNotFound() + current_year = timezone.now().year + if not goal and year != timezone.now().year: + return redirect("user-goal", username, current_year) + if goal and not goal.visible_to_user(request.user): return HttpResponseNotFound()