from django.conf import settings from django.contrib.auth.models import ( BaseUserManager, AbstractBaseUser ) from django.contrib import messages from django.core.mail import send_mail from django.conf import settings from django.core.validators import RegexValidator from django.db import models from django.db.models.signals import post_save # Create your models here. from .utils import code_generator
USERNAME_REGEX = '^[a-zA-Z0-9.+-]*$' class MyUserManager(BaseUserManager): def create_user(self, username, email, password=None): """ Creates and saves a User with the given email, date of birth and password. """ if not email: raise ValueError('Users must have an email address') user = self.model( username = username, email=self.normalize_email(email), ) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, username, email, password): """ Creates and saves a superuser with the given email, date of birth and password. """ user = self.create_user( username, email, password=password, ) user.is_admin = True user.is_staff = True user.save(using=self._db) return user def get_email_field_name(self, email): email_string = str(self.email) return email_string class MyUser(AbstractBaseUser): username = models.CharField( max_length=255, validators=[ RegexValidator( regex = USERNAME_REGEX, message = 'Username must be Alpahnumeric or contain any of the following: ". @ + -" ', code='invalid_username' )], unique=True, ) email = models.EmailField( verbose_name='email address', max_length=255, unique=True, ) zipcode = models.CharField(max_length=120, default="92660") is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_admin = models.BooleanField(default=False) objects = MyUserManager() USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] def get_full_name(self): # The user is identified by their email address return self.email def get_short_name(self): # The user is identified by their email address return self.email def __str__(self): # __unicode__ on Python 2 return self.email def has_perm(self, perm, obj=None): "Does the user have a specific permission?" # Simplest possible answer: Yes, always return True def has_module_perms(self, app_label): "Does the user have permissions to view the app `app_label`?" # Simplest possible answer: Yes, always return True # @property # def is_staff(self): # "Is the user a member of staff?" # # Simplest possible answer: All admins are staff # return self.is_admin class ActivationProfile(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL) key = models.CharField(max_length=120) expired = models.BooleanField(default=False) def save(self, *args, **kwargs): self.key = code_generator() super(ActivationProfile, self).save(*args, **kwargs) def post_save_activation_receiver(sender, instance, created, *args, **kwargs): if created: #send email subject = 'Registration' message = "http://127.0.0.1:8000/activate/{0}".format(instance.key) from_email = settings.EMAIL_HOST_USER recipient_list = ['UserEmail'] print(recipient_list) send_mail(subject, message, from_email, recipient_list,fail_silently=True) post_save.connect(post_save_activation_receiver, sender=ActivationProfile) class Profile(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL) city = models.CharField(max_length=120, null=True, blank=True) def __str__(self): return str(self.user.username) def __unicode__(self): return str(self.user.username) def post_save_user_model_receiver(sender, instance, created, *args, **kwargs): if created: try: Profile.objects.create(user=instance) ActivationProfile.objects.create(user=instance) except: pass post_save.connect(post_save_user_model_receiver,sender=settings. AUTH_USER_MODEL) Hi!I'm trying to make user authentication system, everything is working fine except this email part in my signal: The question is how do I set this reception_list to be email that user is going to enter.I don't know how to refer to email field value(because it is other model) ,in this case with is signal. def post_save_activation_receiver(sender, instance, created, *args, **kwargs): if created: #send email subject = 'Registration' message = "http://127.0.0.1:8000/activate/{0}".format(instance.key) from_email = settings.EMAIL_HOST_USER recipient_list = ['UserEmail'] print(recipient_list) send_mail(subject, message, from_email, recipient_list,fail_silently=True) post_save.connect(post_save_activation_receiver, sender=ActivationProfile) -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/7ff66609-dce4-4ea9-a807-93e37a2ab837%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.