From 150adedd5504a6a48aaf4640594902e9718aaf21 Mon Sep 17 00:00:00 2001 From: Andrew Northall Date: Mon, 18 Dec 2023 10:32:48 +0000 Subject: [PATCH 1/6] Add profile view count --- app/logger/views/userprofile.py | 1 + app/templates/logger/_quick_stats.html | 5 +++++ app/templates/logger/profile.html | 6 +++++- .../0043_cavinguser_profile_view_count.py | 17 +++++++++++++++++ app/users/models.py | 9 +++++++++ 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 app/users/migrations/0043_cavinguser_profile_view_count.py diff --git a/app/logger/views/userprofile.py b/app/logger/views/userprofile.py index 3a249c76..4048d5da 100644 --- a/app/logger/views/userprofile.py +++ b/app/logger/views/userprofile.py @@ -28,6 +28,7 @@ def setup(self, *args, **kwargs): """Assign self.profile_user and perform permissions checks""" super().setup(*args, **kwargs) self.profile_user = get_object_or_404(User, username=self.kwargs["username"]) + self.profile_user.add_profile_view(self.request.user) def get_context_data(self, **kwargs): context = super().get_context_data() diff --git a/app/templates/logger/_quick_stats.html b/app/templates/logger/_quick_stats.html index c80512bf..0ff20a37 100644 --- a/app/templates/logger/_quick_stats.html +++ b/app/templates/logger/_quick_stats.html @@ -97,6 +97,11 @@ {{ quick_stats.qs_friends }} + + {% if user.has_social_media_links %} diff --git a/app/users/models.py b/app/users/models.py index 179dc723..1043f1aa 100644 --- a/app/users/models.py +++ b/app/users/models.py @@ -15,6 +15,7 @@ from django.core.validators import MinLengthValidator, RegexValidator from django.db import models from django.db.models import Count, Max, QuerySet, Sum +from django.http import HttpRequest from django.urls import reverse from django.utils import timezone as django_tz from django.utils.functional import cached_property @@ -448,9 +449,10 @@ def get_photos(self, for_user: Union["User", "CavingUser", None] = None): return qs - def add_profile_view(self, viewing: "User"): - if self == viewing: + def add_profile_view(self, request: HttpRequest): + if request.user == self or request.user.is_anonymous: return + self.profile_view_count += 1 self.save(update_fields=["profile_view_count"]) From a420b7df571b7f6712be70bf4df21a114154a34b Mon Sep 17 00:00:00 2001 From: Andrew Northall Date: Mon, 18 Dec 2023 11:00:04 +0000 Subject: [PATCH 3/6] Do not permit view count increments from anonymous users --- app/logger/views/userprofile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/logger/views/userprofile.py b/app/logger/views/userprofile.py index 4048d5da..734e7a73 100644 --- a/app/logger/views/userprofile.py +++ b/app/logger/views/userprofile.py @@ -28,7 +28,7 @@ def setup(self, *args, **kwargs): """Assign self.profile_user and perform permissions checks""" super().setup(*args, **kwargs) self.profile_user = get_object_or_404(User, username=self.kwargs["username"]) - self.profile_user.add_profile_view(self.request.user) + self.profile_user.add_profile_view(self.request) def get_context_data(self, **kwargs): context = super().get_context_data() From 5f2ba02a1485007297dc50177ed1c37ea1ec1c5d Mon Sep 17 00:00:00 2001 From: Andrew Northall Date: Mon, 18 Dec 2023 11:06:35 +0000 Subject: [PATCH 4/6] Show private quick stats on profile page if user is owner --- app/logger/views/userprofile.py | 1 + app/templates/logger/_quick_stats.html | 12 +++++++----- app/templates/logger/profile.html | 6 ++++-- app/templates/sidebars/_profile_page.html | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/logger/views/userprofile.py b/app/logger/views/userprofile.py index 734e7a73..b946fdfb 100644 --- a/app/logger/views/userprofile.py +++ b/app/logger/views/userprofile.py @@ -38,6 +38,7 @@ def get_context_data(self, **kwargs): context["photos"] = self.profile_user.get_photos(for_user=self.request.user) context["quick_stats"] = self.profile_user.quick_stats context["show_stats_link"] = self.profile_user == self.request.user + context["private_stats"] = self.profile_user == self.request.user if self.request.user not in self.profile_user.friends.all(): if self.profile_user.allow_friend_username: diff --git a/app/templates/logger/_quick_stats.html b/app/templates/logger/_quick_stats.html index 0ff20a37..89576866 100644 --- a/app/templates/logger/_quick_stats.html +++ b/app/templates/logger/_quick_stats.html @@ -64,7 +64,7 @@ {{ quick_stats.qs_longest_trip|shortdelta }} -{% if private_stats %} +{% if private_stats is True %} - +{% if private_stats is True %} + +{% endif %} {% if user.has_social_media_links %} From 9d6058ae13192d2caf1c8d5ae72b4e40c0b71a2c Mon Sep 17 00:00:00 2001 From: Andrew Northall Date: Mon, 18 Dec 2023 11:08:20 +0000 Subject: [PATCH 5/6] Add missing space character --- app/templates/sidebars/_profile_page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/sidebars/_profile_page.html b/app/templates/sidebars/_profile_page.html index bc75f1c7..b2d5e7e0 100644 --- a/app/templates/sidebars/_profile_page.html +++ b/app/templates/sidebars/_profile_page.html @@ -12,6 +12,6 @@ {% if not private_profile %} {% include "logger/_quick_stats.html" with quick_stats=quick_stats user=profile_user %} - {% include "logger/_quick_friends.html" with friends=mutual_friends private_stats=private_stats%} + {% include "logger/_quick_friends.html" with friends=mutual_friends private_stats=private_stats %} {% endif %} From bff5326ead6c0dadcdf2df0f1f7b0996413fa5ee Mon Sep 17 00:00:00 2001 From: Andrew Northall Date: Mon, 18 Dec 2023 11:31:03 +0000 Subject: [PATCH 6/6] Minor refactors --- app/logger/services.py | 3 +++ app/logger/views/userprofile.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/app/logger/services.py b/app/logger/services.py index 9ba2085f..b6265329 100644 --- a/app/logger/services.py +++ b/app/logger/services.py @@ -113,6 +113,9 @@ def get_liked_str_context(request, trips): def bulk_update_view_count(request: HttpRequest, trips: typing.Iterable[Trip]): + if not trips: + return + for trip in trips: trip.add_view(request, commit=False) Trip.objects.bulk_update(trips, ["view_count"]) diff --git a/app/logger/views/userprofile.py b/app/logger/views/userprofile.py index b946fdfb..743810c1 100644 --- a/app/logger/views/userprofile.py +++ b/app/logger/views/userprofile.py @@ -28,7 +28,10 @@ def setup(self, *args, **kwargs): """Assign self.profile_user and perform permissions checks""" super().setup(*args, **kwargs) self.profile_user = get_object_or_404(User, username=self.kwargs["username"]) + + def get(self, request, *args, **kwargs): self.profile_user.add_profile_view(self.request) + return super().get(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super().get_context_data()