Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5138cc9
Add page title to export of page based statistics
MizukiTemma Jul 9, 2026
b6c4e4f
Merge pull request #4423 from digitalfabrik/page_based_statistics_exp…
MizukiTemma Jul 21, 2026
ae3bfd6
Add more logger message to import_external_news
MizukiTemma Jul 21, 2026
309d5e0
inherit link ignore flag on new content objects within region
jonbulz Jul 23, 2026
b10a45f
scope link.ignore inheritance to non-archived links only
jonbulz Jul 23, 2026
e99d609
Bugfix: select all action in feedback outside checkbox
lunars97 Jul 23, 2026
b8386d7
Fetch tunews if cache is empty
svenseeberg Jul 24, 2026
6f7c4bb
flake.nix: update inputs and scripts
charludo Jul 1, 2026
c721c0d
Merge pull request #4405 from digitalfabrik/ch/nix-flake-update
MizukiTemma Jul 24, 2026
ad66570
Improve missing Zammad ticket error handling
svenseeberg Jun 29, 2026
49181ce
Merge pull request #4395 from digitalfabrik/feat/improve-chat-error-h…
svenseeberg Jul 27, 2026
460595e
Merge branch 'main' into develop
deliverino[bot] Jul 27, 2026
5d37c40
Bugfix: event filter location is greyed out (#4391)
lunars97 Jul 28, 2026
0e6b8f9
Merge pull request #4453 from digitalfabrik/fix/missing-news-cache
MizukiTemma Jul 28, 2026
cd6a903
Merge pull request #4452 from digitalfabrik/4237-fix-select-all-in-fe…
lunars97 Jul 28, 2026
2ef2835
Bugfix: Fix logout button being unresponsive (#4454)
lunars97 Jul 28, 2026
09a49fe
use get_link_query in inherit_ignore_within_region
jonbulz Jul 28, 2026
826730c
ruff
jonbulz Jul 28, 2026
7f0eabd
Bump CI Python & PSQL versions
svenseeberg May 26, 2026
6836703
Adopt latest change
MizukiTemma Jul 29, 2026
7412701
Merge pull request #4424 from digitalfabrik/update/dependencies
MizukiTemma Jul 29, 2026
74abc8f
Fix: phone numbers of contact cards appear in link list
MizukiTemma Jul 13, 2026
faecfbd
Merge pull request #4432 from digitalfabrik/bug/phone_numbers_of_cont…
MizukiTemma Jul 29, 2026
71c81fa
Merge pull request #4451 from digitalfabrik/inherit-link-ignore-withi…
jonbulz Aug 3, 2026
9692dcd
Fix checkboxes in TinyMCE
PeterNerlich Aug 4, 2026
60999f7
remove release note as bug not already in prod
PeterNerlich Aug 4, 2026
d26cb61
4203: Remove SUMM AI code (#4478)
bahaaTuffaha Aug 5, 2026
d46aa51
Improve explanations for page based statistics
MizukiTemma Jul 30, 2026
3636f66
Merge pull request #4472 from digitalfabrik/page_based_statistics_exp…
MizukiTemma Aug 5, 2026
84abbf0
Merge pull request #4481 from digitalfabrik/bug/fix_checkbox_tinymce
PeterNerlich Aug 10, 2026
d5b7d12
Hide the explanation sentences
MizukiTemma Aug 10, 2026
7374711
Merge pull request #4496 from digitalfabrik/follow_up/hide_explanatio…
MizukiTemma Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 23 additions & 20 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ orbs:
jobs:
pip-install:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand Down Expand Up @@ -36,7 +36,7 @@ jobs:
- integreat_cms.egg-info
djlint:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand All @@ -50,7 +50,7 @@ jobs:
command: djlint --check --lint integreat_cms
ruff:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand All @@ -66,7 +66,7 @@ jobs:
ruff format --check
mypy:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand All @@ -77,7 +77,7 @@ jobs:
command: ./tools/mypy.sh
check-release-notes:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand All @@ -97,7 +97,7 @@ jobs:
command: ./tools/make_release_notes.sh --format=raw --all
check-translations:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand All @@ -111,7 +111,7 @@ jobs:
command: ./tools/check_translations.sh
compile-translations:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand Down Expand Up @@ -222,8 +222,8 @@ jobs:
- integreat_cms/webpack-stats.json
check-migrations:
docker:
- image: cimg/python:3.11.7
- image: cimg/postgres:14.1
- image: cimg/python:3.13.11
- image: cimg/postgres:17.10
environment:
POSTGRES_USER: integreat
POSTGRES_DB: integreat
Expand All @@ -244,8 +244,8 @@ jobs:
command: integreat-cms-cli makemigrations cms --check --settings=integreat_cms.core.circleci_settings
test:
docker:
- image: cimg/python:3.11.7
- image: cimg/postgres:14.1
- image: cimg/python:3.13.11
- image: cimg/postgres:17.10
environment:
POSTGRES_USER: integreat
POSTGRES_DB: integreat
Expand All @@ -267,7 +267,10 @@ jobs:
command: integreat-cms-cli migrate --settings=integreat_cms.core.circleci_settings
- run:
name: Run tests
command: pytest --circleci-parallelize --disable-warnings --cov=integreat_cms --cov-report=xml:coverage.xml --junitxml=test-results/junit.xml --ds=integreat_cms.core.circleci_settings
command: |
circleci tests glob "tests/**/test_*.py" "tests/**/*_test.py" \
| circleci tests split --split-by=timings --timings-type=filename \
| xargs pytest --disable-warnings --cov=integreat_cms --cov-report=xml:coverage.xml --junitxml=test-results/junit.xml -o junit_family=xunit1 --ds=integreat_cms.core.circleci_settings
- store_test_results:
path: test-results
- store_artifacts:
Expand All @@ -293,7 +296,7 @@ jobs:
path: integreat-cms.log
build-package:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand All @@ -314,7 +317,7 @@ jobs:
- dist
publish-package:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand All @@ -328,7 +331,7 @@ jobs:
command: twine upload --non-interactive ./dist/integreat_cms-*.tar.gz
build-documentation:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: large
steps:
- checkout
Expand All @@ -354,7 +357,7 @@ jobs:
- docs/dist
deploy-documentation:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
environment:
BRANCH: gh-pages
Expand Down Expand Up @@ -398,7 +401,7 @@ jobs:
git push origin $BRANCH
bump-dev-version:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: large
steps:
- checkout
Expand Down Expand Up @@ -448,7 +451,7 @@ jobs:
- integreat_cms/_manifest
bump-rc-version:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: large
steps:
- checkout
Expand Down Expand Up @@ -499,7 +502,7 @@ jobs:
- integreat_cms/_manifest
bump-version:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: large
steps:
- checkout
Expand Down Expand Up @@ -579,7 +582,7 @@ jobs:
command: git checkout develop && git merge main --commit --no-edit && git push
create-release:
docker:
- image: cimg/python:3.11.7
- image: cimg/python:3.13.11
resource_class: small
steps:
- checkout
Expand Down
1 change: 0 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
"INTEGREAT_CMS_FCM_KEY": "dummy",
"INTEGREAT_CMS_SECRET_KEY": "dummy",
"INTEGREAT_CMS_BACKGROUND_TASKS_ENABLED": "0",
"INTEGREAT_CMS_SUMM_AI_API_KEY": "dummy",
"INTEGREAT_CMS_LINKCHECK_DISABLE_LISTENERS": "1"
}
}
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.11"
python-version: "3.13"
- if: matrix.language == 'python'
name: Install dependencies with pip
run: pip install -e .[dev-pinned,pinned]
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ webpack-stats.json

# Location file of redis unix socket
.redis_socket_location
.redis.sock
dump.rdb

# Media Library
Expand Down
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,6 @@ Alternatively, you can generate it yourself using the `tools/make_docs.sh` scrip
- [GVZ API](integreat_cms/gvz_api): This app provides wrapper functions around our Gemeindeverzeichnis API to automatically import coordinates and region aliases.
- [Nominatim API](nominatim_api): This app provides wrapper functions around our Nominatim API to automatically import region bounding boxes.
- [Sitemap](integreat_cms/sitemap): This app dynamically generates a sitemap.xml for the webapp.
- [SUMM.AI API](integreat_cms/summ_ai_api): This app provides wrapper functions around the SUMM.AI API for automatic translations into Easy German.
- [XLIFF](integreat_cms/xliff): This app allows (de-)serialization of translations from/to XLIFF (XML Localization Interchange File Format) for standardised exchange with translation agencies.
- [Tests](tests): This app contains all tests to verify integreat-cms works as intended

Expand Down
51 changes: 49 additions & 2 deletions docs/src/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import os
import sys
from datetime import date
from typing import Final, TYPE_CHECKING
from typing import Any, Final, TYPE_CHECKING

from django import VERSION as DJANGO_VERSION_TUPLE

Expand Down Expand Up @@ -289,12 +289,59 @@ def linkcode_resolve(domain: str, info: dict) -> str | None:
# -- Custom patches for autodoc ----------------------------------------------


def patch_improve_class_docstring() -> None:
"""
Guard :func:`sphinxcontrib_django.docstrings.improve_class_docstring` against classes
without ``_meta``: Sphinx 9 also feeds PEP 695 type parameter bounds (like the plain
:class:`django.db.models.Model` bound of ``ShadowInstance[T: Model]``) into the
``autodoc-process-docstring`` event, on which sphinxcontrib-django crashes.
"""
from django.db import models
from sphinxcontrib_django import docstrings

improve_class_docstring = docstrings.improve_class_docstring

def improve_class_docstring_safe(app: Sphinx, cls: type, lines: list[str]) -> None:
if issubclass(cls, models.Model) and not hasattr(cls, "_meta"):
return
improve_class_docstring(app, cls, lines)

docstrings.improve_class_docstring = improve_class_docstring_safe


def fix_treebeard_tree_model_docstring(
_app: Sphinx,
_what: str,
name: str,
_obj: Any,
_options: Any,
lines: list[str],
) -> None:
"""
Fix the malformed RST bullet lists in the docstring of
:meth:`treebeard.models.Node.tree_model` (django-treebeard 5 does not indent
the bullet continuation lines, causing docutils warnings in our strict build).
"""
if name.rpartition(".")[2] != "tree_model":
return
in_bullet = False
for index, line in enumerate(lines):
if line.startswith("* "):
in_bullet = True
elif not line.strip():
in_bullet = False
elif in_bullet and not line.startswith(" "):
lines[index] = f" {line}"


def setup(app: Sphinx) -> None:
"""
Connect to the ``django-configured`` event of :mod:`sphinxcontrib_django` to monkeypatch application.
Apply custom patches and extensions to the Sphinx application.

:param app: The Sphinx application object
"""
patch_improve_class_docstring()
app.connect("autodoc-process-docstring", fix_treebeard_tree_model_docstring)
# Add crossref type for links to the pytest documentation
app.add_crossref_type(
directivename="fixture",
Expand Down
1 change: 0 additions & 1 deletion docs/src/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ Project Architecture / Reference
- :doc:`ref/integreat_cms.matomo_api`: This app provides wrapper functions around the Matomo API, for gathering statistics like those in the region dashboard.
- :doc:`ref/integreat_cms.nominatim_api`: This app provides wrapper functions around our Nominatim API to automatically import region bounding boxes.
- :doc:`ref/integreat_cms.sitemap`: This app dynamically generates a sitemap.xml for the webapp.
- :doc:`ref/integreat_cms.summ_ai_api`: This app provides wrapper functions around the SUMM.AI API for automatic translations into Easy German.
- :doc:`ref/integreat_cms.textlab_api`: This app provides wrapper functions around the Textlab API to evaluate texts and determine their HIX value.
- :doc:`ref/integreat_cms.xliff`: This app allows (de-)serialization of translations from/to XLIFF (XML Localization Interchange File Format) for standardised exchange with translation agencies.

Expand Down
17 changes: 0 additions & 17 deletions docs/src/management-commands.rst
Original file line number Diff line number Diff line change
Expand Up @@ -185,23 +185,6 @@ Search & fix broken internal links in the content::
* ``--commit``: Whether changes should be written to the database


``summ_ai_bulk``
~~~~~~~~~~~~~~~~

Translate an entire region into Easy German via SUMM.AI::

integreat-cms-cli summ_ai_bulk REGION_SLUG USERNAME [--initial]

**Arguments:**

* ``REGION_SLUG``: Translate all pages of the region with slug ``REGION_SLUG``
* ``USERNAME``: Associate any new created translations with ``USERNAME``

**Options:**

* ``--initial``: Whether existing translations should not be updated


``reset_mt_budget``
~~~~~~~~~~~~~~~~~~~~~~

Expand Down
6 changes: 3 additions & 3 deletions docs/src/patches/cms.diff
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
--- docs/src/ref/integreat_cms.cms.rst 2020-07-26 13:38:34.607991151 +0200
+++ docs/src/ref/integreat_cms.cms_patched.rst 2020-07-26 13:38:31.267991240 +0200
@@ -72,5 +72,12 @@
@@ -71,5 +71,12 @@
.. automodule:: integreat_cms.cms.rules
:members:
:undoc-members:
:inherited-members:
:members:
:show-inheritance:
:undoc-members:
+
+ .. autofunction:: is_page_author
+ .. autofunction:: is_page_editor
Expand Down
22 changes: 3 additions & 19 deletions example-configs/integreat-cms.ini
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ ALLOWED_HOSTS =
INTERNAL_URLS =
tuerantuer.org
integreat-app.de
# The wiki page for statistics [optional, defaults to "WIKI_URL/statistics"]
STATISTICS_WIKI_URL = https://wiki.integreat-app.de/statistics


[static-files]
# The directory for static files [required]
Expand Down Expand Up @@ -128,25 +131,6 @@ LINKCHECK_IGNORED_URL_TYPES =
mailto
phone

[summ-ai]
# The URL to our SUMM.AI API [optional, defaults to "https://backend.summ-ai.com/translate/v1/"]
SUMM_AI_API_URL = <your-summ-ai-api-endpoint>
# If you want to use easy german via Summ.AI, set your API auth key here [optional, defaults to None]
SUMM_AI_API_KEY = <your-summ-ai-key>
# Whether real request are made to the SUMM.AI API [optional, defaults to the value of DEBUG]
SUMM_AI_TEST_MODE = False
# The language slug for German [optional, defaults to "de"]
SUMM_AI_GERMAN_LANGUAGE_SLUG = "de"
# The language slug for Easy German [optional, defaults to "de-si"]
SUMM_AI_EASY_GERMAN_LANGUAGE_SLUG = "de-si"
# The separator which is used to split compound words [optional, defaults to "hyphen", must be one of ["hyphen", "interpunct"]
SUMM_AI_SEPARATOR = "hyphen"
# Whether the SUMM.AI translations are initial by default [optional, defaults to True]
SUMM_AI_IS_INITIAL = True
# Slugs of regions that prefer Plain German over Easy German in the management command
SUMM_AI_PLAIN_GERMAN_REGIONS = "augsburg
testregion"

[MT global]
# A percentage of MT soft margin when deciding if the credit limit has been exceeded
MT_SOFT_MARGIN_FRACTION = 0.01
Expand Down
Loading