Merged
Conversation
- Remove dependency (deprecated). - Add and dependencies. - Add field to ExerciseTranslation model. - Update API serializers to handle markdown input. - Create for rendering and sanitization.
- Added `migrate_descriptions_to_markdown` command to convert legacy `description` (HTML) content to `description_source` (Markdown) using `markdownify`. - Migrated to add the `description_source` field to `ExerciseTranslation` and `HistoricalTranslation`. - Updated `ExerciseTranslation.save()` logic to handle both Markdown source input AND legacy raw HTML input, ensuring the strict `nh3` sanitization is applied in both cases to maintain data integrity. - Adjusted test expectations (`test_command_migrate_descriptions`, `test_patch_clean_html`) to correctly reflect the strict CommonMark rendering (`<strong>`, `<em>`) and the secure content-stripping behavior of the `nh3` sanitizer. Now the backend completely replaced `bleach` and adopted Markdown descriptions.
# Conflicts: # pyproject.toml
This make the migration happen automatically, and makes sure the exercises don't end up in a half migrated step or so.
…nique_together constraint
There is now only a single table (simplified) table, which makes it easier to understand and doesn't require so many joins.
# Conflicts: # pyproject.toml # uv.lock
This will make it easier to sync and update them later
# Conflicts: # wger/nutrition/consts.py
For this, a new UUID field is added.
Previously these were failing on postgres, but passed on sqlite
This makes it now trivial to sync them to local instances
This was failing on some of the overviews that accessed the session, like the ingredient one
# Conflicts: # CHANGELOG.md # wger/exercises/fixtures/exercise-base-data.json
This was referenced Apr 13, 2026
This makes handling this down the road easy, since we don't need to do any null checks or so and has the same behaviour as the compiled "description" field
Postgres only checks that the foreign key constraints are met at the end of the migration, while mysql needs them to always be set. Fixes #926
This is the limit as defined in the db as well
…feature/version-2.5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed Changes
Meta pr with backend incompatible changes
React: wger-project/react#1234
Flutter: wger-project/flutter#1169