signals.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 marktplatz.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. # print("signal called")
  14. # if update_fields is not None:
  15. # if 'frei' in update_fields:
  16. if instance.frei == 'JAJA' and instance.public == True :
  17. trigger = Trigger(ort=instance.ort, instancepk = instance.pk )
  18. trigger.save()
  19. # SAVE an object that will trigger the search loop later.
  20. # for agent in SearchAgent.objects.all():
  21. #
  22. # for agentOrt in agent.ort:
  23. # if agentOrt == instance.ort:
  24. # context = {}
  25. # context['product'] = model_to_dict ( instance )
  26. # context['agent'] = model_to_dict ( agent )
  27. #
  28. # context['product']['status'] = instance.get_status_display()
  29. # context['product']['ort'] = instance.get_ort_display()
  30. # context['agent']['delete_url']= 'https://' + config.WEBSEITE_URI + reverse( 'search-agent-delete' , kwargs={ 'pk': agent.pk, 'hash': agent.hash } )
  31. #
  32. # context['recipient'] = [ agent.email, ]
  33. # context['msg_subject' ] = ('Gemeinschaffen - ' + instance.name )
  34. #
  35. # mail.send(
  36. # context['recipient'],
  37. # config.EMAIL_NOREPLY,
  38. # context = context,
  39. # template='generic',
  40. # headers={ 'Reply-To': instance.email },
  41. # priority='medium',
  42. # )
  43. def process_triggers():
  44. for trigger in Trigger.objects.all():
  45. print("there is a trigger!")
  46. instance = Product.objects.get(pk = trigger.instancepk)
  47. for agent in SearchAgent.objects.all():
  48. for agentOrt in agent.ort:
  49. if agentOrt == instance.ort:
  50. context = {}
  51. context['product'] = model_to_dict ( instance )
  52. context['agent'] = model_to_dict ( agent )
  53. context['product']['status'] = instance.get_status_display()
  54. context['product']['ort'] = instance.get_ort_display()
  55. context['agent']['delete_url']= 'https://' + config.WEBSEITE_URI + reverse( 'search-agent-delete' , kwargs={ 'pk': agent.pk, 'hash': agent.hash } )
  56. context['recipient'] = [ agent.email, ]
  57. context['msg_subject' ] = ('Gemeinschaffen - ' + instance.name )
  58. print( "triggered!!!!", context['product']['name'], context['product']['ort'] )
  59. mail.send(
  60. context['recipient'],
  61. config.EMAIL_NOREPLY,
  62. context = context,
  63. template='generic',
  64. headers={ 'Reply-To': instance.email },
  65. priority='medium',
  66. )
  67. # trigger.delete()
  68. # process_triggers()