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