You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

42 lines
1.5 KiB

from django.http import HttpResponseRedirect
from django.urls import reverse
from core.models import STATUS_ACTIVE
from .models import Referral
from .utils import set_cookie, pop_cookie, get_cookie
class ReferralMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = None
if hasattr(self,'process_request'):
response = self.process_request(request)
if not response:
response = self.get_response(request)
if hasattr(self,'process_response'):
response = self.process_response(request,response)
return response
def process_request(self,request):
pass
def process_response(self,request,response):
if not request.user.is_authenticated:
code = request.GET.get('ref')
cookie_code = get_cookie(request.COOKIES, 'referral')
if code != cookie_code:
referral_code = request.GET.get('ref')
referral = Referral.active.filter(code__exact=referral_code).first()
if referral and referral.is_active:
referral.referralstats.visits += 1
referral.referralstats.save()
referral.user.partnerstats.total_visits += 1
referral.user.partnerstats.save()
set_cookie(response, 'referral', referral_code)
elif request.user.is_authenticated:
pop_cookie(response, 'referral')
return response