Commit Graph
1625 Commits
Author SHA1 Message Date
Oliver 2f91f9a068 [report] Add set_var and get_var helpers (#12901)
* [report] Add set_var and get_var helpers

* Add type hints

* Adjust helpers
2026-09-21 16:38:03 +10:00
Oliver a675d1b24c [bug] Fix for Attachment thumbnail generation (#12902) 2026-09-21 13:16:24 +10:00
Oliver 94692563fe [bug] Bulk import fix (#12898)
* Handle auto_now and auto_now_add fields for bulk import

- Prevent them from being set to the current date

* Add regression testing
2026-09-21 13:05:21 +10:00
Oliver ce52e57fba [bug] Build line fix (#12892)
* Fix BuildLineSerializer

- use SubquerySum not Sum

* Add regression test

* Adjust existing API test thresholds

* Refactor assertion message in test_api.py

Simplified assertion message for GROUP BY check in count queries.

* Fix assertion message in count query test
2026-09-20 23:41:09 +10:00
Oliver 10422dc37b [db] Disable JIT for postgres (#12893)
* disable postgres JIT by default

* Update docs
2026-09-20 19:09:55 +10:00
dependabot[bot]andMatthias Mair 6176135821 chore(deps): bump the dependencies group across 1 directory with 18 updates (#12882)
* chore(deps): bump the dependencies group across 1 directory with 18 updates

Bumps the dependencies group with 18 updates in the /src/backend directory:

| Package | From | To |
| --- | --- | --- |
| [boto3](https://github.com/boto/boto3) | `1.43.88` | `1.43.92` |
| [botocore](https://github.com/boto/botocore) | `1.43.88` | `1.43.92` |
| [django-dbbackup](https://github.com/Archmonger/django-dbbackup) | `5.3.0` | `5.3.1` |
| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.18.0` | `3.18.1` |
| [fonttools](https://github.com/fonttools/fonttools) | `4.64.0` | `4.65.0` |
| [pint](https://github.com/hgrecco/pint) | `0.25.3` | `0.26.1` |
| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.11.7` | `4.11.8` |
| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.49.0` |
| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.13.0` | `2.14.0` |
| [pypdf](https://github.com/py-pdf/pypdf) | `6.17.0` | `6.18.1` |
| [scim2-models](https://github.com/python-scim/scim2-models) | `0.6.12` | `0.7.0` |
| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.68.1` | `2.69.1` |
| [tqdm](https://github.com/tqdm/tqdm) | `4.70.0` | `4.70.1` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.4.0` | `2.4.1` |
| [anyio](https://github.com/agronholm/anyio) | `4.15.0` | `4.15.1` |
| [build](https://github.com/pypa/build) | `1.6.0` | `1.6.1` |
| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260724` | `2.9.21.20260911` |
| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260815` | `6.0.12.20260906` |



Updates `boto3` from 1.43.88 to 1.43.92
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.43.88...1.43.92)

Updates `botocore` from 1.43.88 to 1.43.92
- [Commits](https://github.com/boto/botocore/compare/1.43.88...1.43.92)

Updates `django-dbbackup` from 5.3.0 to 5.3.1
- [Release notes](https://github.com/Archmonger/django-dbbackup/releases)
- [Changelog](https://github.com/Archmonger/django-dbbackup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Archmonger/django-dbbackup/compare/5.3.0...5.3.1)

Updates `djangorestframework` from 3.18.0 to 3.18.1
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.18.0...3.18.1)

Updates `fonttools` from 4.64.0 to 4.65.0
- [Release notes](https://github.com/fonttools/fonttools/releases)
- [Changelog](https://github.com/fonttools/fonttools/blob/main/NEWS.rst)
- [Commits](https://github.com/fonttools/fonttools/compare/4.64.0...4.65.0)

Updates `pint` from 0.25.3 to 0.26.1
- [Changelog](https://github.com/hgrecco/pint/blob/master/CHANGES)
- [Commits](https://github.com/hgrecco/pint/compare/0.25.3...0.26.1)

Updates `platformdirs` from 4.11.7 to 4.11.8
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.11.7...4.11.8)

Updates `pydantic-core` from 2.46.5 to 2.49.0
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/commits)

Updates `pyjwt` from 2.13.0 to 2.14.0
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jpadilla/pyjwt/compare/2.13.0...2.14.0)

Updates `pypdf` from 6.17.0 to 6.18.1
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.17.0...6.18.1)

Updates `scim2-models` from 0.6.12 to 0.7.0
- [Release notes](https://github.com/python-scim/scim2-models/releases)
- [Changelog](https://github.com/python-scim/scim2-models/blob/main/doc/changelog.rst)
- [Commits](https://github.com/python-scim/scim2-models/compare/0.6.12...0.7.0)

Updates `sentry-sdk` from 2.68.1 to 2.69.1
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/2.68.1...2.69.1)

Updates `tqdm` from 4.70.0 to 4.70.1
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.70.0...v4.70.1)

Updates `wrapt` from 2.4.0 to 2.4.1
- [Release notes](https://github.com/GrahamDumpleton/wrapt/releases)
- [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst)
- [Commits](https://github.com/GrahamDumpleton/wrapt/compare/2.4.0...2.4.1)

Updates `anyio` from 4.15.0 to 4.15.1
- [Release notes](https://github.com/agronholm/anyio/releases)
- [Commits](https://github.com/agronholm/anyio/compare/4.15.0...4.15.1)

Updates `build` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/pypa/build/releases)
- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/build/compare/1.6.0...1.6.1)

Updates `types-psycopg2` from 2.9.21.20260724 to 2.9.21.20260911
- [Commits](https://github.com/python/typeshed/commits)

Updates `types-pyyaml` from 6.0.12.20260815 to 6.0.12.20260906
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.43.92
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: botocore
  dependency-version: 1.43.92
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: django-dbbackup
  dependency-version: 5.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: djangorestframework
  dependency-version: 3.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: fonttools
  dependency-version: 4.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: pint
  dependency-version: 0.26.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: platformdirs
  dependency-version: 4.11.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: pydantic-core
  dependency-version: 2.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: pyjwt
  dependency-version: 2.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: pypdf
  dependency-version: 6.18.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: scim2-models
  dependency-version: 0.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: sentry-sdk
  dependency-version: 2.69.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: tqdm
  dependency-version: 4.70.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: wrapt
  dependency-version: 2.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: anyio
  dependency-version: 4.15.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: build
  dependency-version: 1.6.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: types-psycopg2
  dependency-version: 2.9.21.20260911
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: types-pyyaml
  dependency-version: 6.0.12.20260906
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix style

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
2026-09-20 11:28:23 +10:00
github-actions[bot] bc005959f5 New Crowdin translations by GitHub Action (#12865)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-20 10:40:45 +10:00
Matthias Mair 63055865db evaluate enviroment once (#12890) 2026-09-20 09:05:47 +10:00
Oliver ea553ea232 Export records (#12887)
* Add 'bulkdumpdata' command

* Test --bulk option in CI
2026-09-19 19:43:09 +10:00
Oliver 2845a59207 API permission tweaks (#12886)
* API permission tweaks

- Explicitly require admin role for MachineSettingList
- Permission check for barcode generation

* Adjust existing unit test

* Update API version
2026-09-19 17:58:00 +10:00
Oliver fcb1e4f23e PO status fix (#12885)
* Fix for PurchaseOrder status code view

- Order dependent, due to new viewset

* Add regression tests for status code API endpoints
2026-09-19 11:54:07 +10:00
Matthias Mair ad69a35dfb feat: support password change well-known (#12878)
as per https://adamj.eu/tech/2026/09/16/django-change-password-url/
2026-09-19 08:26:07 +10:00
Petr LedvinaandOliver f76d79baf1 Add SVG support to datamatrix (#12875)
* Extract Data Matrix rendering helpers

* Add SVG Data Matrix output

* Verify vector Data Matrix output in PDFs

---------

Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
2026-09-18 18:14:50 +10:00
Petr Ledvina 98f4a8203b Ensure generated label PDFs have correct extension (#12870)
* Ensure generated label PDFs retain their extension

* Test generated label PDF filename handling
2026-09-18 17:09:49 +10:00
Petr Ledvina b9c7c24f8a Fix validation of dependent serializer fields (#12871) 2026-09-18 07:59:44 +10:00
Petr Ledvina 960c5f18e4 Preserve note image files when transactions roll back (#12867) 2026-09-18 00:13:03 +10:00
github-actions[bot] 3a0ade3265 New Crowdin translations by GitHub Action (#12782)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 22:32:45 +10:00
Matthias Mair dca516b318 feat(backend): switch API token storage to hmac digest (#12850)
* [FR] switch API token storage to hmac digest
Fixes #12027

* add pr number

* fix implementation details
allign token prefix and token end (add date issuance)

* fix missing re-issuance

* ensure we raise if not exsistant

* fix test

* add ignore

* extend test

* add information regarding v2 tokens

* add fields for:
- revocation details (reason, revoker)
- issueance
- version
- pepper

* bump apiversion

* make revocation mesagge clearer

* add missing update fields

* ensure this only triggers for v2

* move comment

* re-add v1 coverage

* add missing annotation to api schema
2026-09-16 10:35:12 +10:00
Oliver 225157153e Bug fixes for plugin file check (#12861)
- regex escape package name
- allow package without version indicator
- prevent duplication of entries within the plugins file
- add regression tests
2026-09-15 23:23:12 +10:00
Oliver d0a98f6491 Add more robust plugin installation check (#12858) 2026-09-15 21:24:40 +10:00
Matthias Mair 63a434c652 feat: Add facility to completely hide parts of the interface (#12842)
* fix typing issue for pylance engine

* add flags to mark rough function of setting

* update pr version

* fix settings serialisation

* render security warnings

* move Transfer Orders

* respect return order hiding

* almost all confirm texts will have a warning

* add settings for sales, purchase and buildorder deactivation

* make permission check also ensure gloablsetting for view is available; reduce number of chained gates

* document possible missing check

* ensure we can still show the sales tab

* add additional warning to group cleanup

* hide more ui parts conditionally

* add tests for new code and remove duplication

* fix test

* alternative approach to fix SSO path

* remove patch; now done in serializer

* ignore ldap section
2026-09-15 21:13:59 +10:00
Oliver 0d7c99d405 Prevent editing "part" against existing BuildOrder (#12849) 2026-09-15 08:56:35 +10:00
Matthias Mair 66de7b77d4 add test for migrations (#12838) 2026-09-14 16:18:27 +10:00
dependabot[bot]andMatthias Mair b14a4e7812 chore(deps): bump the dependencies group across 1 directory with 12 updates (#12841)
* chore(deps): bump the dependencies group across 1 directory with 12 updates

Bumps the dependencies group with 12 updates in the /src/backend directory:

| Package | From | To |
| --- | --- | --- |
| [boto3](https://github.com/boto/boto3) | `1.43.84` | `1.43.88` |
| [botocore](https://github.com/boto/botocore) | `1.43.84` | `1.43.88` |
| [cssselect2](https://github.com/Kozea/cssselect2) | `0.10.0` | `0.10.1` |
| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.75.2` | `1.75.3` |
| [jwcrypto](https://github.com/latchset/jwcrypto) | `1.5.9` | `1.6.0` |
| [lxml](https://github.com/lxml/lxml) | `6.1.2` | `6.1.3` |
| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.11.5` | `4.11.7` |
| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.36.0` | `7.36.1` |
| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.48.0` |
| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.2` | `6.17.0` |
| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.0` |
| [prek](https://github.com/j178/prek) | `0.5.0` | `0.5.2` |



Updates `boto3` from 1.43.84 to 1.43.88
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](https://github.com/boto/boto3/compare/1.43.84...1.43.88)

Updates `botocore` from 1.43.84 to 1.43.88
- [Commits](https://github.com/boto/botocore/compare/1.43.84...1.43.88)

Updates `cssselect2` from 0.10.0 to 0.10.1
- [Release notes](https://github.com/Kozea/cssselect2/releases)
- [Changelog](https://github.com/Kozea/cssselect2/blob/main/docs/changelog.rst)
- [Commits](https://github.com/Kozea/cssselect2/compare/0.10.0...0.10.1)

Updates `googleapis-common-protos` from 1.75.2 to 1.75.3
- [Release notes](https://github.com/googleapis/google-cloud-python/releases)
- [Changelog](https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-cloud-python/compare/googleapis-common-protos-v1.75.2...googleapis-common-protos-v1.75.3)

Updates `jwcrypto` from 1.5.9 to 1.6.0
- [Release notes](https://github.com/latchset/jwcrypto/releases)
- [Commits](https://github.com/latchset/jwcrypto/compare/v1.5.9...v1.6.0)

Updates `lxml` from 6.1.2 to 6.1.3
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-6.1.2...lxml-6.1.3)

Updates `platformdirs` from 4.11.5 to 4.11.7
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.11.5...4.11.7)

Updates `protobuf` from 7.36.0 to 7.36.1
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)

Updates `pydantic-core` from 2.46.5 to 2.48.0
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/core-v2.46.5...core-v2.48.0)

Updates `pypdf` from 6.16.2 to 6.17.0
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0)

Updates `anyio` from 4.14.2 to 4.15.0
- [Release notes](https://github.com/agronholm/anyio/releases)
- [Commits](https://github.com/agronholm/anyio/compare/4.14.2...4.15.0)

Updates `prek` from 0.5.0 to 0.5.2
- [Release notes](https://github.com/j178/prek/releases)
- [Changelog](https://github.com/j178/prek/blob/master/CHANGELOG.md)
- [Commits](https://github.com/j178/prek/compare/v0.5.0...v0.5.2)

---
updated-dependencies:
- dependency-name: boto3
  dependency-version: 1.43.88
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: botocore
  dependency-version: 1.43.88
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: cssselect2
  dependency-version: 0.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: googleapis-common-protos
  dependency-version: 1.75.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: jwcrypto
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: lxml
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: platformdirs
  dependency-version: 4.11.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: protobuf
  dependency-version: 7.36.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
- dependency-name: pydantic-core
  dependency-version: 2.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: pypdf
  dependency-version: 6.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: anyio
  dependency-version: 4.15.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependencies
- dependency-name: prek
  dependency-version: 0.5.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix style

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
2026-09-13 13:51:31 +10:00
Matthias Mair 6b1a3b899e fix: users created via Admin Center never receive password reset emails (#12839)
* Users created via Admin Center never receive password reset emails
Fixes #12733

* fix issue when using registration endpoint

* remove duplicate code path; we now always do that

* remove old test backfill that is not required anymore
2026-09-13 13:50:52 +10:00
wyyd-yxcandMatthias Mair 9181097194 Add user option to rotate table column headers (#12837)
* Add user option to rotate table column headers (#12558)

Wide column titles (e.g. "Temperature coefficient [±ppm/°C]") take a
lot of horizontal space for narrow data. Add a ROTATE_TABLE_HEADERS
user setting (Display Options) which renders table header titles
vertically via a scoped CSS class, following the implementation
sketch from the issue discussion.

* Format ROTATE_TABLE_HEADERS description per ruff-format

* add missing doc place

* Document ROTATE_TABLE_HEADERS setting in user settings docs

* docs: add changelog entry for rotated table headers option

---------

Co-authored-by: Matthias Mair <code@mjmair.com>
2026-09-12 14:12:39 +10:00
dependabot[bot]andMatthias Mair 0bf4fffb39 chore(deps): bump weasyprint from 69.0 to 70.0 in /src/backend (#12833)
* chore(deps): bump weasyprint from 69.0 to 70.0 in /src/backend

Bumps [weasyprint](https://github.com/Kozea/WeasyPrint) from 69.0 to 70.0.
- [Release notes](https://github.com/Kozea/WeasyPrint/releases)
- [Changelog](https://github.com/Kozea/WeasyPrint/blob/main/docs/changelog.rst)
- [Commits](https://github.com/Kozea/WeasyPrint/compare/v69.0...v70.0)

---
updated-dependencies:
- dependency-name: weasyprint
  dependency-version: '70.0'
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix style

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Matthias Mair <code@mjmair.com>
2026-09-12 08:12:50 +10:00
Oliver c26db6a790 Squash migrations (#12830)
* Squash migrations for "users" app

* Squash migrations for "common" app

Note: we will come back again later to squash some more

* Significant squashing

* Update legacy migrations

* Further squashing of migrations

* Even more cleanup

* Adjust CI workflow

* Update CI Job

* Update docs

* Update CHANGELOG.md

* Cleanup old comments

* Throw error if pre 1.0.0 DB detected

* Refactor incomplete migration check
2026-09-11 16:03:41 +10:00
Oliver e8af71ae5a Bug fixes for Note model (#12835)
* Bug fixes for Note model

- Allow note to be created as "primary"
- Reset note creation fields in editor

* Tweak to ensure that the API spec does not change
2026-09-10 14:22:55 +10:00
Matthias Mair 97f7c039c9 fix lease issue (#12828) 2026-09-09 07:15:05 +10:00
Oliver 7cd74eecd4 Migration fix (#12808)
* Fix for Note migration

- Handles case where data migration is running on a DB which does not support RETURNING

* Run migration tests against all supported backends

* Fix typo

* Adjust CI workflows

* TZ migration fix

* Tweak migration test

* Adjust migration tests

* Ensure consistent ordering

* Bump API version

* Fix tests to allow non psql database support
2026-09-08 18:50:13 +10:00
Oliver ef42a7b309 Attachment filtering by filename (#12807)
* Attachment filtering by filename

* Update API version
2026-09-08 09:25:20 +10:00
Oliver 5ffd777f5d Fix for recursive custom units (#12815) 2026-09-08 08:24:44 +10:00
Oliver 5a7308763e [bug] Prevent editing of model-type for data import (#12809) 2026-09-07 21:08:02 +10:00
Matthias Mair c959ca4574 feat(frontend): add SAML helper (#12799)
* squash #12762

* implement https://github.com/inventree/InvenTree/issues/3509

* add changelog

* add option to use the full width
2026-09-07 16:52:24 +10:00
Oliver 2566d332a8 [bug] Plugin fix (#12805)
* [bug] Handle null plugin instance

* Add regression test

* Fix secondary instances of same bug
2026-09-07 14:45:48 +10:00
Oliver b4cb9a9746 Plugin load fix (#12776)
* Robustify plugin file loading

* Lock static file copying

* Improve robustness of static file copying

* Add regression tests

* Handle database not being ready

* Fix identified limitation and refactor code

* Attempt to fix CI job

* instrumentation for CI - will revert

* Another bugfix attempt
2026-09-07 07:45:53 +10:00
Oliver 4a0e28510f Exception handling for data outputs (#12797) 2026-09-06 21:36:01 +10:00
Oliver 1218af7366 Adds bulk-import option for "import-records" task (#12792)
* skip plugin events if importing or migrating data

* Add bulkloaddata option

* Skip signals if importing

* Improve bulkloaddata command

* Optionally rebuild thumbnails

* enhancements for import_records task

* cache natural key references in bulkloaddata

* wrap export_records in @state_logger

* Reduce file size of exported data

* Added docs

* Test bulk workflow as part of CI

* Add progress bar for data import

* fix for import workflow bug

* Separately test bulk import workflow

* Exercise --prettify option

* Additional CI checks for content excludes

* Allow plugin loading for list_apps

* Additional CI unit tests

* Test for importing with conflicting records

* path fixes

* Adjust test conditions
2026-09-06 19:58:52 +10:00
Oliver 321489a41b Add error message for missing TLD (#12789)
* Add error message for missing TLD

* add error code for missing TLD
2026-09-06 15:00:22 +10:00
Oliver 5b4c8135dc [CI] Allow more query time (#12790) 2026-09-05 19:55:57 +10:00
Oliver 9a416df5d4 Enhanced error message on CSRF failure (#12788)
* Enhanced error message on CSRF failure

* Defer to 'detail' field if exists
2026-09-05 19:55:37 +10:00
Matthias Mair 0a4f095397 feat(backend): enable OIDC/oAuth2 provider by default (#12731)
* Add SCIM
Closes https://github.com/inventree/InvenTree/issues/6339

* also test scim

* extend testing with conformance suite

* fix test suite results

* coverage completion

* fil test gaps

* add missing schema values

* fix more type issues

* fix error view

* remove route from OpenAPI

* User permissions check for Attachment API (#12689)

* enable oidc proivder by default

* add .well-known entry for OIDC server

* add default client registration

* add changelog entry

* add codeowners

* remove redundant info

* re-name and restructure panel

* add a smal explainer section on top

* flesh out section a bit more

* change name

* basic sso panel

* refactor rendering

* add api and mgmt functions

* add create/delete options

* simplify test

* handle secret generation

* fix merge

* update coverage

* add test

* reduce user friction

* add better labels

* make it more clear that this is only shown once

* add regenerate function

* update tests

* simplify test calls

* fix test
2026-09-05 12:10:13 +10:00
Oliver fa44925b21 Refactor part pricing updates (#12787)
* Refactor part pricing updates

- Handles cases where underlying part has been deleted

* Add regression tests
2026-09-05 11:57:39 +10:00
Oliver b51f710ee5 BOM Validation Improvements (#12780)
* Adjust get_bom_hash function:

- Optionally skip inclusion of part names
- Skip 'piece_count' if default value set

* Fall back to legacy comparison

* Add per-line-item check

* Add regression tests
2026-09-05 08:30:02 +10:00
github-actions[bot] e4e4d87476 New Crowdin translations by GitHub Action (#12759)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-04 16:00:50 +10:00
Oliver ff732d01aa Ignore 'piece_count' if default value (#12781)
* Ignore 'piece_count' if default value

* Add regression testing
2026-09-04 13:16:40 +10:00
Oliver aadd27d217 Prevent delete operation on /api/user/me/ (#12770)
* Prevent delete operation on /api/user/me/

* Bump API version
2026-09-03 15:27:44 +10:00
Oliver 8c1c16e59a Handle missing record in after_delete_supplier_part (#12772) 2026-09-03 13:57:19 +10:00
Matthias MairandOliver fa52affe98 feat: warn about unsafe CORS (#12773)
* feat: warn about unsafe CORS

* extend docs

* fix defaults

* bump api version

---------

Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
2026-09-03 13:09:17 +10:00