signals.py 1.1 KB

12345678910111213141516171819202122232425
  1. from django.core.mail import EmailMessage
  2. from django.db.models.signals import post_save
  3. from django.dispatch import receiver
  4. from django.template.loader import get_template
  5. from desecapi import models
  6. @receiver(post_save, sender=models.Domain, dispatch_uid=__name__)
  7. def domain_handler(sender, instance, created, raw, using, update_fields, **kwargs):
  8. if instance.is_locally_registrable:
  9. content_tmpl = get_template('emails/domain-dyndns/content.txt')
  10. subject_tmpl = get_template('emails/domain-dyndns/subject.txt')
  11. from_tmpl = get_template('emails/from.txt')
  12. context = {
  13. 'domain': instance.name,
  14. 'url': f'https://update.{instance.parent_domain_name}/',
  15. 'username': instance.name,
  16. 'password': models.Token.objects.create(user=instance.owner, name='dyndns')
  17. }
  18. email = EmailMessage(subject_tmpl.render(context),
  19. content_tmpl.render(context),
  20. from_tmpl.render(context),
  21. [instance.owner.email])
  22. email.send()