예제 #1
0
def min_cr_trigger(metric):

    offer = Offer.objects.get(pk=metric.offer_id)

    if metric.value < offer.min_cr:
        try:
            filters = dict(key=Trigger.KEY_MIN_CR,
                           offer_id=metric.offer_id,
                           affiliate_id=metric.affiliate_id)
            trigger = Trigger.objects.get(**filters)

            trigger.value = metric.value
            trigger.status = Trigger.PROBLEM
            trigger.save()
        except Trigger.DoesNotExist:
            new_trigger = Trigger()
            new_trigger.key = Trigger.KEY_MIN_CR
            new_trigger.offer_id = metric.offer_id
            new_trigger.affiliate_id = metric.affiliate_id
            new_trigger.value = metric.value
            new_trigger.status = Trigger.PROBLEM
            new_trigger.save()

            notify_manager.delay(new_trigger)

            trigger_signal.send(sender=None, trigger=new_trigger)
예제 #2
0
def run_operation(key, trigger_check, metric_log):
    print(f"run_operation: Running {key} operation with arguments"
          f"trigger - {trigger_check}, metric log - {metric_log}")
    if key == "email_affiliate":
        notify_affiliate.delay(metric_log)
    elif key == "email_affiliate_manager":
        notify_manager.delay(trigger_check, metric_log)
    elif key == "unapprove":
        if offer_requires_approval(metric_log.offer_id):
            unapprove_affiliate_offer.delay(trigger_check, metric_log)
        else:
            offer_block_affiliate.delay(trigger_check, metric_log)
        notify_affiliate_unapprovement.delay(trigger_check, metric_log)
        notify_manager_unapprovement.delay(trigger_check, metric_log)
    elif key == "approve":
        approve_affiliate_offer.delay(trigger_check, metric_log)
        notify_affiliate_approved.delay(trigger_check, metric_log)
        notify_manager_approved.delay(trigger_check, metric_log)
def clicks_if_zero_conv_trigger(metric):

    offer = Offer.objects.get(pk=metric.offer_id)

    if metric.value > offer.clicks_if_zero_conv:
        try:
            filters = dict(key=Trigger.KEY_CLICKS_ZERO_CONV,
                           offer_id=metric.offer_id,
                           affiliate_id=metric.affiliate_id)
            trigger = Trigger.objects.get(**filters)

            trigger.value = metric.value
            trigger.status = Trigger.PROBLEM
            trigger.save()
        except Trigger.DoesNotExist:
            new_trigger = Trigger()
            new_trigger.key = Trigger.KEY_CLICKS_ZERO_CONV
            new_trigger.offer_id = metric.offer_id
            new_trigger.affiliate_id = metric.affiliate_id
            new_trigger.value = metric.value
            new_trigger.status = Trigger.PROBLEM
            new_trigger.save()

            notify_manager.delay(new_trigger)