signals.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django.dispatch import receiver
  2. from django.urls import reverse
  3. from django.forms.models import model_to_dict
  4. from django.db.models.signals import post_delete, post_save
  5. from constance import config
  6. from post_office import mail
  7. from django.core.mail import EmailMessage
  8. from django.core.mail import EmailMultiAlternatives
  9. from .models import *
  10. @receiver(post_save, sender=Product)
  11. @receiver(post_save, sender=Wohnprojekt)
  12. def search_agent(sender, instance, update_fields=None, **kwargs):
  13. if 'frei' in update_fields:
  14. if instance.frei == 'JAJA' :
  15. for agent in SearchAgent.objects.all():
  16. for agentOrt in agent.ort:
  17. if agentOrt == instance.ort:
  18. context = {}
  19. context['product'] = model_to_dict ( instance )
  20. context['agent'] = model_to_dict ( agent )
  21. context['product']['status'] = instance.get_status_display()
  22. context['product']['ort'] = instance.get_ort_display()
  23. context['agent']['delete_url']= instance.current_uri + reverse( 'search-agent-delete' , kwargs={ 'pk': agent.pk, 'hash': agent.hash } )
  24. context['recipient'] = [ agent.email, ]
  25. context['msg_subject' ] = ('Gemeinschaffen - ' + instance.name )
  26. mail.send(
  27. context['recipient'],
  28. config.EMAIL_NOREPLY,
  29. context = context,
  30. template='generic',
  31. headers={ 'Reply-To': agent.email },
  32. priority='now',
  33. )