Update
Some checks failed
DevPlace CI / test (push) Failing after 5m16s

This commit is contained in:
retoor 2026-05-23 09:00:52 +02:00
parent ccc0ee4d61
commit cc703e3a5d
3 changed files with 23 additions and 2 deletions

View File

@ -57,6 +57,7 @@ def init_db():
_index(db, "follows", "idx_follows_following", ["following_uid"])
_index(db, "password_resets", "idx_password_resets_token", ["token"])
_index(db, "gists", "idx_gists_user_uid", ["user_uid"])
_index(db, "gists", "idx_gists_language", ["language"])
_index(db, "attachments", "idx_attachments_resource", ["resource_type", "resource_uid"])
_index(db, "attachments", "idx_attachments_target", ["target_type", "target_uid"])
@ -319,6 +320,23 @@ def get_site_stats() -> dict:
return stats
_gist_languages_cache = TTLCache(ttl=60)
def get_gist_languages() -> set[str]:
cached = _gist_languages_cache.get("codes")
if cached is not None:
return cached
codes: set[str] = set()
if "gists" in db.tables:
for row in db.query("SELECT DISTINCT language FROM gists"):
language = row.get("language")
if language:
codes.add(language)
_gist_languages_cache.set("codes", codes)
return codes
def resolve_by_slug(table, slug):
entry = table.find_one(slug=slug)
if not entry:

View File

@ -4,7 +4,7 @@ from datetime import datetime, timezone
from fastapi import APIRouter, Request, HTTPException, Form
from devplacepy.models import GistForm, GistEditForm
from fastapi.responses import HTMLResponse, RedirectResponse
from devplacepy.database import get_table, get_users_by_uids
from devplacepy.database import get_table, get_users_by_uids, get_gist_languages
from devplacepy.content import load_detail, edit_content_item, delete_content_item, enrich_items
from devplacepy.templating import templates
from devplacepy.utils import generate_uid, get_current_user, require_user, make_combined_slug, create_mention_notifications
@ -65,6 +65,7 @@ async def gists_page(request: Request, language: str = None, user_uid: str = Non
"total_count": total_count,
"current_language": language,
"languages": LANGUAGES,
"gist_language_codes": get_gist_languages(),
})

View File

@ -15,15 +15,17 @@
<span class="icon">&#x1F4CB;</span>All
</a>
{% for code, name in languages %}
{% if code != 'plaintext' %}
{% if code != 'plaintext' and code in gist_language_codes %}
<a href="/gists?language={{ code }}" class="sidebar-link {% if current_language == code %}active{% endif %}">
<span class="icon">&#x1F4DD;</span>{{ name }}
</a>
{% endif %}
{% endfor %}
{% if 'plaintext' in gist_language_codes %}
<a href="/gists?language=plaintext" class="sidebar-link {% if current_language == 'plaintext' %}active{% endif %}">
<span class="icon">&#x1F4DD;</span>Plain Text
</a>
{% endif %}
</div>
{% if user %}