Juan Carlos пре 4 година
родитељ
комит
9761a64d07
3 измењених фајлова са 68 додато и 11 уклоњено
  1. 17 10
      marktplatz/models.py
  2. 50 1
      marktplatz/signals.py
  3. 1 0
      project_base/settings.py

+ 17 - 10
marktplatz/models.py

@@ -229,16 +229,6 @@ class Product(models.Model):
 
 
 
 
 
 
-class SearchAgent(models.Model):
-
-    def hash_gen():
-        return uuid.uuid1().hex
-
-    email           = EmailField         ( 'Email',   max_length = 2048, help_text="Email des Projektes", null = False, blank=False )
-    ort             = MultiSelectField   ( 'Ort', max_length = 4096 ,    choices=Product.ORT, default='', help_text="Ort des Projektes", null = True, blank=False )
-    hash            = CharField          ( max_length=255, default=hash_gen )
-
-
 class MobilitaetsProjekt(Product):
 class MobilitaetsProjekt(Product):
 
 
     @property
     @property
@@ -421,6 +411,23 @@ class Wohnprojekt(Product):
     urbanem            = BooleanField      ( 'Urbane Mischung', default=False, help_text="Gibt es im Haus neben dem Wohnen auch anderen urbane Funktionen wie Arbeiten, Gewerbe, Kultur, Bildung usf. (Und ist der Anteil dieser Flächen nennenswert?) Wenn ja dann kreuze dieses Feld an!", blank=False )
     urbanem            = BooleanField      ( 'Urbane Mischung', default=False, help_text="Gibt es im Haus neben dem Wohnen auch anderen urbane Funktionen wie Arbeiten, Gewerbe, Kultur, Bildung usf. (Und ist der Anteil dieser Flächen nennenswert?) Wenn ja dann kreuze dieses Feld an!", blank=False )
 
 
 
 
+
+class SearchAgent(models.Model):
+
+    def hash_gen():
+        return uuid.uuid1().hex
+
+    email           = EmailField         ( 'Email',   max_length = 2048, help_text="Email des Projektes", null = False, blank=False )
+    ort             = MultiSelectField   ( 'Ort', max_length = 4096 ,    choices=Product.ORT, default='', help_text="Ort des Projektes", null = True, blank=False )
+    hash            = CharField          ( max_length=255, default=hash_gen )
+
+
+class Trigger(models.Model):
+
+    ort             = MultiSelectField   ( 'Ort', max_length = 4096 ,    choices=Product.ORT, default='', help_text="Ort des Projektes", null = True, blank=False )
+    instancepk      = IntegerField       ( 'Id of original instance', help_text="Id of the product instance", default = 0, null = False,  )
+
+
 class Link(models.Model):
 class Link(models.Model):
     product = ForeignKey(Product, on_delete=models.CASCADE)
     product = ForeignKey(Product, on_delete=models.CASCADE)
     link_description = CharField(null=True, blank=True, max_length = 2048)
     link_description = CharField(null=True, blank=True, max_length = 2048)

+ 50 - 1
marktplatz/signals.py

@@ -8,7 +8,7 @@ from post_office import mail
 # from django.core.mail import EmailMessage
 # from django.core.mail import EmailMessage
 # from django.core.mail import EmailMultiAlternatives
 # from django.core.mail import EmailMultiAlternatives
 
 
-from .models import *
+from marktplatz.models import *
 
 
 
 
 
 
@@ -19,9 +19,51 @@ def search_agent(sender, instance, update_fields=None, **kwargs):
     # if update_fields is not None:
     # if update_fields is not None:
     #     if 'frei' in update_fields:
     #     if 'frei' in update_fields:
     if instance.frei == 'JAJA' and instance.public == True :
     if instance.frei == 'JAJA' and instance.public == True :
+
+        trigger = Trigger(ort=instance.ort, instancepk = instance.pk  )
+        trigger.save()
+        # SAVE an object that will trigger the search loop later.
+
+        # for agent in SearchAgent.objects.all():
+        #
+        #     for agentOrt in agent.ort:
+        #         if agentOrt == instance.ort:
+        #             context = {}
+        #             context['product'] = model_to_dict ( instance )
+        #             context['agent']   = model_to_dict ( agent )
+        #
+        #             context['product']['status']  =  instance.get_status_display()
+        #             context['product']['ort']     =  instance.get_ort_display()
+        #             context['agent']['delete_url']= 'https://' + config.WEBSEITE_URI + reverse(  'search-agent-delete' , kwargs={ 'pk': agent.pk, 'hash': agent.hash }   )
+        #
+        #             context['recipient'] = [ agent.email, ]
+        #             context['msg_subject' ] = ('Gemeinschaffen - ' + instance.name )
+        #
+        #             mail.send(
+        #                 context['recipient'],
+        #                 config.EMAIL_NOREPLY,
+        #                 context = context,
+        #                 template='generic',
+        #                 headers={  'Reply-To': instance.email },
+        #                 priority='medium',
+        #             )
+
+
+
+def process_triggers():
+
+    for trigger in Trigger.objects.all():
+        print("there is a trigger!")
+        instance = Product.objects.get(pk = trigger.instancepk)
+
+
         for agent in SearchAgent.objects.all():
         for agent in SearchAgent.objects.all():
+
             for agentOrt in agent.ort:
             for agentOrt in agent.ort:
                 if agentOrt == instance.ort:
                 if agentOrt == instance.ort:
+
+
+
                     context = {}
                     context = {}
                     context['product'] = model_to_dict ( instance )
                     context['product'] = model_to_dict ( instance )
                     context['agent']   = model_to_dict ( agent )
                     context['agent']   = model_to_dict ( agent )
@@ -33,6 +75,8 @@ def search_agent(sender, instance, update_fields=None, **kwargs):
                     context['recipient'] = [ agent.email, ]
                     context['recipient'] = [ agent.email, ]
                     context['msg_subject' ] = ('Gemeinschaffen - ' + instance.name )
                     context['msg_subject' ] = ('Gemeinschaffen - ' + instance.name )
 
 
+                    print( "triggered!!!!", context['product']['name'],  context['product']['ort'] )
+
                     mail.send(
                     mail.send(
                         context['recipient'],
                         context['recipient'],
                         config.EMAIL_NOREPLY,
                         config.EMAIL_NOREPLY,
@@ -41,3 +85,8 @@ def search_agent(sender, instance, update_fields=None, **kwargs):
                         headers={  'Reply-To': instance.email },
                         headers={  'Reply-To': instance.email },
                         priority='medium',
                         priority='medium',
                     )
                     )
+
+        # trigger.delete()
+
+
+# process_triggers()

+ 1 - 0
project_base/settings.py

@@ -266,6 +266,7 @@ NEWSLETTER_BATCH_SIZE = 100
 CRONJOBS = [
 CRONJOBS = [
     ('*/5 * * * *', 'django.core.management.call_command', ['submit_newsletter', ], {}, '>   /dev/null 2>&1' ), #> /dev/null 2>&1
     ('*/5 * * * *', 'django.core.management.call_command', ['submit_newsletter', ], {}, '>   /dev/null 2>&1' ), #> /dev/null 2>&1
     ('*/5 * * * *', 'django.core.management.call_command', ['send_queued_mail'], {}, '> /dev/null 2>&1'  ), #'> /dev/null 2>&1'
     ('*/5 * * * *', 'django.core.management.call_command', ['send_queued_mail'], {}, '> /dev/null 2>&1'  ), #'> /dev/null 2>&1'
+    ('*/10 * * * *', 'marktplatz.signals.process_triggers', [''], {}, '> /dev/null 2>&1'  ), #'> /dev/null 2>&1'
 ]
 ]
 
 
 CRISPY_TEMPLATE_PACK = 'bootstrap4'
 CRISPY_TEMPLATE_PACK = 'bootstrap4'