From 6a9c9d081290b94c729c036893c75d80c152e201 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 10 Apr 2026 10:51:23 +0530 Subject: [PATCH] feat: implement atomic user creation with activation email trigger --- backend/users/views.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backend/users/views.py b/backend/users/views.py index fa68e90..df9492c 100644 --- a/backend/users/views.py +++ b/backend/users/views.py @@ -1,9 +1,12 @@ from django.contrib.auth import get_user_model from django.contrib.auth.tokens import default_token_generator +from django.db import transaction from django.utils.http import urlsafe_base64_decode from rest_framework import generics, permissions, status from rest_framework.response import Response +from users.utils import send_activation_email + from .serializers import UserSerializer User = get_user_model() @@ -14,6 +17,12 @@ class RegisterView(generics.CreateAPIView): permission_classes = (permissions.AllowAny,) serializer_class = UserSerializer + def perform_create(self, serializer): + with transaction.atomic(): + # making sure that if email fails, the user is not created + user = serializer.save() + send_activation_email(user) + class ActivationView(generics.GenericAPIView): permission_classes = (permissions.AllowAny,)