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.
40 lines
1.4 KiB
40 lines
1.4 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()
|
|
# set_cookie(response, 'referral', referral_code)
|
|
elif request.user.is_authenticated:
|
|
pop_cookie(response, 'referral')
|
|
return response
|
|
|
|
|