26. Februar 2026

Python 3.9 wird nicht mehr unterstützt

Falls du Juntagrico auf einem eigenen Server installiert hast, aktualisiere auf Python 3.10, 3.11, 3.12, 3.13 oder 3.14 bevor du Juntagrico 2.0 installierst.

Im Juntagrico Hosting kannst du neu die Python Version einstellen für deine Instanz.

Requirements anpassen

Wie üblich, musst du für die Aktualisierung deine requirements.txt anpassen.

juntagrico~=2.0.0

Aktualisiere auch die Versionen aller verwendeten Add-Ons auf eine mit 2.0 kompatible Version.

Django 5.2

Juntagrico 2.0 macht den Sprung zu django 5.2 LTS, und kann damit bis April 2028 sicher genutzt werden.

Die Hauptversion von Juntagrico wird sich künftig an die LTS releases von django richten. Juntagrico 3.0 darf also ab Sommer 2027 erwartet werden und wird mit django 6.2 laufen.

Juntagrico 2.0

Anpassungen in der settings.py

Füge folgendes in den INSTALLED_APPS hinzu:

INSTALLED_APPS = [
    ...,  # hier das Komma nicht vergessen!
    'crispy_bootstrap4',
    'django_select2',
    'djrichtextfield',
]

Entferne `’fontawesomefree’`:

    'fontawesomefree',

Und ersetze django.contrib.admin mit juntagrico.apps.JuntagricoAdminConfig.

Rich-Text

Die Konfiguration vom Rich-Text-Editor wurde konsolidiert. Lies genau, welcher Fall für dich zutrifft.

Füge in jedem Fall diesen Import am Anfang deiner settings.py ein:

from juntagrico import defaults

Falls du zuvor weder DJRICHTEXTFIELD_CONFIG noch MAILER_RICHTEXT_OPTIONS verwendest hast, füge nur diese Zeile hinzu. Irgendwo unterhalb von LANGUAGE_CODE = ...:

DJRICHTEXTFIELD_CONFIG = defaults.richtextfield_config(LANGUAGE_CODE)

Falls du DJRICHTEXTFIELD_CONFIG bereits in deiner settings.py verwendest, ersetze es wie folgt.

Bisher:

DJRICHTEXTFIELD_CONFIG = {
    'js': ['juntagrico/external/tinymce/tinymce.min.js'],
    'init_template': 'djrichtextfield/init/tinymce.js',
    'settings': {
        >>>Deine Einstellungen für Admin<<<
        'language': tinymce_lang(LANGUAGE_CODE)
    }
}

Neu:

DJRICHTEXTFIELD_CONFIG = defaults.richtextfield_config(LANGUAGE_CODE, admin={
    >>>Deine Einstellungen für Admin<<<
})

Falls dir die Standard-Einstellungen reichen, kannst du es auch kürzer halten:

DJRICHTEXTFIELD_CONFIG = defaults.richtextfield_config(LANGUAGE_CODE, use_in_admin=True)

Falls du bisher MAILER_RICHTEXT_OPTIONS als settings hast. ersetze es wie folgt:

Bisher:

MAILER_RICHTEXT_OPTIONS = {
    >>>Deine Einstellungen für Mailer<<<
}

Neu:

DJRICHTEXTFIELD_CONFIG = defaults.richtextfield_config(LANGUAGE_CODE, mailer={
    >>>Deine Einstellungen für Mailer<<<
})

Falls du DJRICHTEXTFIELD_CONFIG und MAILER_RICHTEXT_OPTIONS verwendet hattest, sieht dein neuer Eintrag nun so aus:

DJRICHTEXTFIELD_CONFIG = defaults.richtextfield_config(
    LANGUAGE_CODE,
    admin={
        >>>Deine Einstellungen für Admin<<<
    },
    mailer={
        >>>Deine Einstellungen für Mailer<<<
    },
)


Hier kannst du nachlesen, was diese Einstellungen machen.

Mailer

Füge diese Zeile hinzu:

EMAIL_BACKEND='juntagrico.backends.email.EmailBackend'

Falls du DEFAULT_MAILER = 'juntagrico.util.mailer.batch.Mailer' verwendet hattest, ersetze es mit

EMAIL_BACKEND='juntagrico.backends.email.BatchEmailBackend'

Falls du einen eigenen DEFAULT_MAILER verwendet hattest, ersetze auch diesen. Erweitere dazu die Klasse juntagrico.backends.email.BaseEmailBackend und verwende diese in EMAIL_BACKEND. Wie das geht kannst du beim BatchEmailBackend abschauen.

Mail Templates

Falls du MAIL_TEMPLATE verwendest: Verschiebe dein email template nach templates/mails/email.html und lösche diese Zeile im settings.py.

Hervorgehobene Einsätze

Falls du diese Einstellungen verwendest:

PROMOTED_JOB_TYPES = [...]
PROMOTED_JOB_AMOUNT = 2

Ersetze sie durch:

JOBS_FRONTPAGE = {
    'promoted_types': [...],
    'promoted_count': 2
}

JOBS_FRONTPAGE kann natürlich noch mehr.

Depotlisten

Falls du DEFAULT_DEPOTLIST_GENERATORS verwendest. passe die Funktion an, die du hier eingestellt hast. Neu wird nur context als argument übergeben und nicht mehr *args, **options. Du musst die options nicht mehr überprüfen, das wird schon vorher gemacht. context enthält die Daten für die Depotlistenerzeugung. Du kannst diese erweitern, abändert oder ganz ignorieren und deine eigenen Daten zusammenstellen.

DEFAULT_DEPOTLIST_GENERATORS wird in einer zukünftigen Version entfernt. Nutze stattdessen DEPOT_LISTS um einzustellen welche Listen, wie erstellt werden sollen.

Weitere Anpassungen

Entferne SESSION_SERIALIZER. Neu wird der default JSONSerializer verwendet, weil der PickleSerializer unsicher ist.

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'

Absender von E-mails werden neu als „Name von Solawi“ angegeben.
Falls „von“ als Bindewort für euren Betriebsnamen nicht funktioniert, passe das Setting VOCABULARY['from'] entsprechend an:

VOCABULARY = {    ...,
    'from': '{} von {}',
}

Falls du SUB_OVERVIEW_FORMAT nutzt, ersetze {size} mit {bundle} in format und part_format

Anpassungen in der urls.py

Entferne diese Zeile, falls sie existiert:

path('djrichtextfield/', include('djrichtextfield.urls')),

Neue Berechtigungen

Diese Berechtigungen werden automatisch an alle Benutzer vergeben, die bereits die Berechtigung juntagrico.can_send_mails haben:

  • juntagrico.can_email_all_with_share: Kann E-Mails an alle mit Anteilschein senden
  • juntagrico.can_email_all_with_sub: Kann E-Mails an alle mit Abo senden

Entferne die Berechtigung von Benutzern, die keine solchen Massenmails verschicken müssen.

Wer zuvor die Berechtigung is_area_admin oder is_operations_group hatte, erhält automatisch folgende Berechtigung:

  • juntagrico.can_email_attachments: Kann Anhänge per E-Mail senden

Entferne diese Berechtigungen von Benutzern, die keine Anhänge verschicken müssen.

Modifikationen nachführen

Falls du Templates angepasst hast. Prüfe, ob diese noch funktionieren und passe sie gegebenenfalls an.

Prüfe, ob die Blocks, die du überschreibst, offiziell dokumentiert sind und eröffne ein Issue wenn dies nicht der Fall ist. Dokumentierte Templates und Blocks werden seltener geändert und falls doch, wird dies in den Versionshinweisen besser dokumentiert.

mails/email.html

Das Template ist neu in blocks gegliedert, die einzeln überschrieben werden können. Falls du die Signatur änderst, verschiebe diese in juntagrico/mails/signature.html damit die neue Vorschau beim E-Mail-Versand korrekt angezeigt wird.

Verschobene Templates

signup.htmljuntagrico/signup/member.html
forms/no_subscription_field.htmljuntagrico/subscription/create/form/no_subscription_field.html
select_depot.htmljuntagrico/subscription/create/select_depot.html
select_start_date.htmljuntagrico/subscription/create/select_start_date.html
select_shares.htmljuntagrico/subscription/create/select_shares.html
summary.htmljuntagrico/subscription/create/summary.html
depot.htmljuntagrico/my/depot/show.html
cancelmembership.htmljuntagrico/my/membership/cancel.html
profile.htmljuntagrico/my/membership/profile.html

Nächste Schritte

Prüfe nach dem Redeploy, ob alles wie erwartet läuft.

Prüfe die Abo-Typen in der neuen Ansicht unter Administration → Konfiguration: Neu können mehrere Produkte mehreren Abo-Typen zugeordnet werden. Die Beschreibung der Produkte ist neu nur auf der Depot-Liste sichtbar. bei der Bestellung sind die Abo-Typen neu nach Abo-Kategorien gegliedert (ehemals Abo-Produkte). Deren Beschreibung wird nur im Bestellprozess angezeigt.

Lies hier weiter, welche neuen Funktionen Juntagrico 2.0 mitbringt und wie du diese aktivierst.