- changed export permission requirements:
- exporting a limited set of records only requires 'view' permission
- exporting all records of a model requires superuser permission
- watchlist: include magazin name in Ausgabe watchlist items
- moved docs and test requirements into their own requirement files
- move dev configs (pytest, ruff, etc.) into pyproject.toml
- fixed text search with search terms that contain forward slashes (#14)
- watchlist: include Magazin name in the text representation of Ausgabe watchlist items
- fixed URLs for the duplicates search
- quick fix for Broschüre pages being inaccessible due to an UnicodeEncodeError when served under Apache. The anticipated template file for the Broschüre help page contains an Umlaut, which creates problems when checking for the existence of that template. To fix, the help link now always links to the help index instead of model-specific help pages depending on what view the user is on.
- added date picker for Ausgabe Erscheinungsdatum field
- added button to inlines that sends the user to the changelist of the items selected in the inline forms
- added 'Band' search field to Musiker changelist
- added 'Ergebnisse exportieren' button to changelist that exports the current search results
- made some columns in the Ausgabe changelist unsortable. Columns like the one for the "Ausgabenummer" contain mostly numerical values, but they actually are text and thus order lexicographically if sorted against, which ends up looking wrong and confusing to the user.
- store secrets in a single yaml file instead of multiple files in a
.secret
directory - reworked docker setup:
- volume source directories are read from environment (
DATA_DIR
,LOG_DIR
,BACKUP_DIR
) - volume source directories default to
/var/lib/mizdb/
and/var/log/mizdb
- $UID and $GID are no longer used to define the container user: containers are run as root and the webserver is run as apache
- volume source directories are read from environment (
- add scripts: uninstall script, backup script and get-mizdb script
- moved database scripts into
scripts
directory - changed update process:
- update now checks against GitHub API
- rebuilds containers after pulling the update
- applies migrations if necessary
- delete view: non-admin users were required to have "delete" permissions for auto created M2M tables.
- Genre edit page now includes links to the changelists of related Brochure models (Broschüre, Programmheft, Warenkatalog)
- internal documentation and help pages
- clean up templates
- remove unused files
- move templates from project root into app directory
- clean up and rework action views
- remove logging for change confirmations, logins, logouts and CSRF failures
- reworked docker image: now uses alpine as base images instead of debian
- many tweaks to the
mizdb.sh
utility script and the installation script
- BulkEditJahrgang now handles invalid Jahrgang values
- Ausgabe changelist is now ordered chronologically
- MIZQuerySet now has an
order_by_most_used
method that orders items by how often they are used in a given relation. Schlagwort and Genre autocompletes are now ordered by how often they are used in Artikel relations if no search term is given.
- watchlist feature for keeping user lists of model objects
- enable exporting records
- add "Monat" column to Ausgabe autocomplete
- disallow empty URLs
- allow anonymous users to use changelist selection
- updated dependencies:
- updated to Django 4.2.9. Notable
change: set formfield_callback in
MIZEditForm.Meta
- removed unused dependencies PyYAML, pipreqs and pylint
- updated to Django 4.2.9. Notable
change: set formfield_callback in
- admin refactor:
- moved modules specific to admin to
dbentry/admin
- added
DbentryAdminConfig
app config. With the above change, Django's autodiscovery for the admin module containing the model admin classes will no longer work (it will try to importdbentry.admin
, which is now a package).DbentryAdminConfig
is a config that disables the autodiscovery and imports the admin module. - moved dal package
ac
todbentry/admin/autocomplete
- moved some static files that were not exclusively for admin to
dbentry/static/mizdb
- moved modules specific to admin to
- changelist action refactor: make action base views compatible with non-admin views
- re-enable "View on site" link in admin user links
- changed handling of requests with invalid CSRF tokens:
- invalid login requests by authenticated users will cause a redirect to the login page so that the user can confirm the login with a refreshed token
- invalid logout requests by authenticated users will cause a redirect to the index page with a warning message, but will not log out the user
- invalid logout requests by unauthenticated users will cause a redirect to the login page like a normal logout
- invalid add/change page requests will redirect back to the page, preserving the previous form data, for the user to try again with a refreshed token
- fixed error occurring when logging out in two separate tabs one after another
- fixed sticky bottom container not always being placed at the very bottom of the view port
- integrated site app that does not rely on django admin
- use Sass/SCSS to generate CSS and theme
-
reverted commit
3fc06493
from release 0.11.1:initialize changelist search form with
initial
instead ofdata
Using
data
instead ofinitial
was the proper way to go for search forms after all.
- invalid name_field for Provenienz model. Was
geber
, should have beengeber__name
.
- added Orte column to Band and Musiker dal autocomplete
- Docker support
- added new installation methods
- added management utility script
mizdb.sh
- reworked handling of secret files and database connection parameters
- Buch: removed Genre overview annotation to speed up changelist requests
- refactored MergeView to use django-formtool's SessionWizardView directly
- initialize changelist search form with
initial
instead ofdata
- add overview (changelist view) queryset annotations and optimizations to models
- add mizdb-tomselect widgets and views
- dbentry admin changelists now use overview annotations
- dal autocomplete tabular views now use the overview annotations
- refactored search form factory and view mixins to allow using different widget factories
- fix incorrect tabular_autocomplete parameter for KalenderAdmin.SpielortInline
- text search: accept string of comma-separated values as search term for ids
- admin: require confirmation for drastic model object changes
- summarize utility function and action that provide summaries of model objects
-
updated package versions:
- Django updated to version 4.1
django-autocomplete-light
updated to verson 3.9.4- use own fork of
django-tsvector-field
to make it compatible with Django 4 - other minor package updates
-
updated tox tests
-
force using jQuery version 3.5.1 (due to a bug with select2 and jQuery 3.6)
- rewrote and revised the MIZDB tests
- unified 'maint' and 'bulk' package into a 'tools' package. That change includes:
- URLs for 'maint' and 'bulk' views are now configured in tools.urls (from dbentry.urls)
- moved templates for 'maint' and 'bulk' views into dbentry.templates.tools (from MIZDB.templates.admin)
- renamed 'crosslinks' to 'changelist_links'
- added a 'replace' action that replaces any occurrence of a (single) model object with a set of objects of the same model