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_accepted_cookies(request): """ Returns all accepted cookies. """ cookie_dic = get_cookie_dict_from_request(request) accepted_cookies = [] for cookie_group in all_cookie_groups().values(): version = cookie_dic.get(cookie_group.varname, None) if not version or version == settings.COOKIE_CONSENT_DECLINE: continue for cookie in cookie_group.cookie_set.all(): if version >= cookie.get_version(): accepted_cookies.append(cookie) return accepted_cookies
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
def get_cookie_groups(varname=None): if not varname: return all_cookie_groups().values() keys = varname.split(",") return [g for k, g in all_cookie_groups().items() if k in keys]