Skip to content

Commit

Permalink
update EmailLastSeen when user logs in
Browse files Browse the repository at this point in the history
  • Loading branch information
vincentporte committed Jan 28, 2025
1 parent 9866629 commit 294938f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
8 changes: 8 additions & 0 deletions lacommunaute/users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from uuid import uuid4

from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager
from django.contrib.auth.signals import user_logged_in
from django.db import models
from django.utils import timezone

Expand Down Expand Up @@ -60,3 +61,10 @@ def soft_delete(self):
self.deleted_at = timezone.now()
self.email = None
self.save()


def update_email_last_seen(sender, user, request, **kwargs):
EmailLastSeen.objects.seen(email=user.email, kind=EmailLastSeenKind.LOGGED)


user_logged_in.connect(update_email_last_seen, dispatch_uid="update_email_last_seen")
13 changes: 11 additions & 2 deletions lacommunaute/users/tests/tests_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@

from lacommunaute.forum_member.models import ForumProfile
from lacommunaute.notification.emails import SIB_SMTP_URL
from lacommunaute.users.enums import IdentityProvider
from lacommunaute.users.enums import EmailLastSeenKind, IdentityProvider
from lacommunaute.users.factories import UserFactory
from lacommunaute.users.models import User
from lacommunaute.users.models import EmailLastSeen, User
from lacommunaute.users.views import send_magic_link
from lacommunaute.utils.enums import Environment
from lacommunaute.utils.testing import parse_response_to_soup
Expand Down Expand Up @@ -178,6 +178,15 @@ def test_user_is_already_authenticated(self, client, db, next_url, expected):
assert response.status_code == 302
assert response.url == expected

def test_email_last_seen_is_updated_on_login_signal(self, client, db):
user = UserFactory()
client.force_login(user)

email_last_seen = EmailLastSeen.objects.get()
assert email_last_seen.email == user.email
assert email_last_seen.last_seen_at is not None
assert email_last_seen.last_seen_kind == EmailLastSeenKind.LOGGED


class TestCreateUserView:
@override_settings(ENVIRONMENT=Environment.PROD)
Expand Down

0 comments on commit 294938f

Please sign in to comment.