aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site')
-rw-r--r--pydis_site/apps/resources/resource_search.py59
-rw-r--r--pydis_site/apps/resources/tests/test_views.py13
-rw-r--r--pydis_site/apps/resources/urls.py3
-rw-r--r--pydis_site/apps/resources/views/__init__.py5
-rw-r--r--pydis_site/apps/resources/views/resources_list.py18
-rw-r--r--pydis_site/templates/resources/resources_list.html52
6 files changed, 3 insertions, 147 deletions
diff --git a/pydis_site/apps/resources/resource_search.py b/pydis_site/apps/resources/resource_search.py
deleted file mode 100644
index 1e23089b..00000000
--- a/pydis_site/apps/resources/resource_search.py
+++ /dev/null
@@ -1,59 +0,0 @@
-import typing as t
-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
-
-
-def _transform_name(resource_name: str) -> str:
- return resource_name.title().replace('And', 'and', -1)
-
-
-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: 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 (
- "topics",
- "payment_tiers",
- "complexity",
- "type"
-)}
-
-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)
-
-# Freeze the resources table
-RESOURCE_TABLE = MappingProxyType({
- category: MappingProxyType(d)
- for category, d in _resource_table.items()
-})
-
-ALL_RESOURCE_NAMES = frozenset(RESOURCES.keys())
-
-
-def get_resources_from_search(search_categories: dict[str, set[str]]) -> list[Resource]:
- """Returns a list of all resources that match the given search terms."""
- resource_names_that_match = reduce(
- and_,
- (
- reduce(
- or_,
- (RESOURCE_TABLE[category][label] for label in labels),
- set()
- ) or ALL_RESOURCE_NAMES
- for category, labels in search_categories.items()
- )
- )
- return [RESOURCES[name_] for name_ in resource_names_that_match]
diff --git a/pydis_site/apps/resources/tests/test_views.py b/pydis_site/apps/resources/tests/test_views.py
index 2e9efc1d..f96a04b0 100644
--- a/pydis_site/apps/resources/tests/test_views.py
+++ b/pydis_site/apps/resources/tests/test_views.py
@@ -16,16 +16,3 @@ class TestResourcesView(TestCase):
url = reverse("resources:index")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
-
-
-class TestResourcesListView(TestCase):
- def test_valid_resource_list_200(self):
- """Check does site return code 200 when visiting valid resource list."""
- url = reverse("resources:resources")
- response = self.client.get(url)
- self.assertEqual(response.status_code, 200)
-
- @patch("pydis_site.apps.resources.resource_search.RESOURCES_PATH", TESTING_RESOURCES_PATH)
- def test_filter_resource_list(self):
- """TODO: Check that we can correctly filter resources with GET parameters."""
- pass
diff --git a/pydis_site/apps/resources/urls.py b/pydis_site/apps/resources/urls.py
index c8d441df..3db26417 100644
--- a/pydis_site/apps/resources/urls.py
+++ b/pydis_site/apps/resources/urls.py
@@ -4,6 +4,5 @@ from pydis_site.apps.resources import views
app_name = "resources"
urlpatterns = [
- path("", views.resources.resource_view, name="index"),
- path("list/", views.ResourcesListView.as_view(), name="resources")
+ path("", views.resources.ResourceView.as_view(), name="index"),
]
diff --git a/pydis_site/apps/resources/views/__init__.py b/pydis_site/apps/resources/views/__init__.py
index c89071c5..986f3e10 100644
--- a/pydis_site/apps/resources/views/__init__.py
+++ b/pydis_site/apps/resources/views/__init__.py
@@ -1,4 +1,3 @@
-from .resources import resource_view
-from .resources_list import ResourcesListView
+from .resources import ResourceView
-__all__ = ["resource_view", "ResourcesListView"]
+__all__ = ["ResourceView"]
diff --git a/pydis_site/apps/resources/views/resources_list.py b/pydis_site/apps/resources/views/resources_list.py
deleted file mode 100644
index 30498c8f..00000000
--- a/pydis_site/apps/resources/views/resources_list.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from typing import Any, Dict
-
-from django.views.generic import TemplateView
-
-from pydis_site.apps.resources.resource_search import RESOURCES
-
-
-class ResourcesListView(TemplateView):
- """Shows specific resources list."""
-
- template_name = "resources/resources_list.html"
-
- def get_context_data(self, **kwargs) -> Dict[str, Any]:
- """Add resources and subcategories data into context."""
- context = super().get_context_data(**kwargs)
- context["resources"] = RESOURCES
-
- return context
diff --git a/pydis_site/templates/resources/resources_list.html b/pydis_site/templates/resources/resources_list.html
deleted file mode 100644
index e2be3cb7..00000000
--- a/pydis_site/templates/resources/resources_list.html
+++ /dev/null
@@ -1,52 +0,0 @@
-{% extends "base/base.html" %}
-{% load as_icon %}
-{% load static %}
-
-{% block title %}{{ category_info.name }}{% endblock %}
-{% block head %}
- <link rel="stylesheet" href="{% static "css/resources/resources_list.css" %}">
-{% endblock %}
-
-{% block content %}
- {% include "base/navbar.html" %}
-
- <section class="section breadcrumb-section">
- <div class="container">
- <nav class="breadcrumb is-pulled-left" aria-label="breadcrumbs">
- <ul>
- <li><a href="{% url "resources:index" %}">Resources</a></li>
- <li class="is-active"><a href="#">{{ category_info.name }}</a></li>
- </ul>
- </nav>
- </div>
- </section>
-
- <section class="section">
- <div class="container">
- <div class="content">
- <h1>{{ category_info.name }}</h1>
- <p>{{ category_info.description|safe }}</p>
- <div>
- {% for resource in resources|dictsort:"position" %}
- {% include "resources/resource_box.html" %}
- {% endfor %}
-
- {% for subcategory in subcategories|dictsort:"category_info.position" %}
- <h2 id="{{ subcategory.category_info.raw_name }}">
- <a href="{% url "resources:resources" category=category_info.raw_name %}#{{ subcategory.category_info.raw_name }}">
- {{ subcategory.category_info.name }}
- </a>
- </h2>
- <p>{{ subcategory.category_info.description|safe }}</p>
-
- {% for resource in subcategory.resources|dictsort:"position" %}
- {% with category_info=subcategory.category_info %}
- {% include "resources/resource_box.html" %}
- {% endwith %}
- {% endfor %}
- {% endfor %}
- </div>
- </div>
- </div>
- </section>
-{% endblock %}