|
1 | | -from django.conf import settings |
2 | | -from django.core.mail import send_mail |
| 1 | +from django.contrib.auth import get_user_model |
3 | 2 | from django.core.signing import TimestampSigner |
4 | 3 | from django.db.models.signals import post_save |
5 | 4 | from django.dispatch import receiver |
6 | 5 |
|
7 | 6 | from users.models import Profile |
8 | 7 |
|
| 8 | +User = get_user_model() |
9 | 9 | signer = TimestampSigner() |
10 | 10 |
|
11 | 11 |
|
12 | | -@receiver(post_save, sender=settings.AUTH_USER_MODEL) |
| 12 | +@receiver(post_save, sender=User) |
13 | 13 | def create_profile_and_send_email(sender, instance, created, **kwargs): |
14 | | - if created: |
15 | | - # Create the profile (safe even if mail fails) |
16 | | - Profile.objects.get_or_create(user=instance) |
17 | | - |
18 | | - # Generate a signed token for deletion link |
19 | | - token = signer.sign(instance.pk) # securely signs user ID with timestamp |
20 | | - |
21 | | - # Build delete URL |
22 | | - delete_url = f"http://127.0.0.1:8000/users/delete-account/?token={token}" |
23 | | - |
24 | | - # Send confirmation mail |
25 | | - try: |
26 | | - send_mail( |
27 | | - subject="Welcome to Our Instagram App 🎉", |
28 | | - message=( |
29 | | - f"Hi {instance.username},\n\n" |
30 | | - f"Your account has been created successfully.\n" |
31 | | - f"If you did NOT create this account, click below to delete it:\n" |
32 | | - f"{delete_url}\n\n" |
33 | | - f"This link is valid for 24 hours." |
34 | | - ), |
35 | | - from_email=settings.DEFAULT_FROM_EMAIL, |
36 | | - recipient_list=[instance.email], |
37 | | - fail_silently=False, |
38 | | - ) |
39 | | - except Exception as e: |
40 | | - # Even if mail sending fails, the profile remains |
41 | | - print(f"⚠️ Failed to send welcome email: {e}") |
| 14 | + if not created: |
| 15 | + return |
| 16 | + |
| 17 | + # ✅ Create profile safely |
| 18 | + Profile.objects.get_or_create(user=instance) |
| 19 | + |
| 20 | + # ✅ Generate signed token |
| 21 | + token = signer.sign(instance.pk) |
| 22 | + |
| 23 | + delete_url = f"http://127.0.0.1:8000/users/delete-account/?token={token}" |
| 24 | + print("🔥 SIGNAL FIRED") |
| 25 | + print("Delete URL:", delete_url) |
| 26 | + |
| 27 | + # OPTIONAL: send mail |
| 28 | + # send_mail( |
| 29 | + # subject="Welcome to Our Instagram App 🎉", |
| 30 | + # message=( |
| 31 | + # f"Hi {instance.username},\n\n" |
| 32 | + # f"Your account has been created successfully.\n\n" |
| 33 | + # f"If you did NOT create this account, click below to delete it:\n" |
| 34 | + # f"{delete_url}\n\n" |
| 35 | + # f"This link is valid for 24 hours." |
| 36 | + # ), |
| 37 | + # from_email=settings.DEFAULT_FROM_EMAIL, |
| 38 | + # recipient_list=[instance.email], |
| 39 | + # fail_silently=False, |
| 40 | + # ) |
0 commit comments