3 Commits
Author SHA1 Message Date
ponas 1853e6c470 web: fix dupe year in event calendar view
web / ci (push) Successful in 1m2s
2026-08-06 16:48:39 +02:00
ponas 54f45820ad web: add gitea workflow
web / ci (push) Successful in 2m11s
2026-08-04 03:53:50 +02:00
ponas 031d61e1fe dnscms: add gitea workflow
dnscms / ci (push) Successful in 1m22s
2026-08-04 03:51:54 +02:00
4 changed files with 64 additions and 8 deletions
+27
View File
@@ -0,0 +1,27 @@
name: dnscms
on:
push:
paths:
- "dnscms/**"
- ".gitea/workflows/dnscms.yaml"
pull_request:
paths:
- "dnscms/**"
- ".gitea/workflows/dnscms.yaml"
defaults:
run:
working-directory: dnscms
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v7
- run: uv sync --locked
- run: uv run ruff check .
- run: uv run ruff format --check .
- run: uv run manage.py makemigrations --check --dry-run --settings=dnscms.settings.test
- run: uv run pytest
+29
View File
@@ -0,0 +1,29 @@
name: web
on:
push:
paths:
- "web/**"
- ".gitea/workflows/web.yaml"
pull_request:
paths:
- "web/**"
- ".gitea/workflows/web.yaml"
defaults:
run:
working-directory: web
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
cache-dependency-path: web/package-lock.json
- run: npm ci
- run: npx tsc --noEmit
- run: npm test
+1 -1
View File
@@ -33,11 +33,11 @@ build-backend = "hatchling.build"
[tool.ruff] [tool.ruff]
line-length = 99 line-length = 99
exclude = ["**/migrations/*.py"]
[tool.ruff.lint] [tool.ruff.lint]
select = ["F", "E", "W", "Q", "UP", "DJ"] select = ["F", "E", "W", "Q", "UP", "DJ"]
ignore = [] ignore = []
exclude = ["**/migrations/*.py"]
[tool.pytest.ini_options] [tool.pytest.ini_options]
DJANGO_SETTINGS_MODULE = "dnscms.settings.test" DJANGO_SETTINGS_MODULE = "dnscms.settings.test"
+7 -7
View File
@@ -304,14 +304,14 @@ const CalendarWeek = ({
); );
}; };
function maybeYear(yearMonthString: string) { function srOnlyYear(yearMonthString: string) {
// formatYearMonth only shows the year for non-current years; always expose it to screen readers
const yearMonth = new Date(yearMonthString); const yearMonth = new Date(yearMonthString);
const now = new Date(); const isCurrentYear = yearMonth.getFullYear() === new Date().getFullYear();
const isCurrentYear = yearMonth.getFullYear() == now.getFullYear(); if (!isCurrentYear) {
if (isCurrentYear) { return null;
return <span className="sr-only"> {yearMonth.getFullYear()}</span>;
} }
return ` ${yearMonth.getFullYear()}`; return <span className="sr-only"> {yearMonth.getFullYear()}</span>;
} }
const EventCalendar = ({ events }: { events: EventOverviewItemFragment[] }) => { const EventCalendar = ({ events }: { events: EventOverviewItemFragment[] }) => {
@@ -354,7 +354,7 @@ const EventCalendar = ({ events }: { events: EventOverviewItemFragment[] }) => {
> >
<h2 onClick={() => toggleYearMonth(yearMonth)}> <h2 onClick={() => toggleYearMonth(yearMonth)}>
{formatYearMonth(yearMonth)} {formatYearMonth(yearMonth)}
{maybeYear(yearMonth)}{" "} {srOnlyYear(yearMonth)}{" "}
<span className={styles.eventCounter}>({eventCount})</span> <span className={styles.eventCounter}>({eventCount})</span>
</h2> </h2>
{eventCount === 0 && ( {eventCount === 0 && (