From b18728eef6b4f65e479bef5d69f915cbafbdac69 Mon Sep 17 00:00:00 2001 From: Aroy-Art Date: Wed, 19 Jun 2024 18:21:42 +0200 Subject: [PATCH 1/2] Add: API UserProfileAPIView.seen_post function --- archivist/apps/api/urls.py | 7 +++++++ archivist/apps/api/views.py | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 archivist/apps/api/urls.py create mode 100644 archivist/apps/api/views.py diff --git a/archivist/apps/api/urls.py b/archivist/apps/api/urls.py new file mode 100644 index 0000000..8f3ab82 --- /dev/null +++ b/archivist/apps/api/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +app_name = 'api' + +urlpatterns = [ + path('profile/seen_posts/', UserProfileAPIView.seen_post, name='user_seen_post'), +] \ No newline at end of file diff --git a/archivist/apps/api/views.py b/archivist/apps/api/views.py new file mode 100644 index 0000000..c19fbe5 --- /dev/null +++ b/archivist/apps/api/views.py @@ -0,0 +1,42 @@ +from django.http import JsonResponse + +# Create your views here. + +from django.contrib.auth.models import User, Group + +from apps.user.models import UserProfile, SeenPost + +from apps.sites.models import Submissions + +class UserProfileAPIView(APIView): + + def seen_post(request, submission_hash): + + user = UserProfile.objects.get(user=request.user) + + if request.method == 'GET': + try: + submission = Submissions.objects.get(submission_hash=submission_hash) + + try: + SeenPost.objects.get(user=user, post_id=submission.pk) + + return JsonResponse({'seen': True}, status=status.HTTP_200_OK) + + except SeenPost.DoesNotExist: + return JsonResponse({'seen': False}, status=status.HTTP_200_OK) + + except Submissions.DoesNotExist: + return JsonResponse({'message': 'Submission not found.'}, status=status.HTTP_404_NOT_FOUND) + + + if request.method == 'PUT': + submission = Submissions.objects.get(submission_hash=submission_hash) + + SeenPost.objects.get_or_create(user=user, post_id=submission.pk) + + return JsonResponse({'seen': True}, status=status.HTTP_200_OK) + + else: + return JsonResponse({'message': 'Only GET and PUT requests are allowed.'}, status=status.HTTP_405_METHOD_NOT_ALLOWED) + From 78d367337dd0b89a699ba2e4da0c2270165ad283 Mon Sep 17 00:00:00 2001 From: Aroy-Art Date: Wed, 19 Jun 2024 18:27:13 +0200 Subject: [PATCH 2/2] Add: css for seen overlay --- archivist/static/css/main.css | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/archivist/static/css/main.css b/archivist/static/css/main.css index 6977b6d..31f4bea 100644 --- a/archivist/static/css/main.css +++ b/archivist/static/css/main.css @@ -406,6 +406,29 @@ body{ opacity: 1; /* Show the overlay on hover */ } +.seen-overlay { + position: absolute; + z-index: 2; + left: 0; + bottom: 0; + font-size: 13px; + font-weight: 700; + line-height: 14px; + letter-spacing: .5px; + color: #232326; + background-color: #414141; + border: 1.25px solid #232326; + border-radius: 0 1vmin 0 1vmin; + white-space: nowrap; + padding: 4px 6px 4px; + margin: 0 1px 0 0; + cursor: pointer; + opacity: .8; +} + +.seen-overlay[data-seen="false"] { + display: none; +} /*================================================================= Site icon overlay on gallery