diff --git a/app.py b/app.py index b473719..377133e 100644 --- a/app.py +++ b/app.py @@ -9,7 +9,8 @@ from flask import render_template from werkzeug.exceptions import HTTPException from website.content import get_projects, get_tools, sanitize_input_tags, load_content_items, get_content, \ - get_applets, get_projects_languages, get_projects_by_languages + get_applets, get_projects_languages, get_projects_by_languages, get_sorted_tools_by_tags, \ + get_sorted_projects_by_tags from website.contributors import reload_contributors_data from website.domains import ALLOWED_DOMAINS from website.l10n.utils import get_user_lang, localize, reload_strings, l10n_url_abs, l10n_url_switch, DEFAULT_LANG @@ -119,9 +120,11 @@ def inject_processors(): get_applets=get_applets, # get_articles=get_articles, get_projects=get_projects, - get_projects_by_languages=get_projects_by_languages, - get_projects_languages=get_projects_languages, + # get_projects_by_languages=get_projects_by_languages, + # get_projects_languages=get_projects_languages, get_tools=get_tools, + get_sorted_projects_by_tags=get_sorted_projects_by_tags, + get_sorted_tools_by_tags=get_sorted_tools_by_tags, # Renderers render_button=render_button, diff --git a/data/projects/circuitpython-ebyte-e32.yml b/data/projects/circuitpython-ebyte-e32.yml index d1e97c6..8da6d3a 100644 --- a/data/projects/circuitpython-ebyte-e32.yml +++ b/data/projects/circuitpython-ebyte-e32.yml @@ -16,7 +16,7 @@ projects: title_key: "meta.title" description_key: "meta.description" index: - priority: 105 + priority: 3000 enable: true title_key: "meta.title" preamble_key: "meta.description" diff --git a/data/projects/docker-mini-cctv-nvr.yml b/data/projects/docker-mini-cctv-nvr.yml index 553dca3..35f8642 100644 --- a/data/projects/docker-mini-cctv-nvr.yml +++ b/data/projects/docker-mini-cctv-nvr.yml @@ -16,7 +16,7 @@ projects: title_key: "meta.title" description_key: "meta.description" index: - priority: 105 + priority: 1000 enable: true title_key: "meta.title" preamble_key: "meta.description" diff --git a/data/projects/lscom-cli-dotnet.yml b/data/projects/lscom-cli-dotnet.yml index 0b49bca..f618cd4 100644 --- a/data/projects/lscom-cli-dotnet.yml +++ b/data/projects/lscom-cli-dotnet.yml @@ -16,7 +16,7 @@ projects: title_key: "meta.title" description_key: "meta.description" index: - priority: 105 + priority: 2000 enable: true title_key: "meta.title" preamble_key: "meta.description" diff --git a/data/sidebar.yml b/data/sidebar.yml index 3b2357a..b840e83 100644 --- a/data/sidebar.yml +++ b/data/sidebar.yml @@ -14,29 +14,35 @@ # #- -- title_key: text.applications - abs_href: "/content/?tags=application;web" - icon: fad fa-browser - active_id: application +- title_key: text.projects + abs_href: "/content/?tags=" + icon: fad fa-briefcase + active_id: projects has_new_until_utc: 0 -- title_key: text.libraries - abs_href: "/content/?tags=library" - icon: fad fa-puzzle-piece - active_id: library - has_new_until_utc: 0 +#- title_key: text.applications +# abs_href: "/content/?tags=application;web" +# icon: fad fa-browser +# active_id: application +# has_new_until_utc: 0 +# +#- title_key: text.libraries +# abs_href: "/content/?tags=library" +# icon: fad fa-puzzle-piece +# active_id: library +# has_new_until_utc: 0 +# +#- title_key: text.electronics +# abs_href: "/content/?tags=electronic" +# icon: fad fa-microchip +# active_id: electronic +# has_new_until_utc: 0 -- title_key: text.electronics - abs_href: "/content/?tags=electronic" - icon: fad fa-microchip - active_id: electronic - has_new_until_utc: 0 - -- title_key: text.experiments - abs_href: "/content/?tags=experiments" - icon: fad fa-flask-vial - active_id: electronic - has_new_until_utc: 0 +#- title_key: text.experiments +# abs_href: "/content/?tags=experiments" +# icon: fad fa-flask-vial +# active_id: electronic +# has_new_until_utc: 0 - title_key: text.tools abs_href: "/tools" diff --git a/data/tools/excel-password-remover.yml b/data/tools/excel-password-remover.yml index 2af196a..13c9874 100644 --- a/data/tools/excel-password-remover.yml +++ b/data/tools/excel-password-remover.yml @@ -17,7 +17,7 @@ tools: title_key: "meta.title" description_key: "meta.description" index: - priority: 100 + priority: 2000 enable: true title_key: "meta.title" preamble_key: "meta.description" diff --git a/data/tools/iban-generator.yml b/data/tools/iban-generator.yml index aaa0e28..c1f0342 100644 --- a/data/tools/iban-generator.yml +++ b/data/tools/iban-generator.yml @@ -17,7 +17,7 @@ tools: title_key: "meta.title" description_key: "meta.description" index: - priority: 100 + priority: 3000 enable: true title_key: "meta.title" preamble_key: "meta.description" diff --git a/data/tools/uuid-generator.yml b/data/tools/uuid-generator.yml index 5fc7567..3c96825 100644 --- a/data/tools/uuid-generator.yml +++ b/data/tools/uuid-generator.yml @@ -17,7 +17,7 @@ tools: title_key: "meta.title" description_key: "meta.description" index: - priority: 100 + priority: 1000 enable: true title_key: "meta.title" preamble_key: "meta.description" diff --git a/templates/pages/project_index.jinja b/templates/pages/project_index.jinja index d2cb261..5fe8bab 100644 --- a/templates/pages/project_index.jinja +++ b/templates/pages/project_index.jinja @@ -14,21 +14,21 @@ {% block content_listing %} - {% for project_id, project_data in get_projects().items() %} + {% for project_data in get_sorted_projects_by_tags(requested_tags) %}
- +
TODO

- {{ l10n(project_data.metadata.index.title_key, project_id, user_lang) }} + {{ l10n(project_data.metadata.index.title_key, project_data.id, user_lang) }}

-

{{ l10n(project_data.metadata.index.preamble_key, project_id, user_lang) }}

+

{{ l10n(project_data.metadata.index.preamble_key, project_data.id, user_lang) }}

diff --git a/templates/pages/tools_index.jinja b/templates/pages/tools_index.jinja index 8736a1d..7817897 100644 --- a/templates/pages/tools_index.jinja +++ b/templates/pages/tools_index.jinja @@ -14,20 +14,20 @@ {% block content_listing %} - {% for tool_id, tool_data in get_tools().items() %} + {% for tool_data in get_sorted_tools_by_tags(requested_tags) %}
- +
TODO

- {{ l10n(tool_data.metadata.index.title_key, tool_id, user_lang) }} + {{ l10n(tool_data.metadata.index.title_key, tool_data.id, user_lang) }}

-

{{ l10n(tool_data.metadata.index.preamble_key, tool_id, user_lang) }}

+

{{ l10n(tool_data.metadata.index.preamble_key, tool_data.id, user_lang) }}

diff --git a/website/content/__init__.py b/website/content/__init__.py index 00c15a9..ec64cd3 100644 --- a/website/content/__init__.py +++ b/website/content/__init__.py @@ -25,12 +25,17 @@ def get_projects() -> LockedDict[str, ContentProject]: return __CONTENT.projects -def get_projects_by_tags(tags: list[str]) -> dict[Any, ContentProject]: - project_obj: ContentProject - return { - project_key: project_value for project_key, project_value in __CONTENT.projects.items() - if any(tag in project_value.metadata.general.tags for tag in tags) - } +def get_sorted_projects_by_tags(tags: Optional[list[str]]) -> list[ContentProject]: + if tags is None: + return sorted(__CONTENT.projects.values(), key=lambda x: x.metadata.index.priority, reverse=True) + elif len(tags) == 0: + return sorted(__CONTENT.projects.values(), key=lambda x: x.metadata.index.priority, reverse=True) + else: + returned_list = [ + x for x in __CONTENT.projects.values() + if any(tag in x.metadata.general.tags for tag in tags) + ] + return sorted(returned_list, key=lambda x: x.metadata.index.priority, reverse=True) def get_projects_by_languages(languages: list[str]) -> dict[Any, ContentProject]: @@ -49,12 +54,17 @@ def get_tools() -> LockedDict[str, ContentTool]: return __CONTENT.tools -def get_tools_by_tags(tags: list[str]) -> dict[Any, ContentProject]: - tool_obj: ContentTool - return { - tool_key: tool_value for tool_key, tool_value in __CONTENT.tools.items() - if any(tag in tool_value.metadata.general.tags for tag in tags) - } +def get_sorted_tools_by_tags(tags: Optional[list[str]]) -> list[ContentProject]: + if tags is None: + return sorted(__CONTENT.tools.values(), key=lambda x: x.metadata.index.priority, reverse=True) + elif len(tags) == 0: + return sorted(__CONTENT.tools.values(), key=lambda x: x.metadata.index.priority, reverse=True) + else: + returned_list = [ + x for x in __CONTENT.tools.values() + if any(tag in x.metadata.general.tags for tag in tags) + ] + return sorted(returned_list, key=lambda x: x.metadata.index.priority, reverse=True) def sanitize_input_tags(input_tags: str) -> list[str]: @@ -108,30 +118,7 @@ def load_content_items() -> None: __CONTENT.projects[_project.id] = _project #print(_project) - """for project_item in os.listdir(os.path.join(os.getcwd(), "data/projects")): - project_item_path = os.path.join(os.getcwd(), "data/projects/", project_item) - if not os.path.isfile(project_item_path) or project_item.startswith("."): - continue - - project_id = Path(project_item_path).stem - project_page_path = os.path.join(os.getcwd(), f"templates/projects/{project_id}.jinja") - - if not all(os.path.isfile(project_file) for project_file in - [project_item_path, project_page_path]): - print(f"Unable to load project '{project_item}' due to missing files !") - continue - - try: - __CONTENT_PROJECTS[project_id] = ContentProject( - id=project_id, - metadata=ContentMetadata(**yaml.safe_load(open(project_item_path))), - # strings=json.load(open(project_strings_path)) # Deprecated - ) - print(f"Loaded project '{project_id}'") - except Exception as e: - print(f"Unable to load project '{project_id}' due to an exception !") - print(e)""" - + # Loading tools definition files for tools_file in os.listdir(os.path.join(os.getcwd(), "data/tools")): tools_file_path = os.path.join(os.getcwd(), "data/tools", tools_file) if not os.path.isfile(tools_file_path) or tools_file.startswith("."):