def __call__(self, request):
        response = self.get_response(request)

        if not is_cookie_consent_enabled(request):
            return response
        cookie_dic = get_cookie_dict_from_request(request)
        for cookie_group in all_cookie_groups().values():
            if not cookie_group.is_deletable:
                continue
            group_version = cookie_dic.get(cookie_group.varname, None)
            for cookie in cookie_group.cookie_set.all():
                if cookie.name not in request.COOKIES:
                    continue

                if not group_version:
                    if not settings.COOKIE_CONSENT_OPT_OUT:
                        response.delete_cookie(smart_str(cookie.name),
                                               cookie.path, cookie.domain)
                    continue

                if group_version == settings.COOKIE_CONSENT_DECLINE:
                    response.delete_cookie(smart_str(cookie.name), cookie.path,
                                           cookie.domain)
                if group_version < cookie.get_version(
                ) and not settings.COOKIE_CONSENT_OPT_OUT:
                    response.delete_cookie(smart_str(cookie.name), cookie.path,
                                           cookie.domain)
        return response
def get_accept_cookie_groups_cookie_string(request, cookie_groups):
    """
    Tag returns accept cookie string suitable to use in javascript.
    """
    cookie_dic = get_cookie_dict_from_request(request)
    for cookie_group in cookie_groups:
        cookie_dic[cookie_group.varname] = cookie_group.get_version()
    return get_cookie_string(cookie_dic)
def get_decline_cookie_groups_cookie_string(request, cookie_groups):
    """
    Tag returns decline cookie string suitable to use in javascript.
    """
    cookie_dic = get_cookie_dict_from_request(request)
    for cookie_group in cookie_groups:
        cookie_dic[cookie_group.varname] = settings.COOKIE_CONSENT_DECLINE
    return get_cookie_string(cookie_dic)
def get_accept_cookie_groups_cookie_string(request, cookie_groups):
    """
    Tag returns accept cookie string suitable to use in javascript.
    """
    cookie_dic = get_cookie_dict_from_request(request)
    for cookie_group in cookie_groups:
        cookie_dic[cookie_group.varname] = cookie_group.get_version()
    return get_cookie_string(cookie_dic)
def get_decline_cookie_groups_cookie_string(request, cookie_groups):
    """
    Tag returns decline cookie string suitable to use in javascript.
    """
    cookie_dic = get_cookie_dict_from_request(request)
    for cookie_group in cookie_groups:
        cookie_dic[cookie_group.varname] = settings.COOKIE_CONSENT_DECLINE
    return get_cookie_string(cookie_dic)
 def process_response(self, request, response):
     if not is_cookie_consent_enabled(request):
         return response
     cookie_dic = get_cookie_dict_from_request(request)
     for cookie_group in all_cookie_groups().values():
         if not cookie_group.is_deletable:
             continue
         group_version = cookie_dic.get(cookie_group.varname, None)
         for cookie in cookie_group.cookie_set.all():
             if cookie.name not in request.COOKIES:
                 continue
             if group_version == settings.COOKIE_CONSENT_DECLINE:
                 response.delete_cookie(smart_str(cookie.name),
                                        cookie.path, cookie.domain)
             if group_version < cookie.get_version():
                 if not settings.COOKIE_CONSENT_OPT_OUT:
                     response.delete_cookie(smart_str(cookie.name),
                                            cookie.path, cookie.domain)
     return response