def activate_account(request, user_id, token): User = auth.get_user_model() try: user = User.objects.get(pk=user_id) except User.DoesNotExist: message = _("Activation link is invalid. Please try again.") return Response({'detail': message}, status=status.HTTP_400_BAD_REQUEST) if not is_activation_token_valid(user, token): message = _("Activation link is invalid. Please try again.") return Response({'detail': message}, status=status.HTTP_400_BAD_REQUEST) form = ResendActivationForm() try: form.confirm_user_not_banned(user) except ValidationError: message = _("Activation link has expired. Please request new one.") return Response({'detail': message}, status=status.HTTP_400_BAD_REQUEST) try: form.confirm_can_be_activated(user) except ValidationError as e: return Response({'detail': e.messages[0]}, status=status.HTTP_400_BAD_REQUEST) user.requires_activation = False user.save(update_fields=['requires_activation']) message = _("%(user)s, your account has been activated.") return Response({ 'detail': message % {'user': user.username} })
def decorator(request, *args, **kwargs): if 'user_id' in kwargs: User = get_user_model() user = get_object_or_404(User.objects, pk=kwargs.pop('user_id')) kwargs['user'] = user if not is_activation_token_valid(user, kwargs['token']): message = _("Your link is invalid. Please try again.") return Response({'detail': message}, status=status.HTTP_404_NOT_FOUND) form = ResendActivationForm() try: form.confirm_user_not_banned(user) except ValidationError: message = _("Your link has expired. Please request new one.") return Response({'detail': message}, status=status.HTTP_404_NOT_FOUND) try: form.confirm_can_be_activated(user) except ValidationError as e: return Response({'detail': e.messages[0]}, status=status.HTTP_404_NOT_FOUND) return f(request, *args, **kwargs)