• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

openwisp / openwisp-utils
97%

Build:
DEFAULT BRANCH: master
Repo Added 23 Jun 2017 08:44AM UTC
Files 66
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH master
branch: master
CHANGE BRANCH
x
Reset
  • master
  • 1.0
  • 1.2
  • auto-assign-bot-too-eager
  • browser-logs
  • bump-drf
  • bump-version
  • change/copyable-admin-default-uuid
  • changelog-bot-change-excl
  • changelog-generator-line-length
  • channels-4.3.0
  • chore/port-changelog-1.2.1
  • chore/port-changelog-1.2.2
  • chores/improve-ci-failure-bot
  • ci-bot-context-fix
  • ci-failure-refinements
  • ci-selenium-firefox
  • ci-selenium-improvements
  • ci/disable-stale-pr-auto-close
  • ci/fix_bot_changelog
  • ci/retention_policy
  • codex/issue-628-cache-bot-deps
  • copilot/update-module-version-alpha
  • css-fixes
  • dependabot/github_actions/actions/cache-5
  • dependabot/github_actions/actions/checkout-4
  • dependabot/github_actions/actions/checkout-5
  • dependabot/github_actions/actions/checkout-6
  • dependabot/github_actions/actions/create-github-app-token-2
  • dependabot/github_actions/actions/create-github-app-token-3
  • dependabot/github_actions/actions/download-artifact-8
  • dependabot/github_actions/actions/setup-python-5
  • dependabot/github_actions/actions/setup-python-6
  • dependabot/github_actions/actions/upload-artifact-7
  • dependabot/github_actions/pypa/gh-action-pypi-publish-1.12.3
  • dependabot/github_actions/pypa/gh-action-pypi-publish-1.12.4
  • dependabot/github_actions/pypa/gh-action-pypi-publish-1.14.0
  • dependabot/pip/black-gte-23.12.1-and-lt-25.2.0
  • dependabot/pip/black-gte-25.1-and-lt-25.10
  • dependabot/pip/black-gte-25.1-and-lt-25.12
  • dependabot/pip/black-gte-25.1-and-lt-25.13
  • dependabot/pip/black-gte-25.1-and-lt-26.2
  • dependabot/pip/black-gte-25.1-and-lt-26.4
  • dependabot/pip/celery-approx-eq-5.6.1
  • dependabot/pip/celery-gte-5.4-and-lt-5.6
  • dependabot/pip/channels-redis-gte-4.2.1-and-lt-4.4.0
  • dependabot/pip/coverage-gte-7.10.0-and-lt-7.14.0
  • dependabot/pip/coverage-gte-7.10.6-and-lt-7.12.0
  • dependabot/pip/coverage-gte-7.6.1-and-lt-7.9.0
  • dependabot/pip/django-filter-gte-23.2-and-lt-26.0
  • dependabot/pip/django-model-utils-gte-4.5-and-lt-5.1
  • dependabot/pip/djangorestframework-approx-eq-3.17.1
  • dependabot/pip/djangorestframework-gte-3.14-and-lt-3.16.1
  • dependabot/pip/docstrfmt-gte-1.8-and-lt-1.11
  • dependabot/pip/drf-yasg-1.21.14
  • dependabot/pip/git-cliff-approx-eq-2.11.0
  • dependabot/pip/git-cliff-approx-eq-2.12.0
  • dependabot/pip/git-cliff-approx-eq-2.13.1
  • dependabot/pip/isort-gte-6.0.1-and-lt-7.1.0
  • dependabot/pip/isort-gte-6.0.1-and-lt-8.1.0
  • dependabot/pip/pytest-asyncio-gte-0.24-and-lt-0.27
  • dependabot/pip/pytest-asyncio-gte-0.24-and-lt-1.4
  • dependabot/pip/pytest-django-gte-4.10-and-lt-4.12
  • dependabot/pip/pytest-django-gte-4.10-and-lt-4.13
  • dependabot/pip/selenium-gte-4.10-and-lt-4.29
  • dependabot/pip/selenium-gte-4.10-and-lt-4.30
  • dependabot/pip/selenium-gte-4.10-and-lt-4.35
  • dependabot/pip/selenium-gte-4.10-and-lt-4.36
  • dependabot/pip/selenium-gte-4.10-and-lt-4.39
  • dependabot/pip/selenium-gte-4.10-and-lt-4.40
  • dependabot/pip/selenium-gte-4.10-and-lt-4.41
  • dependabot/pip/selenium-gte-4.10-and-lt-4.42
  • dependabot/pip/selenium-gte-4.10-and-lt-4.44
  • dependabot/pip/swapper-gte-1.3-and-lt-1.5
  • dependabot/pip/tblib-approx-eq-3.2.2
  • dependabot/pip/tblib-gte-3.1-and-lt-3.3
  • django-5-css
  • django-5-theme
  • docs/changelog_bot
  • docs/changelog_bot_update
  • drop-coveralls
  • duplicate-1.2.0
  • exclude_validation
  • feat/496-changes-gen
  • feature/480-map-icon
  • feature/517-add-netjsongraph-static
  • feature/AI_created_changelog
  • feature/multi-package-support
  • feature/reusable-autoassign-workflow
  • feature/reusable_pagination
  • fix-ci
  • fix-ci-failure-bot-retry
  • fix-commitizen
  • fix-commitizen-coverage
  • fix-cz-rules
  • fix-dashboard-double-encoding
  • fix-docs-url
  • fix-email-darkmode
  • fix-inline-heading-border
  • fix-selenium-hide-loading-overlay
  • fix-seleniumtextmixin
  • fix/bot-changelog
  • fix/call_gemini
  • fix/changelog_imports
  • fix/changelog_retry
  • fix/changelog_system_prompt
  • fix/ci-bot-ref-path
  • fix/ci-failure-bot
  • fix/ci-failure-bot-transient-error
  • fix/fix-tagging-failure-bot
  • fix/minor-fixes-failure-bot
  • fix/readonlyadmin-cascade-delete
  • fix/selenium-parallel-skip-handling
  • fix/stale-pr-bot-bot-reviewer-false-positives
  • fix/transient-error-markers
  • fix/transient-error-rerun
  • fix/validated-model-serializer-update-validation
  • gsoc25-map-adjustments
  • ignore-files-qa-check-299
  • improve-email-template
  • improve-email-ux
  • improve-reusable-version-branch
  • issues/110-commit-convention-standardization
  • issues/1231-fallback-fileds-db-migrations
  • issues/186-use-separate-db-for-migration-checks
  • issues/254-select2-autocomplete-fields
  • issues/328-remove-depre-UUID
  • issues/344-ReceiveUrlAdmin-inherit-CopyableFieldAdmin
  • issues/367-switch-to-prettier
  • issues/388-channels
  • issues/400-flaky-test-autocomplete-shelf-filter
  • issues/431-falky-test-input-filter
  • issues/439-deps
  • issues/448-withdraw-consent
  • issues/464-retry-selenium
  • issues/482-remove-email-tempalte-setting
  • issues/487-theme-color-variables
  • issues/501-automate-backporting-fixes
  • issues/517-netjsongraph-static-files
  • issues/524-ci-failure-bot
  • issues/532-releaser-backport-changelog-fix
  • issues/552-fix-releaser-git-add
  • issues/552-releaser-untracked-changes
  • issues/565-clean
  • issues/565-collectstatic-error
  • issues/565-error-malformed-css
  • issues/571-automate-assigning-unassigning-issues
  • issues/616-ci-failure-bot-refinements
  • issues/633-ValidatedModelSerializer
  • issues/643-add-state-category-vars
  • issues/646-releaser-auto-branch-selection
  • issues/649-fix-bot-assignment-silent-failure
  • issues/669-changelogbot-commitizen-import-error
  • issues/904-change-to-ChannelsLiveServerTestCase
  • made-ow-rules-standard
  • migrate-to-importlib
  • openwisp-theme
  • patch-1
  • prettier-update
  • qa-deps
  • refactor-seleniumtextmixin
  • refactor/transient-rerun-mechanism
  • refine-reusable-autoassign-workflow
  • release/1.2.0
  • release/1.2.2
  • releaser-ai-false
  • releaser-git-pull-tags
  • remove-chatgpt-integration
  • remove-python-3.9
  • selenium-chromedriver
  • selenium-helpers
  • selenium-mixin-chores
  • selenium-test-case
  • selenium-test-methods
  • seleniumtestmixin-free-port
  • send-email-configurable-template
  • system-info-improvements
  • tidy-up-tests
  • ui
  • update-backport-workflow-docs
  • update-email-template
  • update-qa
  • update-releaser-new-version
  • upgrade-django-channels
  • upgrade-docstrfmt

29 May 2026 11:18PM UTC coverage: 97.447% (-0.04%) from 97.488%
26667101397

push

github

nemesifier
[fix] Fixed ValidatedModelSerializer: validation of PUT/PATCH & relationships #633

Updated ValidatedModelSerializer.validate() to:
- Use copy() for existing instances to avoid mutating the original
- Skip reverse relations (ForeignObjectRel) during setattr
- Skip nested relationships
- Convert Django ValidationError to DRF ValidationError so errors
  are properly serialized in API responses and picklable in the
  parallel test runner

Fixes #633

---------

Co-authored-by: BHARATH0153 <bharath@openwisp.org>
Co-authored-by: Federico Capoano <f.capoano@openwisp.io>

3932 of 4035 relevant lines covered (97.45%)

13.64 hits per line

Relevant lines Covered
Build:
Build:
4035 RELEVANT LINES 3932 COVERED LINES
13.64 HITS PER LINE
Source Files on master
  • Tree
  • List 66
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
26667101397 master [fix] Fixed ValidatedModelSerializer: validation of PUT/PATCH & relationships #633 Updated ValidatedModelSerializer.validate() to: - Use copy() for existing instances to avoid mutating the original - Skip reverse relations (ForeignObjectRel) duri... push 29 May 2026 11:21PM UTC nemesifier github
97.45
26663737461 master [chores] Changelog bot: prevented long body lines Gemini can return squash commit descriptions as one long paragraph. That makes the changelog bot propose commit messages that are hard to reuse without manual wrapping. Validate generated body li... push 29 May 2026 09:45PM UTC nemesifier github
97.49
26479497555 master [fix] Triggered changelog bot for backward incompatible changes Accept [change!] entries in the changelog bot trigger and validation so backward incompatible PRs receive generated changelog suggestions. push 26 May 2026 10:49PM UTC nemesifier github
97.49
26059551562 master [docs] Changelog bot docs: added retention-days push 18 May 2026 08:55PM UTC web-flow github
97.49
26059505564 master [ci] Changelog bot: set retention to 1 day push 18 May 2026 08:50PM UTC web-flow github
97.49
25936214391 master [change] Added default uuid method to CopyableFieldsAdmin #328 ``CopyableFieldsAdmin`` now ships with a default ``uuid()`` method that returns ``obj.pk`` and has ``short_description`` set to ``'UUID'``. This allows subclasses to use ``copyable_fi... push 15 May 2026 07:08PM UTC nemesifier github
97.49
25932578823 master [change!] Removed deprecated UUIDAdmin class #328 The deprecated UUIDAdmin class has been removed. For equivalent functionality, use `CopyableFieldsAdmin` with `copyable_fields = ('uuid',)`. Closes #328 push 15 May 2026 05:48PM UTC web-flow github
97.49
25921662496 master [ci:fix] Resolved issues affecting changelog bot (invalid commit message) - Made prompt more explicit about expected outcomes - Retry up to 3 times if an invalid outcome is received push 15 May 2026 01:57PM UTC web-flow github
97.51
25805422267 master [ci:change] Stale-PR bot: drop auto-close and fix false-positive detection - Stop stale-PR bot from closing PRs blocked only by bot reviews - Address review feedback on stale-PR bot fix - Drop auto-close from stale-PR bot in favor of final follow... push 13 May 2026 02:28PM UTC web-flow github
97.51
25757348725 master [deps] Update djangorestframework requirement from ~=3.16.0 to ~=3.17.1 Updates the requirements on [djangorestframework](https://github.com/encode/django-rest-framework) to permit the latest version. - [Release notes](https://github.com/encode/d... push 12 May 2026 07:32PM UTC nemesifier github
97.51
See All Builds (2027)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc