aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/resources/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site/apps/resources/utils.py')
-rw-r--r--pydis_site/apps/resources/utils.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/pydis_site/apps/resources/utils.py b/pydis_site/apps/resources/utils.py
index 623dd7b6..8454451a 100644
--- a/pydis_site/apps/resources/utils.py
+++ b/pydis_site/apps/resources/utils.py
@@ -3,6 +3,7 @@ from collections import defaultdict
from functools import reduce
from operator import and_, or_
from pathlib import Path
+from types import MappingProxyType
import yaml
from django.conf import settings
@@ -16,10 +17,12 @@ Resource = dict[str, t.Union[str, list[dict[str, str]], dict[str, list[str]]]]
RESOURCES_PATH = Path(settings.BASE_DIR, "pydis_site", "apps", "resources", "resources")
-RESOURCES: dict[str, Resource] = {path.stem: yaml.safe_load(path.read_text()) for path
- in RESOURCES_PATH.rglob("*.yaml")}
+RESOURCES: MappingProxyType[str, Resource] = MappingProxyType({
+ path.stem: yaml.safe_load(path.read_text())
+ for path in RESOURCES_PATH.rglob("*.yaml")
+})
-RESOURCE_TABLE = {category: defaultdict(set) for category in (
+_resource_table = {category: defaultdict(set) for category in (
"topics",
"payment_tiers",
"complexity",
@@ -29,7 +32,13 @@ RESOURCE_TABLE = {category: defaultdict(set) for category in (
for name, resource in RESOURCES.items():
for category, tags in resource['tags'].items():
for tag in tags:
- RESOURCE_TABLE[category][_transform_name(tag)].add(name)
+ _resource_table[category][_transform_name(tag)].add(name)
+
+# Freeze the resources table
+RESOURCE_TABLE = MappingProxyType({
+ category: MappingProxyType(d)
+ for category, d in _resource_table.items()
+})
def get_resources_from_search(search_categories: dict[str, set[str]]) -> list[Resource]: