def wtm_cookie(self): return { "name": "wtm", "value": "|".join([f"{tag_type}:true" for tag_type in Tag.get_types()]), "path": "", "secure": False, }
def scan_cookies(request): # pragma: no cover def chop_microseconds(delta): return delta - timedelta(microseconds=delta.microseconds) try: options = webdriver.ChromeOptions() options.add_argument("headless") browser = webdriver.Chrome(options=options) browser.implicitly_wait(30) browser.get(request.site.root_page.full_url) browser.delete_all_cookies() for tag in Tag.get_types(): browser.add_cookie( { "name": Tag.get_cookie_name(tag), "value": "true", "path": "", "secure": False, } ) browser.get(request.site.root_page.full_url) now = datetime.utcnow() created = 0 updated = 0 for cookie in browser.get_cookies(): expiry = datetime.fromtimestamp(cookie.get("expiry", now)) obj, created = CookieDeclaration.objects.update_or_create( name=cookie.get("name"), domain=cookie.get("domain"), defaults={ "security": CookieDeclaration.INSECURE_COOKIE if cookie.get("httpOnly") else CookieDeclaration.SECURE_COOKIE, "purpose": _("Unknown"), "duration": chop_microseconds(expiry - now), }, ) if created: created = created + 1 else: updated = updated + 1 browser.quit() messages.success( request, _("Created %d declaration(s) and updated %d." % (created, updated)) ) except NotADirectoryError: messages.warning( request, mark_safe( _( "Could not instantiate WebDriver session. Please ensure " "<a href='http://chromedriver.chromium.org/' target='_blank' rel='noopener'>ChromeDriver</a> " "is installed and available in your path." ) ), ) except Exception as e: messages.error(request, e)
def sorted(self): from wagtail_tag_manager.models import Tag order = [*Tag.get_types(), None] return sorted(self, key=lambda x: order.index(x.cookie_type))
def cookie_state(self): return { tag_type: self.consent.get(tag_type, CONSENT_FALSE) != CONSENT_FALSE for tag_type in Tag.get_types() }
def cookie_state(self): return { tag_type: self.cookies.get(Tag.get_cookie_name(tag_type), "false") != "false" for tag_type in Tag.get_types() }