def process_request(self, request): if not hasattr(request, 'session'): raise RuntimeError('No session information! Do you use SessionMiddleware' ' and have it loaded before RewardsMiddleware?') # don't process AJAX requests if request.is_ajax(): return # only process GET requests with an 'aff' parameter if (request.method != 'GET') or ('aff' not in request.GET): return session_key = request.session.session_key campagin_designator = request.GET['aff'] campaigns = Campaign.objects.filter(designator__iexact=campagin_designator) if not len(campaigns): # invalid Campaign return campaign = campaigns[0] request.session['campaign'] = campaign.designator # register inflow ip_address = get_ip(request) user_agent = request.META.get('HTTP_USER_AGENT', '')[:255] referer = request.META.get('HTTP_REFERER', '')[:255] Inflow.objects.create(campaign_designator=campaign.designator, ip_address=ip_address, user_agent=user_agent, referer=referer) return
def regcon_by_request(request, value, reference='', text=''): """Register a conversion.""" ip_address = get_ip(request) user_agent = request.META.get('HTTP_USER_AGENT', '') referer = request.META.get('HTTP_REFERER', '') campaign_designator = request.session.get('campaign', None) if campaign_designator: regcon(campaign_designator, int(value), reference, text, ip_address=ip_address, user_agent=user_agent, referer=referer)
def process_request(self, request): new_inflow = False campaign_from_path = False campaign_designator = None if not hasattr(request, 'session'): raise RuntimeError('No session information! Do you use SessionMiddleware' ' and have it loaded before RewardsMiddleware?') # don't process AJAX requests if request.is_ajax(): return #check for campaign on end #TODO:Figure out how to put this in the urls.py file so that it can be included at end resolution = '' try: resolution = urlresolvers.resolve(request.path) except Http404: path_end = request.path.split('/')[-1] if path_end: campaign_designator = path_end redirect_path = request.path[:-len(path_end)] new_inflow = True campaign_from_path = True if resolution: return # only process GET requests with an 'aff' parameter if (request.method == 'GET') and (AFFILIATE_PARM in request.GET): campaign_designator = request.GET[AFFILIATE_PARM] redirect_path = request.path new_inflow = True if AFFILIATE_COOKIE in request.COOKIES: campaign_designator = request.COOKIES[AFFILIATE_COOKIE] redirect_path = request.path new_inflow = False if not campaign_designator: return try: key = Campaign.get_cache_key(campaign_designator) campaign = cache.get(key) if not campaign: campaign = Campaign.objects.get(designator=campaign_designator) cache.set(key,campaign) except Campaign.DoesNotExist: return request.session[AFFILIATE_SESSION_VAR] = campaign_designator if new_inflow: # register inflow ip_address = get_ip(request) user_agent = request.META.get('HTTP_USER_AGENT', '')[:255] referrer = request.META.get('HTTP_REFERER', '')[:255] Inflow.objects.create(campaign_designator=campaign.designator, ip_address=ip_address, user_agent=user_agent, referrer=referrer) return HttpResponseRedirect(redirect_path)