diff options
| author | 2022-01-27 10:16:52 +0100 | |
|---|---|---|
| committer | 2022-01-27 10:16:52 +0100 | |
| commit | 4ee8d527a2cf0ac7e4fd977ffd29e560b3cd48cb (patch) | |
| tree | 86037770cbcd15e8055f8469166d7139dbbf8d53 /pydis_site | |
| parent | Fix broken yaml in kivy.yaml. (diff) | |
Greatly simplify the backend.
Here we're getting rid of all filtering and search functionality
on the backend. We'll be handling this on the client-side from now on.
Diffstat (limited to 'pydis_site')
| -rw-r--r-- | pydis_site/apps/resources/resource_search.py | 59 | ||||
| -rw-r--r-- | pydis_site/apps/resources/tests/test_views.py | 13 | ||||
| -rw-r--r-- | pydis_site/apps/resources/urls.py | 3 | ||||
| -rw-r--r-- | pydis_site/apps/resources/views/__init__.py | 5 | ||||
| -rw-r--r-- | pydis_site/apps/resources/views/resources_list.py | 18 | ||||
| -rw-r--r-- | pydis_site/templates/resources/resources_list.html | 52 | 
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 %} | 
