from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from django.dispatch import receiver
from django.template import loader
from simple_email_confirmation import unconfirmed_email_created


@receiver(unconfirmed_email_created,  dispatch_uid='send_email_confirmation')
def send_confirmation_email(sender, email, user=None, **kwargs):
    member = user or sender
    context = {
        'email': email,
        'domain': settings.BASE_URL,
        'site_name': settings.WAGTAIL_SITE_NAME,
        'token': member.get_confirmation_key(email),
    }

    subject = loader.render_to_string(
        'members/email_change_subject.txt', context)
    # Email subject *must not* contain newlines
    subject = ''.join(subject.splitlines())
    body = loader.render_to_string('members/email_change_email.html',
                                   context)

    email_message = EmailMultiAlternatives(subject, body, None, [email])
    email_message.send()

import datetime
from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.template import loader
from django.utils import timezone
from simple_email_confirmation import unconfirmed_email_created

from members.models import Member


@receiver(unconfirmed_email_created, dispatch_uid='send_email_confirmation')
def send_confirmation_email(sender, email, user=None, **kwargs):
    member = user
    context = {
        'email': email,
        'domain': settings.BASE_URL,
        'site_name': settings.WAGTAIL_SITE_NAME,
        'token': member.get_confirmation_key(email),
    }

    subject = loader.render_to_string(
        'members/email_change_subject.txt', context)
    # Email subject *must not* contain newlines
    subject = ''.join(subject.splitlines())
    body = loader.render_to_string('members/email_change_email.html',
                                   context)

    email_message = EmailMultiAlternatives(subject, body, None, [email])
    email_message.send()


@receiver(pre_save, sender=Member, dispatch_uid='member_check_membership')
def check_membership(sender, instance, **kwargs):
    if timezone.now() - instance.status_changed > datetime.timedelta(1):
        instance.update_status()

Check membership when a Member is saved
Check membership when a Member is saved

+ import datetime
  from django.conf import settings
  from django.core.mail import EmailMultiAlternatives
+ from django.db.models.signals import pre_save
  from django.dispatch import receiver
  from django.template import loader
+ from django.utils import timezone
  from simple_email_confirmation import unconfirmed_email_created
  
+ from members.models import Member
  
+ 
- @receiver(unconfirmed_email_created,  dispatch_uid='send_email_confirmation')
+ @receiver(unconfirmed_email_created, dispatch_uid='send_email_confirmation')
  def send_confirmation_email(sender, email, user=None, **kwargs):
-     member = user or sender
+     member = user
      context = {
          'email': email,
          'domain': settings.BASE_URL,
          'site_name': settings.WAGTAIL_SITE_NAME,
          'token': member.get_confirmation_key(email),
      }
  
      subject = loader.render_to_string(
          'members/email_change_subject.txt', context)
      # Email subject *must not* contain newlines
      subject = ''.join(subject.splitlines())
      body = loader.render_to_string('members/email_change_email.html',
                                     context)
  
      email_message = EmailMultiAlternatives(subject, body, None, [email])
      email_message.send()
  
+ 
+ @receiver(pre_save, sender=Member, dispatch_uid='member_check_membership')
+ def check_membership(sender, instance, **kwargs):
+     if timezone.now() - instance.status_changed > datetime.timedelta(1):
+         instance.update_status()
+ 
Check membership when a Member is saved
## Code Before:
from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from django.dispatch import receiver
from django.template import loader
from simple_email_confirmation import unconfirmed_email_created


@receiver(unconfirmed_email_created,  dispatch_uid='send_email_confirmation')
def send_confirmation_email(sender, email, user=None, **kwargs):
    member = user or sender
    context = {
        'email': email,
        'domain': settings.BASE_URL,
        'site_name': settings.WAGTAIL_SITE_NAME,
        'token': member.get_confirmation_key(email),
    }

    subject = loader.render_to_string(
        'members/email_change_subject.txt', context)
    # Email subject *must not* contain newlines
    subject = ''.join(subject.splitlines())
    body = loader.render_to_string('members/email_change_email.html',
                                   context)

    email_message = EmailMultiAlternatives(subject, body, None, [email])
    email_message.send()

## Instruction:
Check membership when a Member is saved
## Code After:
import datetime
from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.template import loader
from django.utils import timezone
from simple_email_confirmation import unconfirmed_email_created

from members.models import Member


@receiver(unconfirmed_email_created, dispatch_uid='send_email_confirmation')
def send_confirmation_email(sender, email, user=None, **kwargs):
    member = user
    context = {
        'email': email,
        'domain': settings.BASE_URL,
        'site_name': settings.WAGTAIL_SITE_NAME,
        'token': member.get_confirmation_key(email),
    }

    subject = loader.render_to_string(
        'members/email_change_subject.txt', context)
    # Email subject *must not* contain newlines
    subject = ''.join(subject.splitlines())
    body = loader.render_to_string('members/email_change_email.html',
                                   context)

    email_message = EmailMultiAlternatives(subject, body, None, [email])
    email_message.send()


@receiver(pre_save, sender=Member, dispatch_uid='member_check_membership')
def check_membership(sender, instance, **kwargs):
    if timezone.now() - instance.status_changed > datetime.timedelta(1):
        instance.update_status()
