diff --git a/library/django_utils/django_secret_key.py b/library/django_utils/django_secret_key.py
index bf5d90c2c..5a61506a2 100644
--- a/library/django_utils/django_secret_key.py
+++ b/library/django_utils/django_secret_key.py
@@ -1,31 +1,13 @@
import os
-import random
-from base64 import urlsafe_b64encode as b64encode
-random.seed()
-
-
-def generate_key(max_length, seed_length):
- """
- Generate a Base64-encoded 'random' key by hashing the data.
- data is a tuple of seeding values. Pass arbitrary encoder and
- digester for specific hashing and formatting of keys
-
- From: https://gist.github.com/airtonix/6204802
-
- """
- PATTERN = "%%0%dX"
- JUNK_LEN = 1024
- junk = (PATTERN % (JUNK_LEN * 2)) % random.getrandbits(JUNK_LEN * seed_length)
- key = str(junk).encode()
- return b64encode(key)[:max_length]
+from django.core.management.utils import get_random_secret_key
def get_or_create_django_secret_key(key_dir):
key_filename = os.path.join(key_dir, "django_secret_key.txt")
if not os.path.exists(key_filename):
- secret_key = generate_key(50, 128)
- with open(key_filename, "wb") as f:
+ secret_key = get_random_secret_key()
+ with open(key_filename, "w", encoding="utf-8") as f:
f.write(secret_key)
else:
with open(key_filename, encoding="utf-8") as f:
diff --git a/library/utils/html_utils.py b/library/utils/html_utils.py
index e49530dc2..939fab618 100644
--- a/library/utils/html_utils.py
+++ b/library/utils/html_utils.py
@@ -1,10 +1,9 @@
import re
import uuid
-from html import escape
from typing import Optional
from bs4 import BeautifulSoup
-from django.utils.safestring import SafeString
+from django.utils.html import format_html
def html_id_safe(text: str) -> str:
@@ -86,10 +85,9 @@ def __init__(self, icon: str, tooltip: Optional[str] = None):
self.tooltip = tooltip
def __str__(self):
- title = ""
- if tooltip := self.tooltip:
- title = f'title="{escape(tooltip)}"'
- return SafeString(f'')
+ if self.tooltip:
+ return format_html('', self.icon, self.tooltip)
+ return format_html('', self.icon)
def as_json(self) -> dict:
return {