uktrade/invest-ui

View on GitHub
contact/middleware.py

Summary

Maintainability
A
35 mins
Test Coverage
class GoogleCampaignMiddleware:
    """This middleware captures the various utm*
    querystring parameters and saves them in session."""

    UTM_CODES = ['utm_source',
                 'utm_medium',
                 'utm_campaign',
                 'utm_term',
                 'utm_content']

    def process_request(self, request):
        if not request.session.get('utm'):
            request.session['utm'] = {}

        if request.GET.get('utm_source'):
            utm = {}

            for code in self.UTM_CODES:
                value = request.GET.get(code)
                if value:
                    utm[code] = value

            request.session['utm'] = utm

        # store utm codes on the request object,
        # so they're available in templates
        request.utm = request.session['utm']