Merge branch 'master' of https://github.com/inventree/InvenTree into bump-ty

This commit is contained in:
Matthias Mair 2026-06-20 13:51:08 +02:00
commit bbfbc78845
No known key found for this signature in database
GPG Key ID: A593429DDA23B66A
141 changed files with 37269 additions and 33415 deletions

View File

@ -8,7 +8,7 @@ name: Frontend
on:
push:
branches-ignore: ["l10*"]
branches-ignore: ["l10*", "dependabot/*", "backport/*"]
pull_request:
branches-ignore: ["l10*"]

View File

@ -7,7 +7,7 @@ name: Import / Export
on:
push:
branches-ignore: ["l10*"]
branches-ignore: ["l10*", "dependabot/*", "backport/*"]
pull_request:
branches-ignore: ["l10*"]

View File

@ -4,7 +4,7 @@ name: QC
on:
push:
branches-ignore: ["l10*"]
branches-ignore: ["l10*", "dependabot/*", "backport/*"]
pull_request:
branches-ignore: ["l10*"]

View File

@ -42,6 +42,8 @@ jobs:
id-token: write
contents: write
attestations: write
artifact-metadata: write
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # pin@v6.0.3
with:
@ -73,7 +75,7 @@ jobs:
zip -r ../frontend-build.zip * .vite
- name: Attest Build Provenance
id: attest
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # pin@v1
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # pin@v4
with:
subject-path: "${{ github.workspace }}/src/backend/InvenTree/web/static/frontend-build.zip"
@ -87,11 +89,15 @@ jobs:
with:
name: frontend-build
path: src/backend/InvenTree/web/static/frontend-build.zip
- name: Rename Attestation Bundle
run: |
mv ${BUNDLE_PATH} src/backend/InvenTree/web/static/frontend-build.intoto.jsonl
env:
BUNDLE_PATH: ${{ steps.attest.outputs.bundle-path}}
- name: Upload Attestation
run: gh release upload ${REF} ${BUNDLE_PATH}#frontend-build.intoto.jsonl
run: gh release upload ${REF} src/backend/InvenTree/web/static/frontend-build.intoto.jsonl#frontend-build.intoto.jsonl
env:
REF: ${{ github.ref_name }}
BUNDLE_PATH: ${{ steps.attest.outputs.bundle-path}}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
docs:
@ -148,12 +154,12 @@ jobs:
- ubuntu:22.04
- ubuntu:24.04
- debian:12
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # pin@v6.0.3
with:
fetch-depth: 0
persist-credentials: false
- name: Get frontend artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # pin@v8.0.1
with:
@ -209,7 +215,7 @@ jobs:
echo "calculate release channel"
pip install --require-hashes -r contrib/dev_reqs/requirements.txt
python3 .github/scripts/version_check.py
- name: Package
- name: Package - current release channel
uses: pkgr/action/package@c5666febcd31750da6428042193fc5b2fb765435 # pin@main
id: package
with:
@ -235,14 +241,6 @@ jobs:
repository: inventree/InvenTree
channel: ${{ env.pkg_channel }}
file: ${{ steps.package.outputs.package_path }}
- name: Publish to go.packager.io - stable release channel
uses: pkgr/action/publish@3bce081ae512c5020856e237d37b3f5479d4aa71 # pin@main
with:
target: ${{ matrix.target }}
token: ${{ secrets.PACKAGER_RELEASE_TOKEN }}
repository: inventree/InvenTree
channel: stable
file: ${{ steps.package.outputs.package_path }}
- name: Publish to artifact
run: gh release upload ${REF} ${PACKAGE_PATH}#${PACKAGE_NAME}
env:
@ -250,3 +248,29 @@ jobs:
PACKAGE_PATH: ${{ steps.package.outputs.package_path }}
PACKAGE_NAME: ${{ matrix.target }}-${{ steps.setup.outputs.version }}.tar.gz
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Package - stable release channel
uses: pkgr/action/package@c5666febcd31750da6428042193fc5b2fb765435 # pin@main
id: package-stable
with:
target: ${{ matrix.target }}
version: ${{ steps.setup.outputs.version }}
debug: true
cache_prefix: ${{ github.ref_name }}
env: |
INVENTREE_DB_ENGINE=sqlite3
INVENTREE_DB_NAME=database.sqlite3
INVENTREE_PLUGINS_ENABLED=true
INVENTREE_MEDIA_ROOT=/opt/inventree/media
INVENTREE_STATIC_ROOT=/opt/inventree/static
INVENTREE_BACKUP_DIR=/opt/inventree/backup
INVENTREE_PLUGIN_FILE=/opt/inventree/plugins.txt
INVENTREE_CONFIG_FILE=/opt/inventree/config.yaml
APP_REPO=inventree/InvenTree
- name: Publish to go.packager.io - stable release channel
uses: pkgr/action/publish@3bce081ae512c5020856e237d37b3f5479d4aa71 # pin@main
with:
target: ${{ matrix.target }}
token: ${{ secrets.PACKAGER_RELEASE_TOKEN }}
repository: inventree/InvenTree
channel: stable
file: ${{ steps.package-stable.outputs.package_path }}

View File

@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- [#12208](https://github.com/inventree/InvenTree/pull/12208) adds custom locale support for rendering currencies, dates and numbers within reports. This allows users to specify a custom locale for report rendering, which can be used to control the formatting of dates, numbers and currency values in the generated reports.
- [#12204](https://github.com/inventree/InvenTree/pull/12204) adds new filtering options to PartCategoryTree and StockLocationTree API endpoints, allowing tree data to be fetched dynamically
- [#12165](https://github.com/inventree/InvenTree/pull/12165) adds support for parameters against the PartCategory model
- [#12103](https://github.com/inventree/InvenTree/pull/12103) adds column-based filtering to table views in the user interface. This extends the existing table filtering functionality by allowing users to apply filters directly to individual columns.
- [#12093](https://github.com/inventree/InvenTree/pull/12093) adds "read_only" attribute to PluginSetting API endpoint, which indicates whether a particular plugin setting is read-only (i.e. cannot be modified via the API)
@ -38,6 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- [#12197](https://github.com/inventree/InvenTree/pull/12197) requires staff permissions to restart machines via the API.
- [#12142](https://github.com/inventree/InvenTree/pull/12142) prevents users from printing reports or labels against models for which they do not have adequate permissions. This change improves the security of the system by ensuring that users cannot access or print reports or labels for models they do not have permission to view.
- [#11990](https://github.com/inventree/InvenTree/pull/11990) build output operations performed via the API now offload the work to a background task, and now return a task ID which can be used to monitor the progress of the task. This allows for better performance and responsiveness when performing build output operations, as the work is performed asynchronously in the background.
- [#11825](https://github.com/inventree/InvenTree/pull/11825) adds a new "bom" ruleset and associated permissions for BOM management, separate from the "part" ruleset which remains focused on part management. This allows for more granular control over user permissions, allowing users to have different levels of access to part management and BOM management functionality.

View File

@ -236,26 +236,26 @@ typing-extensions==4.15.0 \
# via
# -c src/backend/requirements.txt
# psycopg-pool
uv==0.11.19 \
--hash=sha256:28b0d612a766eb25756dbaa315433b726e93affa467d29a2682cc317547952ba \
--hash=sha256:2d663bacb97e2e8412d1c26eace28c7ebbde9d6f5d7d78760fafd114d693817f \
--hash=sha256:2e0e0b8ad59ec56f1440d6e4313b64a1d8119275dcec73d19eef33c43f99428c \
--hash=sha256:301fd78309fc545c2cec2bfcc61a6bbdde876856c6d2041502737cf44085c178 \
--hash=sha256:32d7988c0dfb6f90941f201c871a4478e96e4f2a32bdb2256d62a78ee20593fc \
--hash=sha256:480fc34a8d0967af6a90b3f99a6e5687cd5c6e29528de96bec04d6e305a59363 \
--hash=sha256:50e4d4796ca1a6da359a4f723a0fea86640c381d3ff4fa759a41badd7cb52dee \
--hash=sha256:574f5dd4f31666661ea6386d3b91c5f0e8b84a8cae98ebba447c4674f2e6a4c7 \
--hash=sha256:62b0b35a51d3034ff30ecd0f381e9bbc20d5b335754f54b098da29424d551ceb \
--hash=sha256:65e932720daed1af1f720a0ff5f9b33ee5f7ad97488dcceceb85154fc1323b82 \
--hash=sha256:7222f45b5541551057bfc2e3021f113800704f665c119fdf3ea700c6c4859b21 \
--hash=sha256:731d9fab8db5d41590af64236d03f8069c8da665fd0f9493b85985f19c86cd90 \
--hash=sha256:7fdd881cd6d80782afcf8c1d446dd15a42985167fd812b763d38ba1e4a8d944d \
--hash=sha256:8f90b6687a480d154595aa619fb836a9a20d00ce37293db8099aad924f2b18f9 \
--hash=sha256:a98495b9dd67287d8c1a0786f98cb037a50f0ee6c3d648572edaa7137aabc277 \
--hash=sha256:aa6a7e8d07b33ad22f4732848ebb1d9486503973c248d6e632c06ce4339fe347 \
--hash=sha256:c729f56ffef9b945053412c839695e8a0b13758aa15b7763e95a7dd539a6f522 \
--hash=sha256:f4aa17ffd719daf37b7a6265efd3ee4922a8ddaabaf0406d2b28c7e5ce2f20ff \
--hash=sha256:f56f5bf853626a30423052d7ee00bf5cc940a08347d6ee7ede96862d084054a5
uv==0.11.23 \
--hash=sha256:03fbb0a1c7b6d15e96778bdd79e8d1826c6259fea17fc13337fb0744136953f2 \
--hash=sha256:3a900c8fd757f8c3da9dc5532d9a22d30540e91fdefd63c93909fedbfd756655 \
--hash=sha256:576d776a1ca62e3d8aba99f0d8ec607db91a5ebaf52feaff820f28ed820e1665 \
--hash=sha256:61e6bd7e7f0fe24f103540ba19516443bea6e689022c787217310a1e64558e3f \
--hash=sha256:6d7cea7d9ade3c1c3e3db1dfcc23d335bceaabf38f51e442b6f57f8f7885a9a6 \
--hash=sha256:7a85330de0a7eb0d5c6cf03c80edfb86facad19df367a0b52fc906db1ab15ce9 \
--hash=sha256:91d19c4249d7437b69b91c385134360d7ed9d0ee2e2e83e81d369867151e78c2 \
--hash=sha256:985aa93c9d6223e32fc747e09662537c4073c9ebef59c0a4fd7c6949d1d24fb3 \
--hash=sha256:9dd412127cbe0e115bd3fc5c6cbe9cf59f593273fafab9f7dc6b2ac95efcc7c1 \
--hash=sha256:ac337dacd640aab1ef97cf00f8c01e2889f0fd0ef8460a0f4e816bf12bb5988b \
--hash=sha256:b3f515fd6b43068f241467496bced62cb2ed36d52d4c0877cfe61a1240713d32 \
--hash=sha256:b8abe7d6f5e0d92bd41a9c000bbd9c8387af7886df4790c0451a34e781b8a075 \
--hash=sha256:bbc41182d655f92cd380ecdf378da7fc1598c6b19057208f450f0ee9c259f46a \
--hash=sha256:c2089b992919858dabae89d410cbb5cecf9034d26bbb04f14e6da52dffced290 \
--hash=sha256:ca1d37e851fb9323250385403d8512a71c0d1b6162c729ff4909f37cfd067920 \
--hash=sha256:d256f90513d01ff6cbc2f17d88c0ccde65d138500df547ece214e6a50731c4b7 \
--hash=sha256:d62410e5f60a961cfda00ead8a1cc5fd37d052afda021099e488e90c15419beb \
--hash=sha256:e7e215d69ea21fd5824a63edf8fef933bee2c028a0c2930651cfa6b88ca4ff8e \
--hash=sha256:f2476dda35866ea3ded3a5905759da2d32dfac36dfd5b3428191a99a8ce15b02
# via -r contrib/container/requirements.in
wheel==0.47.0 \
--hash=sha256:212281cab4dff978f6cedd499cd893e1f620791ca6ff7107cf270781e587eced \

View File

@ -1,8 +1,8 @@
# This file was autogenerated by uv via the following command:
# uv pip compile contrib/dev_reqs/requirements.in -o contrib/dev_reqs/requirements.txt -c src/backend/requirements.txt
certifi==2026.5.20 \
--hash=sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 \
--hash=sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d
certifi==2026.6.17 \
--hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
--hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
# via
# -c src/backend/requirements.txt
# requests

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -63,3 +63,9 @@ Currency exchange rates are updated periodically, using the configured currency
## Pricing Settings
Refer to the [global settings](../settings/global.md#pricing-and-currency) documentation for more information on available currency settings.
## Rendering Currencies in Reports
Currency values can be rendered in report templates using the [`render_currency`](../report/helpers.md#render_currency) helper function. This function formats a currency amount according to a locale, and supports currency conversion within the template.
See the [report helpers documentation](../report/helpers.md#currency-formatting) for full details and examples.

View File

@ -91,6 +91,18 @@ Click on the navigation tree icon to expand the tree and view the available navi
{{ image("concepts/ui_navigation_tree.png", "Navigation Tree") }}
#### Searching
The navigation tree includes a search bar at the top of the panel. Typing into the search bar filters the tree to show only entries that match the search query. When a search is active, all matching results are expanded and displayed in a flat list. Clearing the search field returns the tree to its normal browsing mode.
#### Highlight Selected Entry
The currently selected entry in the navigation tree is highlighted with a distinct background color, making it easy to identify the active page or section within the hierarchy.
#### Auto-Expand to Selected Entry
When the navigation tree is opened, it automatically expands to reveal the currently selected entry. All ancestor nodes in the hierarchy are expanded so the active entry is immediately visible, without requiring manual navigation through the tree.
## Dashboard
The dashboard provides a customizable landing page for users when they log in to the system. The dashboard can be configured to display a variety of widgets and information panels, providing users with quick access to important data and actions.

View File

@ -320,15 +320,86 @@ The helper function `format_number` allows for some common number formatting opt
show_docstring_description: false
show_source: False
#### Example
#### Examples
```html
{% raw %}
{% load report %}
{% format_number 3.14159265359 decimal_places=5, leading=3 %}
<!-- output: 0003.14159 -->
<!-- Basic usage: strip trailing zeros -->
{% format_number 3.14159265359 decimal_places=5 %}
<!-- output: 3.14159 -->
<!-- Leading zeros with 'leading' option -->
{% format_number 3.14159265359 decimal_places=5 leading=3 %}
<!-- output: 003.14159 -->
<!-- Round to integer -->
{% format_number 3.14159265359 integer=True %}
<!-- output: 3 -->
<!-- Thousands separator -->
{% format_number 9988776.5 decimal_places=2 separator=True %}
<!-- output: 9,988,776.50 -->
<!-- Locale-aware formatting: decimal comma, dot thousands separator -->
{% format_number 9988776.5 decimal_places=2 separator=True locale='de-de' %}
<!-- output: 9.988.776,50 -->
<!-- Scale a value with a multiplier before formatting -->
{% format_number 0.175 multiplier=100 decimal_places=1 %}
<!-- output: 17.5 -->
<!-- Allow up to N significant decimal places, but suppress trailing zeros -->
{% format_number 1234.5 decimal_places=2 max_decimal_places=6 %}
<!-- output: 1234.5 -->
{% endraw %}
```
#### Custom Format Strings
The `fmt` argument accepts a [Unicode number pattern](https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns) string (the same syntax used by [Babel](https://babel.pocoo.org/en/latest/numbers.html)). When `fmt` is provided it takes complete priority over the `decimal_places`, `max_decimal_places`, `leading`, and `separator` arguments — those arguments are silently ignored.
The `integer` and `multiplier` arguments **are** still applied to the number before the format string is used.
| Symbol | Meaning |
| --- | --- |
| `0` | Required digit — always rendered, even if zero |
| `#` | Optional digit — suppressed when not significant |
| `,` | Grouping separator (position defines group size) |
| `.` | Decimal separator |
Common patterns:
| Pattern | Example output |
| --- | --- |
| `0` | `1235` |
| `#,##0` | `1,235` |
| `0.00` | `1234.57` |
| `#,##0.00` | `1,234.57` |
| `000` | `007` |
```html
{% raw %}
{% load report %}
<!-- Two decimal places, no grouping -->
{% format_number 1234.5678 fmt='0.00' %}
<!-- output: 1234.57 -->
<!-- Two decimal places with thousands separator -->
{% format_number 1234.5678 fmt='#,##0.00' %}
<!-- output: 1,234.57 -->
<!-- Same pattern, German locale: dot thousands, comma decimal -->
{% format_number 1234.5678 fmt='#,##0.00' locale='de-de' %}
<!-- output: 1.234,57 -->
<!-- Integer with thousands separator, large number -->
{% format_number 9988776655.4321 fmt='#,##0' integer=True %}
<!-- output: 9,988,776,655 -->
{% endraw %}
```
@ -336,6 +407,25 @@ The helper function `format_number` allows for some common number formatting opt
For rendering date and datetime information, the following helper functions are available:
Both functions resolve their output using the following priority order:
1. **`fmt=` argument** — a [strftime format string](https://docs.python.org/3/library/datetime.html#format-codes). When provided, this takes full priority; `locale` and `date_format` are ignored.
2. **`locale=` argument** — when no `fmt` is given, Babel formats the value using the style set by `date_format` (default `medium`).
3. **Server `LANGUAGE_CODE`** — used as the locale when no `locale=` argument is supplied.
#### Date Format Styles
The `date_format` argument controls how Babel renders the date when locale-aware formatting is used. The four named styles are:
| Style | `format_date` example (en-us, 2025-01-12) | `format_datetime` example (en-us, 2025-01-12 14:30) |
| --- | --- | --- |
| `full` | `Sunday, January 12, 2025` | `Sunday, January 12, 2025 at 2:30:00 PM UTC` |
| `long` | `January 12, 2025` | `January 12, 2025 at 2:30:00 PM UTC` |
| `medium` *(default)* | `Jan 12, 2025` | `Jan 12, 2025, 2:30:00 PM` |
| `short` | `1/12/25` | `1/12/25, 2:30 PM` |
The exact output varies by locale — the table above uses `en-us`.
### format_date
::: report.templatetags.report.format_date
@ -343,6 +433,35 @@ For rendering date and datetime information, the following helper functions are
show_docstring_description: false
show_source: False
#### Examples
```html
{% raw %}
{% load report %}
<!-- Default: medium style, locale from LANGUAGE_CODE -->
{% format_date my_date %}
<!-- output (en-us): Jan 12, 2025 -->
<!-- Explicit strftime format string — locale and date_format are ignored -->
{% format_date my_date fmt="%d/%m/%Y" %}
<!-- output: 12/01/2025 -->
<!-- Locale-aware, default medium style -->
{% format_date my_date locale='en-us' %}
<!-- output: Jan 12, 2025 -->
<!-- Short style -->
{% format_date my_date locale='en-us' date_format='short' %}
<!-- output: 1/12/25 -->
<!-- Full style -->
{% format_date my_date locale='en-us' date_format='full' %}
<!-- output: Sunday, January 12, 2025 -->
{% endraw %}
```
### format_datetime
::: report.templatetags.report.format_datetime
@ -350,20 +469,31 @@ For rendering date and datetime information, the following helper functions are
show_docstring_description: false
show_source: False
### Date Formatting
If not specified, these methods return a result which uses ISO formatting. Refer to the [datetime format codes](https://docs.python.org/3/library/datetime.html#format-codes) for more information! |
### Example
A simple example of using the date formatting helper functions:
#### Examples
```html
{% raw %}
{% load report %}
Date: {% format_date my_date timezone="Australia/Sydney" %}
Datetime: {% format_datetime my_datetime format="%d-%m-%Y %H:%M%S" %}
<!-- Default: medium style, locale from LANGUAGE_CODE -->
{% format_datetime my_datetime %}
<!-- output (en-us): Jan 12, 2025, 2:30:00 PM -->
<!-- Explicit strftime format — locale and date_format are ignored -->
{% format_datetime my_datetime fmt="%d-%m-%Y %H:%M" %}
<!-- output: 12-01-2025 14:30 -->
<!-- Locale-aware, default medium style -->
{% format_datetime my_datetime locale='en-us' %}
<!-- output: Jan 12, 2025, 2:30:00 PM -->
<!-- Short style -->
{% format_datetime my_datetime locale='de-de' date_format='short' %}
<!-- output: 12.01.25, 14:30 -->
<!-- Convert to a specific timezone before formatting -->
{% format_datetime my_datetime timezone="Australia/Sydney" locale='en-au' %}
{% endraw %}
```
@ -373,11 +503,115 @@ Datetime: {% format_datetime my_datetime format="%d-%m-%Y %H:%M%S" %}
The helper function `render_currency` allows for simple rendering of currency data. This function can also convert the specified amount of currency into a different target currency:
::: InvenTree.helpers_model.render_currency
::: report.templatetags.report.render_currency
options:
show_docstring_description: false
show_source: False
#### Decimal Places
When no decimal place arguments are provided, the locale/currency standard is used (e.g. 2 places for USD, 0 for JPY).
`decimal_places` and `max_decimal_places` work the same way as in [`format_number`](#format_number):
| Argument | Effect |
| --- | --- |
| `decimal_places=N` | Forces exactly N decimal digits (zero-padded) |
| `max_decimal_places=M` | Allows up to M decimal digits, suppressing trailing zeros beyond `decimal_places` |
| Both set | Forced minimum of `decimal_places`, optional up to `max_decimal_places` |
| Neither set | Locale/currency default (e.g. 2 for USD) |
```html
{% raw %}
{% load report %}
<!-- locale default for USD: 2 decimal places -->
{% render_currency order.total_price currency='USD' %}
<!-- output: $1,234.56 -->
<!-- force 3 decimal places -->
{% render_currency order.total_price currency='USD' decimal_places=3 %}
<!-- output: $1,234.560 -->
<!-- at least 2, up to 4 — trailing zeros beyond the value are suppressed -->
{% render_currency order.total_price currency='USD' decimal_places=2 max_decimal_places=4 %}
<!-- output: $1,234.5600 or $1,234.56 depending on the value -->
{% endraw %}
```
#### Locale and Symbol Rendering
The locale controls how the currency symbol and separators are rendered. For example, `USD 1234.56` with various locales:
| Locale | Output |
| --- | --- |
| `en-us` | `$1,234.56` |
| `en-gb` | `US$1,234.56` |
| `en-au` | `USD1,234.56` |
| `de-de` | `1.234,56 $` |
The locale is resolved in the following priority order:
1. **Explicit `locale=` argument** — highest priority, always wins
2. **Server `LANGUAGE_CODE`** — fallback
#### Leading Digits
The `leading` argument specifies the minimum number of digits to render before the decimal point (zero-padded). This works identically to `leading` in [`format_number`](#format_number):
```html
{% raw %}
{% load report %}
<!-- default: no padding -->
{% render_currency order.total_price currency='USD' %}
<!-- output: $1.23 -->
<!-- force at least 4 integer digits -->
{% render_currency order.total_price currency='USD' leading=4 %}
<!-- output: $0,001.23 -->
{% endraw %}
```
#### Custom Format Strings
The `fmt` argument accepts a [Unicode number pattern](https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns) string (same syntax as [`format_number`](#custom-format-strings)). **When `fmt` is provided, it takes complete priority over `decimal_places`, `max_decimal_places`, and `leading`** — those arguments are ignored.
The `locale`, `currency`, `multiplier`, and `include_symbol` arguments are still applied when `fmt` is set.
To include the currency symbol in a `fmt` pattern, use the `¤` placeholder. Without it, no symbol appears regardless of `include_symbol`.
| Pattern | Example output (en-us, USD) |
| --- | --- |
| `#,##0.00` | `1,234.56` (no symbol) |
| `¤#,##0.00` | `$1,234.56` |
| `¤#,##0.0000` | `$1,234.5600` |
| `¤ #,##0.00` | `$ 1,234.56` |
```html
{% raw %}
{% load report %}
<!-- No symbol (no ¤ in pattern) -->
{% render_currency order.total_price currency='USD' fmt='#,##0.00' %}
<!-- output: 1,234.56 -->
<!-- Symbol via ¤ placeholder -->
{% render_currency order.total_price currency='USD' fmt='¤#,##0.0000' locale='en-us' %}
<!-- output: $1,234.5600 -->
<!-- fmt + locale: de-de separators -->
{% render_currency order.total_price currency='USD' fmt='#,##0.00' locale='de-de' %}
<!-- output: 1.234,56 -->
<!-- fmt takes priority — decimal_places=2 is ignored -->
{% render_currency order.total_price currency='USD' fmt='0.0000' decimal_places=2 %}
<!-- output: 1234.5600 -->
{% endraw %}
```
#### Example
@ -392,8 +626,12 @@ The helper function `render_currency` allows for simple rendering of currency da
{% endfor %}
</ul>
<!-- Force 2 decimal places, convert to NZD -->
Total Price: {% render_currency order.total_price currency='NZD' decimal_places=2 %}
<!-- US-style symbol, regardless of server locale -->
Total Price: {% render_currency order.total_price currency='USD' locale='en-us' %}
{% endraw %}
```

View File

@ -28,9 +28,9 @@ bracex==2.6 \
--hash=sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952 \
--hash=sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7
# via wcmatch
certifi==2026.5.20 \
--hash=sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 \
--hash=sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d
certifi==2026.6.17 \
--hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
--hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
# via
# -c src/backend/requirements.txt
# httpcore

View File

@ -23,6 +23,7 @@ from rest_framework.serializers import ValidationError
from rest_framework.views import APIView
import InvenTree.config
import InvenTree.filters
import InvenTree.permissions
import InvenTree.version
from common.settings import get_global_setting
@ -963,3 +964,43 @@ def meta_path(model, lookup_field: str = 'pk', lookup_field_ref: str = 'pk'):
lookup_field_ref=lookup_field_ref,
),
)
class TreeMixin:
"""A mixin class for supporting tree-structured data in the API."""
# Any API view which inherits from this mixin must define a 'model_class' attribute
model_class = None
filter_backends = InvenTree.filters.SEARCH_ORDER_FILTER
search_fields = ['name', 'description']
ordering_fields = ['level', 'name', 'subcategories']
ordering_field_aliases = {'level': ['level', 'name'], 'name': ['name', 'level']}
ordering = ['level']
def filter_queryset(self, queryset):
"""Filter the queryset, and provide extra support for tree-structured data."""
queryset = super().filter_queryset(queryset)
# If a search term is provided, include all ancestors of matched items in the results
if self.request.query_params.get('search', '').strip():
ancestors = self.model_class.objects.get_queryset_ancestors(
queryset, include_self=True
)
queryset = queryset | ancestors
# If a specific ID is provided to "expand_to", include all ancestors and siblings
if expand_to := self.request.query_params.get('expand_to'):
try:
target = self.model_class.objects.get(pk=int(expand_to))
target_ancestors = target.get_ancestors(include_self=True)
queryset = queryset | target_ancestors
# We also want to include the "sibling" nodes of the expanded item
siblings = target.get_siblings(include_self=True)
queryset = queryset | siblings
except (self.model_class.DoesNotExist, ValueError):
pass
return queryset.distinct()

View File

@ -1,11 +1,20 @@
"""InvenTree API version information."""
# InvenTree API version
INVENTREE_API_VERSION = 508
INVENTREE_API_VERSION = 511
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
INVENTREE_API_TEXT = """
v511 -> 2026-06-19 : https://github.com/inventree/InvenTree/pull/12204
- Adds new filtering options to PartCategoryTree and StockLocationTree API endpoints
v510 -> 2026-06-18 : https://github.com/inventree/InvenTree/pull/12197
- Require "staff" access permissions for the machine restart API endpoint
v509 -> 2026-06-17 : https://github.com/inventree/InvenTree/pull/12184
- Adds "completed_row_count_history" and "row_count_history" fields to the DataImportSession model, which store the historic count of completed rows and total rows for a data import session.
v508 -> 2026-06-17 : https://github.com/inventree/InvenTree/pull/11982
- An order's "status_custom_key" can be updated via PATCH API endpoint

View File

@ -188,13 +188,10 @@ class InvenTreeConfig(AppConfig):
@ignore_ready_warning
def add_heartbeat(self):
"""Ensure there is at least one background task in the queue."""
import django_q.models
try:
if django_q.models.OrmQ.objects.count() == 0:
InvenTree.tasks.offload_task(
InvenTree.tasks.heartbeat, force_async=True, group='heartbeat'
)
InvenTree.tasks.offload_task(
InvenTree.tasks.heartbeat, force_async=True, group='heartbeat'
)
except AppRegistryNotReady: # pragma: no cover
pass
except Exception:

View File

@ -114,9 +114,12 @@ class RegistrationMixin:
"""
if registration_enabled(self.REGISTRATION_SETTING):
return True
logger.warning(
f'INVE-W12: Signup attempt blocked, because registration is disabled via setting {self.REGISTRATION_SETTING}.'
)
# Only warn when this is an actual signup submission, not when called as
# a feature-availability check during login or other auth flows.
if request and request.method == 'POST' and 'signup' in request.path:
logger.warning(
f'INVE-W12: Signup attempt blocked, because registration is disabled via setting {self.REGISTRATION_SETTING}.'
)
return False
def clean_email(self, email):

View File

@ -2,16 +2,9 @@
import re
import string
from typing import Optional
from django.conf import settings
from django.utils import translation
from django.utils.translation import gettext_lazy as _
from babel import Locale
from babel.numbers import parse_pattern
from djmoney.money import Money
def parse_format_string(fmt_string: str) -> dict:
"""Extract formatting information from the provided format string.
@ -180,43 +173,3 @@ def extract_named_group(name: str, value: str, fmt_string: str) -> str:
# And return the value we are interested in
# Note: This will raise an IndexError if the named group was not matched
return result.group(name)
def format_money(
money: Money,
decimal_places: Optional[int] = None,
fmt: Optional[str] = None,
include_symbol: bool = True,
) -> str:
"""Format money object according to the currently set local.
Args:
money (Money): The money object to format
decimal_places (int): Number of decimal places to use
fmt (str): Format pattern according LDML / the babel format pattern syntax (https://babel.pocoo.org/en/latest/numbers.html)
include_symbol (bool): Whether to include the currency symbol in the formatted output
Returns:
str: The formatted string
Raises:
ValueError: format string is incorrectly specified
"""
language = (None) or settings.LANGUAGE_CODE
locale = Locale.parse(translation.to_locale(language))
if fmt:
pattern = parse_pattern(fmt)
else:
pattern = locale.currency_formats['standard']
if decimal_places is not None:
pattern.frac_prec = (decimal_places, decimal_places)
result = pattern.apply(
money.amount,
locale,
currency=money.currency.code if include_symbol else '',
currency_digits=decimal_places is None,
decimal_quantization=decimal_places is not None,
)
return result

View File

@ -3,12 +3,10 @@
import io
import ipaddress
import socket
from decimal import Decimal
from typing import Optional, cast
from urllib.parse import urljoin, urlparse
from django.conf import settings
from django.core.exceptions import ValidationError
from django.core.validators import URLValidator
from django.db.utils import OperationalError, ProgrammingError
from django.utils.translation import gettext_lazy as _
@ -16,8 +14,6 @@ from django.utils.translation import gettext_lazy as _
import requests
import requests.exceptions
import structlog
from djmoney.contrib.exchange.models import convert_money
from djmoney.money import Money
from PIL import Image
from common.notifications import (
@ -31,7 +27,6 @@ from InvenTree.cache import (
get_session_cache,
set_session_cache,
)
from InvenTree.format import format_money
from InvenTree.ready import ignore_ready_warning
logger = structlog.get_logger('inventree')
@ -252,85 +247,6 @@ def download_image_from_url(
return img
def render_currency(
money: Money,
decimal_places: Optional[int] = None,
currency: Optional[str] = None,
multiplier: Optional[Decimal] = None,
min_decimal_places: Optional[int] = None,
max_decimal_places: Optional[int] = None,
include_symbol: bool = True,
):
"""Render a currency / Money object to a formatted string (e.g. for reports).
Arguments:
money: The Money instance to be rendered
decimal_places: The number of decimal places to render to. If unspecified, uses the PRICING_DECIMAL_PLACES setting.
currency: Optionally convert to the specified currency
multiplier: An optional multiplier to apply to the money amount before rendering
min_decimal_places: The minimum number of decimal places to render to. If unspecified, uses the PRICING_DECIMAL_PLACES_MIN setting.
max_decimal_places: The maximum number of decimal places to render to. If unspecified, uses the PRICING_DECIMAL_PLACES setting.
include_symbol: If True, include the currency symbol in the output
"""
if money in [None, '']:
return '-'
if type(money) is not Money:
# Try to convert to a Money object
try:
money = Money(
Decimal(str(money)),
currency or get_global_setting('INVENTREE_DEFAULT_CURRENCY'),
)
except Exception:
raise ValidationError(
f"render_currency: {_('Invalid money value')}: '{money}' ({type(money).__name__})"
)
if currency is not None:
# Attempt to convert to the provided currency
# If cannot be done, leave the original
try:
money = convert_money(money, currency)
except Exception:
pass
if multiplier is not None:
try:
money *= Decimal(str(multiplier).strip())
except Exception:
raise ValidationError(
f"render_currency: {_('Invalid multiplier value')}: '{multiplier}' ({type(multiplier).__name__})"
)
if min_decimal_places is None or not isinstance(min_decimal_places, (int, float)):
min_decimal_places = get_global_setting('PRICING_DECIMAL_PLACES_MIN', 0)
if max_decimal_places is None or not isinstance(max_decimal_places, (int, float)):
max_decimal_places = get_global_setting('PRICING_DECIMAL_PLACES', 6)
value = Decimal(str(money.amount)).normalize()
value = str(value)
if decimal_places is not None and isinstance(decimal_places, (int, float)):
# Decimal place count is provided, use it
pass
elif '.' in value:
# If the value has a decimal point, use the number of decimal places in the value
decimal_places = len(value.split('.')[-1])
else:
# No decimal point, use 2 as a default
decimal_places = 2
# Clip the decimal places to the specified range
decimal_places = max(decimal_places, min_decimal_places)
decimal_places = min(decimal_places, max_decimal_places)
return format_money(
money, decimal_places=decimal_places, include_symbol=include_symbol
)
@ignore_ready_warning
def getModelsWithMixin(mixin_class) -> list:
"""Return a list of database models that inherit from the given mixin class.

View File

@ -568,7 +568,7 @@ class InvenTreeParameterMixin(InvenTreePermissionCheckMixin, models.Model):
if 'parameters_list' in cache:
return cache['parameters_list']
return self.parameters_list.all()
return self.parameters_list.all().prefetch_related('template')
def delete(self, *args, **kwargs):
"""Handle the deletion of a model instance.

View File

@ -438,21 +438,30 @@ def scheduled_task(
@tracer.start_as_current_span('heartbeat')
@scheduled_task(ScheduledTask.MINUTES, 5)
@scheduled_task(ScheduledTask.MINUTES, 1)
def heartbeat():
"""Simple task which runs at 5 minute intervals, so we can determine that the background worker is actually running.
(There is probably a less "hacky" way of achieving this)?
"""
"""Simple task which runs at 1 minute intervals, so we can determine that the background worker is actually running."""
try:
from django_q.models import OrmQ, Success
except AppRegistryNotReady: # pragma: no cover
logger.info('Could not perform heartbeat task - App registry not ready')
return
threshold = timezone.now() - timedelta(minutes=30)
# Write a timestamp file so that health checks can verify worker liveness
# without needing to start a full Django process.
import tempfile
from pathlib import Path
# Delete heartbeat results more than half an hour old,
try:
Path(tempfile.gettempdir()).joinpath('inventree_worker_heartbeat').write_text(
str(timezone.now().timestamp())
)
except Exception:
pass
threshold = timezone.now() - timedelta(minutes=15)
# Delete heartbeat results more than 15 minutes old,
# otherwise they just create extra noise
heartbeats = Success.objects.filter(
func='InvenTree.tasks.heartbeat', started__lte=threshold

View File

@ -608,35 +608,6 @@ class FormatTest(TestCase):
with self.assertRaises(ValueError):
InvenTree.format.extract_named_group('test', 'PO-ABC-xyz', 'PO-###-{test}')
def test_currency_formatting(self):
"""Test that currency formatting works correctly for multiple currencies."""
test_data = (
(Money(3651.285718, 'USD'), 4, True, '$3,651.2857'),
(Money(487587.849178, 'CAD'), 5, True, 'CA$487,587.84918'),
(Money(0.348102, 'EUR'), 1, False, '0.3'),
(Money(0.916530, 'GBP'), 1, True, '£0.9'),
(Money(61.031024, 'JPY'), 3, False, '61.031'),
(Money(49609.694602, 'JPY'), 1, True, '¥49,609.7'),
(Money(155565.264777, 'AUD'), 2, False, '155,565.26'),
(Money(0.820437, 'CNY'), 4, True, 'CN¥0.8204'),
(Money(7587.849178, 'EUR'), 0, True, '€7,588'),
(Money(0.348102, 'GBP'), 3, False, '0.348'),
(Money(0.652923, 'CHF'), 0, True, 'CHF1'),
(Money(0.820437, 'CNY'), 1, True, 'CN¥0.8'),
(Money(98789.5295680, 'CHF'), 0, False, '98,790'),
(Money(0.585787, 'USD'), 1, True, '$0.6'),
(Money(0.690541, 'CAD'), 3, True, 'CA$0.691'),
(Money(427.814104, 'AUD'), 5, True, 'A$427.81410'),
)
with self.settings(LANGUAGE_CODE='en-us'):
for value, decimal_places, include_symbol, expected_result in test_data:
result = InvenTree.format.format_money(
value, decimal_places=decimal_places, include_symbol=include_symbol
)
self.assertEqual(result, expected_result)
class TestHelpers(TestCase):
"""Tests for InvenTree helper functions."""

View File

@ -395,9 +395,7 @@ class BuildList(
serializer = self.get_serializer(data=self.clean_data(request.data))
serializer.is_valid(raise_exception=True)
build = serializer.save()
build.issued_by = request.user
build.save()
serializer.save(issued_by=request.user)
headers = self.get_success_headers(serializer.data)
return Response(

View File

@ -479,9 +479,7 @@ class NotesImageList(ListCreateAPI):
def perform_create(self, serializer):
"""Create (upload) a new notes image."""
image = serializer.save()
image.user = self.request.user
image.save()
serializer.save(user=self.request.user)
class ProjectCodeList(DataExportViewMixin, ListCreateAPI):
@ -810,9 +808,7 @@ class AttachmentList(AttachmentMixin, BulkDeleteMixin, ListCreateAPI):
def perform_create(self, serializer):
"""Save the user information when a file is uploaded."""
attachment = serializer.save()
attachment.upload_user = self.request.user
attachment.save()
serializer.save(upload_user=self.request.user)
def validate_delete(self, queryset, request) -> None:
"""Ensure that the user has correct permissions for a bulk-delete.

View File

@ -4,6 +4,7 @@ import re
from django.core.exceptions import SuspiciousFileOperation, ValidationError
from django.core.files.storage import default_storage
from django.utils import translation
from django.utils.translation import gettext_lazy as _
import common.icons
@ -171,3 +172,17 @@ def validate_variable_string(value: str):
"""The passed value must be a valid variable identifier string."""
if not re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', value):
raise ValidationError(_('Value must be a valid variable identifier'))
def validate_locale(value: str):
"""Validate that the provided value is a valid locale string."""
from babel import Locale
from babel.core import UnknownLocaleError
if not value:
return
try:
Locale.parse(translation.to_locale(value))
except (UnknownLocaleError, ValueError) as e:
raise ValidationError(f"Invalid locale value: '{value}' - {e}")

View File

@ -0,0 +1,23 @@
# Generated by Django 5.2.15 on 2026-06-17 05:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('importer', '0006_dataimportcolumnmap_lookup_field'),
]
operations = [
migrations.AddField(
model_name='dataimportsession',
name='completed_row_count_history',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Completed Row Count History'),
),
migrations.AddField(
model_name='dataimportsession',
name='row_count_history',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Row Count History'),
),
]

View File

@ -385,7 +385,13 @@ class DataImportSession(models.Model):
if self.status != DataImportStatusCode.COMPLETE.value:
self.status = DataImportStatusCode.COMPLETE.value
# persist historic count values for reporting purposes
self.completed_row_count_history = self.completed_row_count
self.row_count_history = self.row_count
self.save()
# Clear staging data now that all rows have been imported
self.rows.all().delete()
self.column_mappings.all().delete()
@ -402,6 +408,14 @@ class DataImportSession(models.Model):
"""Return the number of completed rows for this session."""
return self.rows.filter(complete=True).count()
# Historic values for reporting purposes
completed_row_count_history = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Completed Row Count History')
)
row_count_history = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Row Count History')
)
def available_fields(self):
"""Returns information on the available fields.

View File

@ -62,6 +62,8 @@ class DataImportSessionSerializer(InvenTreeModelSerializer):
'field_filters',
'row_count',
'completed_row_count',
'completed_row_count_history',
'row_count_history',
]
read_only_fields = ['pk', 'user', 'status', 'columns']
@ -220,6 +222,8 @@ class DataImportAcceptRowSerializer(serializers.Serializer):
row.validate(commit=True, request=request)
if session := self.context.get('session', None):
# ensure current state is available
session.refresh_from_db()
session.check_complete()
return rows

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,7 @@
from django.urls import include, path, re_path
from drf_spectacular.utils import extend_schema
from rest_framework import permissions
from rest_framework.exceptions import NotFound
from rest_framework.response import Response
from rest_framework.views import APIView
@ -142,7 +143,10 @@ class MachineRestart(APIView):
- POST: restart machine by pk
"""
permission_classes = [InvenTree.permissions.IsAuthenticatedOrReadScope]
permission_classes = [
permissions.IsAuthenticated,
InvenTree.permissions.IsStaffOrReadOnlyScope,
]
@extend_schema(
request=None, responses={200: MachineSerializers.MachineRestartSerializer()}

View File

@ -287,14 +287,23 @@ class MachineAPITest(TestMachineRegistryMixin, InvenTreeAPITestCase):
active=True,
)
restart_url = reverse('api-machine-restart', kwargs={'pk': machine.pk})
# Non-staff users must not be able to restart a machine
self.user.is_staff = False
self.user.save()
self.post(restart_url, expected_code=403)
# Restore staff access
self.user.is_staff = True
self.user.save()
# verify machine status before restart
response = self.get(reverse('api-machine-detail', kwargs={'pk': machine.pk}))
self.assertEqual(response.data['status_text'], '')
# restart the machine
response = self.post(
reverse('api-machine-restart', kwargs={'pk': machine.pk}), expected_code=200
)
self.post(restart_url, expected_code=200)
# verify machine status after restart
response = self.get(reverse('api-machine-detail', kwargs={'pk': machine.pk}))

View File

@ -103,9 +103,7 @@ class OrderCreateMixin:
serializer = self.get_serializer(data=self.clean_data(request.data))
serializer.is_valid(raise_exception=True)
item = serializer.save()
item.created_by = request.user
item.save()
serializer.save(created_by=request.user)
headers = self.get_success_headers(serializer.data)
return Response(

View File

@ -20,7 +20,7 @@ class SalesOrderEvents(BaseEventEnum):
"""Event enumeration for the SalesOrder models."""
ISSUED = 'salesorder.issued'
HOLD = 'salesorder.onhold'
HOLD = 'salesorder.hold'
COMPLETED = 'salesorder.completed'
CANCELLED = 'salesorder.cancelled'

View File

@ -21,6 +21,7 @@ from InvenTree.api import (
BulkUpdateMixin,
ListCreateDestroyAPIView,
ParameterListMixin,
TreeMixin,
meta_path,
)
from InvenTree.fields import InvenTreeOutputOption, OutputConfiguration
@ -284,25 +285,38 @@ class CategoryDetail(CategoryMixin, OutputOptionsMixin, CustomRetrieveUpdateDest
)
class CategoryTree(ListAPI):
class CategoryTreeFilter(FilterSet):
"""Custom filterset class for the CategoryTree endpoint."""
class Meta:
"""Metaclass options for this filterset."""
model = PartCategory
fields = ['parent', 'tree_id', 'level']
max_level = rest_filters.NumberFilter(
label=_('Max Level'),
method='filter_max_level',
help_text=_('Limit the depth of the category tree'),
)
def filter_max_level(self, queryset, name, value):
"""Filter by the maximum depth of the category tree."""
return queryset.filter(level__lte=value)
class CategoryTree(TreeMixin, ListAPI):
"""API endpoint for accessing a list of PartCategory objects ready for rendering a tree."""
model_class = PartCategory
queryset = PartCategory.objects.all()
serializer_class = part_serializers.CategoryTree
filter_backends = ORDER_FILTER
ordering_fields = ['level', 'name', 'subcategories']
ordering_field_aliases = {'level': ['level', 'name'], 'name': ['name', 'level']}
# Order by tree level (top levels first) and then name
ordering = ['level', 'name']
serializer_class = part_serializers.CategoryTreeSerializer
filterset_class = CategoryTreeFilter
def get_queryset(self, *args, **kwargs):
"""Return an annotated queryset for the CategoryTree endpoint."""
queryset = super().get_queryset(*args, **kwargs)
queryset = part_serializers.CategoryTree.annotate_queryset(queryset)
queryset = part_serializers.CategoryTreeSerializer.annotate_queryset(queryset)
return queryset

View File

@ -181,14 +181,25 @@ class CategorySerializer(
parameters = common.filters.enable_parameters_filter()
class CategoryTree(InvenTree.serializers.InvenTreeModelSerializer):
class CategoryTreeSerializer(InvenTree.serializers.InvenTreeModelSerializer):
"""Serializer for PartCategory tree."""
class Meta:
"""Metaclass defining serializer fields."""
model = PartCategory
fields = ['pk', 'name', 'parent', 'icon', 'structural', 'subcategories']
fields = [
'pk',
'name',
'description',
'pathstring',
'parent',
'tree_id',
'level',
'icon',
'structural',
'subcategories',
]
subcategories = serializers.IntegerField(label=_('Subcategories'), read_only=True)

View File

@ -25,6 +25,7 @@ from pypdf import PdfWriter
import InvenTree.exceptions
import InvenTree.helpers
import InvenTree.models
import InvenTree.ready
import report.helpers
import report.validators
from common.models import DataOutput, RenderChoices, UpdatedUserMixin
@ -578,10 +579,10 @@ class ReportTemplate(TemplateUploadMixin, ReportTemplateBase):
raise ValidationError(msg)
except TemplateSyntaxError as e:
msg = _('Template syntax error')
output.mark_failure(msg)
output.mark_failure(str(e) or msg)
raise ValidationError(f'{msg}: {e!s}')
except ValidationError as e:
output.mark_failure(str(e))
output.mark_failure(','.join(e.messages))
raise e
except Exception as e:
msg = _('Error rendering report')
@ -617,10 +618,10 @@ class ReportTemplate(TemplateUploadMixin, ReportTemplateBase):
raise ValidationError(msg)
except TemplateSyntaxError as e:
msg = _('Template syntax error')
output.mark_failure(error=_('Template syntax error'))
output.mark_failure(error=str(e) or msg)
raise ValidationError(f'{msg}: {e!s}')
except ValidationError as e:
output.mark_failure(str(e))
output.mark_failure(', '.join(e.messages))
raise e
except Exception as e:
msg = _('Error rendering report')
@ -643,6 +644,13 @@ class ReportTemplate(TemplateUploadMixin, ReportTemplateBase):
# Something went wrong during the report generation process
log_report_error('ReportTemplate.print')
# If the error occurred in a worker thread, we do not want to raise an error,
# as this would cause the worker to retry the task indefinitely
if InvenTree.ready.isInWorkerThread():
return
# Raise a ValidationError with the error message
# This will be caught by the caller and displayed to the user
raise ValidationError({
'error': _('Error generating report'),
'detail': str(exc),
@ -677,6 +685,12 @@ class ReportTemplate(TemplateUploadMixin, ReportTemplateBase):
log_report_error('ReportTemplate.print')
msg = _('Error merging report outputs')
output.mark_failure(error=msg)
# If the error occurred in a worker thread, we do not want to raise an error,
# as this would cause the worker to retry the task indefinitely
if InvenTree.ready.isInWorkerThread():
return
raise ValidationError(msg)
# Save the generated report to the database

View File

@ -1,6 +1,7 @@
"""Custom template tags for report generation."""
import base64
import copy
import logging
import mimetypes
from datetime import date, datetime
@ -11,14 +12,22 @@ from typing import Any, Optional
from django import template
from django.apps.registry import apps
from django.conf import settings
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.exceptions import SuspiciousFileOperation, ValidationError
from django.core.files.storage import default_storage
from django.db.models import Model
from django.db.models.query import QuerySet
from django.utils import translation
from django.utils.safestring import SafeString, mark_safe
from django.utils.translation import gettext_lazy as _
from babel import Locale
from babel.core import UnknownLocaleError
from babel.dates import format_date as babel_format_date
from babel.dates import format_datetime as babel_format_datetime
from babel.numbers import format_decimal as babel_format_decimal
from babel.numbers import parse_pattern
from djmoney.contrib.exchange.exceptions import MissingRate
from djmoney.contrib.exchange.models import convert_money
from djmoney.money import Money
@ -40,6 +49,22 @@ register = template.Library()
logger = logging.getLogger('inventree')
def get_locale(locale: Optional[str] = None) -> Locale:
"""Resolve and return a babel Locale.
Args:
locale: Optional locale string (e.g. 'en-us'). Falls back to LANGUAGE_CODE.
Raises:
ValidationError: If the locale string is invalid.
"""
language = locale or settings.LANGUAGE_CODE
try:
return Locale.parse(translation.to_locale(language))
except (UnknownLocaleError, ValueError) as e:
raise ValidationError(f"Invalid locale '{language}' - {e}")
@register.simple_tag()
def order_queryset(queryset: QuerySet, *args) -> QuerySet:
"""Order a database queryset based on the provided arguments.
@ -461,7 +486,7 @@ def part_image(part: Part, preview: bool = False, thumbnail: bool = False, **kwa
TypeError: If provided part is not a Part instance
"""
if not part or not isinstance(part, Part):
raise TypeError(_('part_image tag requires a Part instance'))
raise ValidationError(_('part_image tag requires a Part instance'))
image_filename = InvenTree.helpers.image2name(part.image, preview, thumbnail)
@ -487,28 +512,22 @@ def parameter(
Returns:
A Parameter object, or the provided default value if not found
"""
if instance is None:
raise ValueError('parameter tag requires a valid Model instance')
if instance is None or not isinstance(instance, Model):
raise ValidationError('parameter tag requires a valid Model instance')
if not isinstance(instance, Model) or not hasattr(instance, 'parameters'):
raise TypeError("parameter tag requires a Model with 'parameters' attribute")
if not hasattr(instance, 'parameters'):
raise ValidationError(
"parameter tag requires a Model with 'parameters' attribute"
)
parameters = instance.parameters_list.all().prefetch_related('template')
# First try with exact match
if (
parameter := instance.parameters
.prefetch_related('template')
.filter(template__name=parameter_name)
.first()
):
if parameter := parameters.filter(template__name=parameter_name).first():
return parameter
# Next, try with case-insensitive match
if (
parameter := instance.parameters
.prefetch_related('template')
.filter(template__name__iexact=parameter_name)
.first()
):
if parameter := parameters.filter(template__name__iexact=parameter_name).first():
return parameter
return None
@ -778,9 +797,98 @@ def modulo(x: Any, y: Any, cast: Optional[type] = None) -> Any:
@register.simple_tag
def render_currency(money, **kwargs):
"""Render a currency / Money object."""
return InvenTree.helpers_model.render_currency(money, **kwargs)
def render_currency(
money: Money | str | int | float | Decimal,
decimal_places: Optional[int] = None,
currency: Optional[str] = None,
multiplier: Optional[Decimal] = None,
max_decimal_places: Optional[int] = None,
include_symbol: bool = True,
leading: Optional[int] = None,
fmt: Optional[str] = None,
locale: Optional[str] = None,
**kwargs,
) -> str:
"""Render a currency / Money object to a formatted string.
Arguments:
money: The Money instance to be rendered
currency: Optionally convert to the specified currency before rendering
multiplier: Optional multiplier to apply to the amount before rendering
decimal_places: Minimum (forced) decimal places, e.g. decimal_places=2 gives '.00'. Defaults to the locale/currency standard.
max_decimal_places: Maximum decimal places (optional digits beyond decimal_places), e.g. max_decimal_places=4 allows up to 4.
include_symbol: If True, include the currency symbol in the output
leading: Minimum number of leading digits to render before the decimal point (default = 1)
fmt: Optional Babel number pattern string. When provided, takes priority over all other formatting options.
locale: Optional locale override (e.g. 'en-us', 'de-de'). Defaults to server LANGUAGE_CODE.
"""
if money in [None, '']:
return '-'
# If the supplied value is *not* a Money instance, attempt to convert it into one
if not isinstance(money, Money):
try:
money = Money(
Decimal(str(money)),
currency or get_global_setting('INVENTREE_DEFAULT_CURRENCY'),
)
except Exception:
raise ValidationError(f'render_currency: invalid money value - {money!r}')
if currency is not None:
try:
money = convert_money(money, currency)
except Exception:
pass
if multiplier is not None:
try:
money *= Decimal(str(multiplier).strip())
except Exception:
raise ValidationError(
f'render_currency: invalid multiplier value - {multiplier!r}'
)
locale = get_locale(locale)
# If a custom fmt pattern is applied, that overrides other formatting options
if fmt:
pattern = parse_pattern(fmt)
return pattern.apply(
money.amount,
locale,
currency=money.currency.code if include_symbol else '',
currency_digits=False,
decimal_quantization=True,
)
pattern = copy.copy(locale.currency_formats['standard'])
if decimal_places is None or not isinstance(decimal_places, (int, float)):
decimal_places = get_global_setting('PRICING_DECIMAL_PLACES_MIN', 0)
if max_decimal_places is None or not isinstance(max_decimal_places, (int, float)):
max_decimal_places = get_global_setting('PRICING_DECIMAL_PLACES', 6)
pattern.frac_prec = (decimal_places, max(decimal_places, max_decimal_places))
if leading is not None:
try:
leading = int(leading) or 0
except (ValueError, TypeError):
leading = 0
if leading > 0:
min_int, max_int = pattern.int_prec
pattern.int_prec = (max(leading, min_int), max(leading, max_int))
return pattern.apply(
money.amount,
locale,
currency=money.currency.code if include_symbol else '',
currency_digits=decimal_places is None and max_decimal_places is None,
decimal_quantization=decimal_places is not None
or max_decimal_places is not None,
)
@register.simple_tag
@ -877,82 +985,109 @@ def render_html_text(text: str, **kwargs):
@register.simple_tag
def format_number(
number: int | float | Decimal,
decimal_places: Optional[int] = None,
multiplier: Optional[int | float | Decimal] = None,
integer: bool = False,
leading: int = 0,
separator: Optional[str] = None,
separator: bool = False,
leading: Optional[int] = None,
decimal_places: Optional[int] = None,
max_decimal_places: Optional[int] = None,
fmt: Optional[str] = None,
locale: Optional[str] = None,
**kwargs,
) -> str:
"""Render a number with optional formatting options.
Arguments:
number: The number to be formatted
decimal_places: Number of decimal places to render
multiplier: Optional multiplier to apply to the number before formatting
integer: Boolean, whether to render the number as an integer
leading: Number of leading zeros (default = 0)
separator: Character to use as a thousands separator (default = None)
separator: Boolean, whether to include a thousands separator
leading: Minimum number of leading digits to render (default = 1)
decimal_places: Number of decimal places to render (default = 0)
max_decimal_places: Maximum number of decimal places to render (default = 0)
separator:
fmt: Optional format string for the number - if provided, takes priority over 'decimal_places' and 'leading'
locale: Optional locale override (e.g. 'en-us', 'de-de'). When set, babel controls decimal and thousands separators.
"""
check_nulls('format_number', number)
# Check that the provided number is valid
try:
number = Decimal(str(number).strip())
except Exception:
# If the number cannot be converted to a Decimal, just return the original value
return str(number)
number = float(number)
if multiplier is not None:
number *= Decimal(str(multiplier).strip())
number *= multiplier
if integer:
# Convert to integer
number = Decimal(int(number))
number = int(number)
# Normalize the number (remove trailing zeroes)
number = number.normalize()
# Construct a formatting string for the number, based on the provided options
if not fmt:
fmt = '###,###,###,###,##0' # Default format string - this will be modified based on the provided options
if decimal_places is not None:
try:
decimal_places = int(decimal_places)
number = round(number, decimal_places)
except ValueError:
pass
# The 'leading' option specifies the minimum number of leading digits to render (not including decimal places)
if leading is not None:
try:
leading = int(leading) or 0
except (ValueError, TypeError):
leading = 0
# Re-encode, and normalize again
# Ensure that the output never uses scientific notation
value = Decimal(number)
value = (
value.quantize(Decimal(1))
if value == value.to_integral()
else value.normalize()
if leading > 1:
fmt = fmt[::-1].replace('#', '0', (leading - 1))[::-1]
if not bool(separator):
fmt = fmt.replace(',', '')
if decimal_places is not None or max_decimal_places is not None:
# Account for decimal places, if provided
try:
decimal_places = int(decimal_places) or 0
except (ValueError, TypeError):
decimal_places = 0
try:
max_decimal_places = int(max_decimal_places) or 0
except (ValueError, TypeError):
max_decimal_places = 0
fmt += '.' + '0' * decimal_places
if max_decimal_places > decimal_places:
fmt += '#' * (max_decimal_places - decimal_places)
elif not integer:
# No decimal places specified, allow any number of decimal places (up to the precision of the Decimal)
fmt += '.####################'
babel_locale = get_locale(locale)
return babel_format_decimal(
number, format=fmt, locale=babel_locale, numbering_system='latn'
)
if separator:
value = f'{value:,}'
value = value.replace(',', separator)
else:
value = f'{value}'
if leading is not None:
try:
leading = int(leading)
value = '0' * leading + value
except ValueError:
pass
return value
@register.simple_tag
def format_datetime(
dt: datetime, timezone: Optional[str] = None, fmt: Optional[str] = None
dt: datetime,
timezone: Optional[str] = None,
fmt: Optional[str] = None,
locale: Optional[str] = None,
date_format: str = 'medium',
**kwargs,
):
"""Format a datetime object for display.
Arguments:
dt: The datetime object to format
timezone: The timezone to use for the date (defaults to the server timezone)
fmt: The format string to use (defaults to ISO formatting)
fmt: The strftime format string to use. When provided, takes priority over locale and date_format.
locale: Optional locale override (e.g. 'en-us', 'de-de'). Used for locale-aware formatting when no fmt is given.
date_format: Babel date format style. One of 'full', 'long', 'medium' (default), 'short'.
"""
check_nulls('format_datetime', dt)
@ -960,18 +1095,27 @@ def format_datetime(
if fmt:
return dt.strftime(fmt)
else:
return dt.isoformat()
return babel_format_datetime(dt, format=date_format, locale=get_locale(locale))
@register.simple_tag
def format_date(dt: date, timezone: Optional[str] = None, fmt: Optional[str] = None):
def format_date(
dt: date,
timezone: Optional[str] = None,
fmt: Optional[str] = None,
locale: Optional[str] = None,
date_format: str = 'medium',
**kwargs,
):
"""Format a date object for display.
Arguments:
dt: The date to format
timezone: The timezone to use for the date (defaults to the server timezone)
fmt: The format string to use (defaults to ISO formatting)
fmt: The strftime format string to use. When provided, takes priority over locale and date_format.
locale: Optional locale override (e.g. 'en-us', 'de-de'). Used for locale-aware formatting when no fmt is given.
date_format: Babel date format style. One of 'full', 'long', 'medium' (default), 'short'.
"""
check_nulls('format_date', dt)
@ -982,8 +1126,8 @@ def format_date(dt: date, timezone: Optional[str] = None, fmt: Optional[str] = N
if fmt:
return dt.strftime(fmt)
else:
return dt.isoformat()
return babel_format_date(dt, format=date_format, locale=get_locale(locale))
@register.simple_tag()

View File

@ -14,8 +14,9 @@ from djmoney.money import Money
from PIL import Image
from common.models import InvenTreeSetting, Parameter, ParameterTemplate
from common.settings import set_global_setting
from InvenTree.unit_test import InvenTreeTestCase
from part.models import Part # TODO fix import: PartParameter, PartParameterTemplate
from part.models import Part
from part.test_api import PartImageTestMixin
from report.templatetags import barcode as barcode_tags
from report.templatetags import report as report_tags
@ -184,7 +185,7 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
def test_part_image(self):
"""Unit tests for the 'part_image' tag."""
with self.assertRaises(TypeError):
with self.assertRaises(ValidationError):
report_tags.part_image(None)
obj = Part.objects.create(name='test', description='test')
@ -359,26 +360,60 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
for x in ['10.000000', ' 10 ', 10.000000, 10]:
self.assertEqual(fn(x), '10')
# Test with various formatting options
self.assertEqual(fn(1234), '1234')
self.assertEqual(fn(1234.5678, decimal_places=0), '1235')
self.assertEqual(fn(1234.5678, decimal_places=0, separator=True), '1,235')
self.assertEqual(fn(1234.5678, decimal_places=1), '1234.6')
self.assertEqual(fn(1234.5678, decimal_places=2), '1234.57')
self.assertEqual(fn(1234.5678, decimal_places=3), '1234.568')
self.assertEqual(fn(-9999.5678, decimal_places=2, separator=','), '-9,999.57')
self.assertEqual(
fn(9988776655.4321, integer=True, separator=' '), '9 988 776 655'
fn(1234.5678, decimal_places=2, max_decimal_places=10), '1234.5678'
)
self.assertEqual(fn(1234.5678, decimal_places=3), '1234.568')
self.assertEqual(fn(-9999.5678, decimal_places=2, locale='fr-fr'), '-9999,57')
self.assertEqual(
fn(-9999.5678, decimal_places=2, locale='fr-fr', separator=True),
'-9\u202f999,57',
)
self.assertEqual(
fn(9988776655.4321, integer=True, locale='de-de', separator=True),
'9.988.776.655',
)
# Test with 'leading' option
self.assertEqual(fn(5, leading=3), '005')
self.assertEqual(fn(123, leading=5), '00123')
self.assertEqual(fn(1234, leading=2, decimal_places=4), '1234.0000')
# Test with custom 'fmt' format string (takes priority over decimal_places / separator)
self.assertEqual(fn(1234.5678, fmt='0.00'), '1234.57')
self.assertEqual(fn(1234.5678, fmt='#,##0.00'), '1,234.57')
self.assertEqual(fn(1234.5678, fmt='0.00', locale='de-de'), '1234,57')
self.assertEqual(fn(1234.5678, fmt='#,##0.00', locale='de-de'), '1.234,57')
# fmt bypasses decimal_places and separator options
self.assertEqual(
fn(1234.5678, fmt='0.00', decimal_places=4, separator=True), '1234.57'
)
# integer conversion still applies before fmt is used
self.assertEqual(
fn(9988776655.4321, fmt='#,##0', integer=True), '9,988,776,655'
)
# multiplier is applied before fmt is used
self.assertEqual(fn(100, fmt='0.00', multiplier=1.5), '150.00')
# Test with multiplier
self.assertEqual(fn(1000, multiplier=1.5), '1500')
# Failure cases
self.assertEqual(fn('abc'), 'abc')
self.assertEqual(fn(1234.456, decimal_places='a'), '1234.456')
self.assertEqual(fn(1234.456, decimal_places='a'), '1234')
self.assertEqual(
fn(1234.456, decimal_places='a', separator=True, locale='en-au'), '1,234'
)
self.assertEqual(fn(1234.456, leading='a'), '1234.456')
@override_settings(TIME_ZONE='America/New_York')
def test_date_tags(self):
def test_datetime_tags(self):
"""Test for date formatting tags.
- Source timezone is Australia/Sydney
@ -394,18 +429,21 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
tzinfo=ZoneInfo('Australia/Sydney'),
)
# Format a set of tests: timezone, format, expected
# Format a set of tests: timezone, format, locale, expected
tests = [
(None, None, '2024-03-12T21:30:00-04:00'),
(None, '%d-%m-%y', '12-03-24'),
('UTC', None, '2024-03-13T01:30:00+00:00'),
('UTC', '%d-%B-%Y', '13-March-2024'),
('Europe/Amsterdam', None, '2024-03-13T02:30:00+01:00'),
('Europe/Amsterdam', '%y-%m-%d %H:%M', '24-03-13 02:30'),
(None, None, 'en-us', 'Mar 12, 2024, 9:30:00PM'), # noqa: RUF001
(None, '%d-%m-%y', 'en-us', '12-03-24'),
('UTC', None, 'en-us', 'Mar 13, 2024, 1:30:00AM'), # noqa: RUF001
('UTC', '%d-%B-%Y', 'en-us', '13-March-2024'),
('Europe/Amsterdam', None, 'de-de', '13.03.2024, 02:30:00'),
('Europe/Amsterdam', '%y-%m-%d %H:%M', 'de-de', '24-03-13 02:30'),
]
for tz, fmt, expected in tests:
result = report_tags.format_datetime(time, tz, fmt)
for tz, fmt, locale, expected in tests:
print(tz, fmt, locale, expected)
result = report_tags.format_datetime(
time, timezone=tz, fmt=fmt, locale=locale
)
self.assertEqual(result, expected)
def test_icon(self):
@ -502,11 +540,11 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
self.assertEqual(report_tags.parameter(part, 'Template 1'), parameter)
# Test with a null part
with self.assertRaises(ValueError):
with self.assertRaises(ValidationError):
report_tags.parameter(None, 'name')
# Test with an invalid model type
with self.assertRaises(TypeError):
with self.assertRaises(ValidationError):
report_tags.parameter(parameter, 'name')
def test_render_currency(self):
@ -519,21 +557,24 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
self.assertEqual(report_tags.render_currency(m, decimal_places=3), '$1,234.560')
self.assertEqual(
report_tags.render_currency(
Money(1234, 'USD'), currency='EUR', min_decimal_places=3
Money(1234, 'USD'), currency='EUR', decimal_places=3
),
'$1,234.000',
)
set_global_setting('PRICING_DECIMAL_PLACES_MIN', 2)
self.assertEqual(
report_tags.render_currency(
Money(1234, 'USD'), currency='EUR', max_decimal_places=1
),
'$1,234.0',
'$1,234.00',
)
# Test with non-currency values
self.assertEqual(
report_tags.render_currency(1234.45, currency='USD', decimal_places=2),
'$1,234.45',
report_tags.render_currency(1234.45, currency='USD', decimal_places=5),
'$1,234.45000',
)
# Test with an invalid amount
@ -544,9 +585,101 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
report_tags.render_currency(m, multiplier='quork')
self.assertEqual(report_tags.render_currency(m, decimal_places='a'), exp_m)
self.assertEqual(report_tags.render_currency(m, min_decimal_places='a'), exp_m)
self.assertEqual(report_tags.render_currency(m, max_decimal_places='a'), exp_m)
# Test locale override — different locales render USD differently
self.assertEqual(report_tags.render_currency(m, locale='en-us'), '$1,234.56')
self.assertEqual(report_tags.render_currency(m, locale='en-gb'), 'US$1,234.56')
self.assertEqual(report_tags.render_currency(m, locale='en-au'), 'USD1,234.56')
# Test with custom fmt pattern
# Pattern without currency placeholder — no symbol in output
self.assertEqual(report_tags.render_currency(m, fmt='#,##0.00'), '1,234.56')
# Pattern with currency placeholder — symbol rendered per locale
self.assertEqual(
report_tags.render_currency(m, fmt='¤#,##0.0000', locale='en-us'),
'$1,234.5600',
)
# fmt + locale: de-de uses dot thousands, comma decimal
self.assertEqual(
report_tags.render_currency(m, fmt='#,##0.00', locale='de-de'), '1.234,56'
)
# fmt takes priority over decimal_places
self.assertEqual(
report_tags.render_currency(m, fmt='0.0000', decimal_places=2), '1234.5600'
)
# Test leading digits
m_small = Money(1.23, 'USD')
self.assertEqual(
report_tags.render_currency(m_small, leading=4, locale='en-us'), '$0,001.23'
)
# leading=1 is the default — no change
self.assertEqual(
report_tags.render_currency(m_small, leading=1, locale='en-us'), '$1.23'
)
# invalid leading falls back gracefully
self.assertEqual(
report_tags.render_currency(m_small, leading='x', locale='en-us'), '$1.23'
)
# fmt takes priority over leading
self.assertEqual(
report_tags.render_currency(m_small, leading=6, fmt='#,##0.00'), '1.23'
)
# Test include_symbol
# Default (True) — symbol present
self.assertEqual(report_tags.render_currency(m, locale='en-us'), '$1,234.56')
# Explicit False — symbol suppressed
self.assertEqual(
report_tags.render_currency(m, include_symbol=False, locale='en-us'),
'1,234.56',
)
# include_symbol=False with fmt containing ¤ — ¤ renders as empty string
self.assertEqual(
report_tags.render_currency(
m, include_symbol=False, fmt='¤#,##0.00', locale='en-us'
),
'1,234.56',
)
# include_symbol=False with fmt lacking ¤ — no symbol either way
self.assertEqual(
report_tags.render_currency(
m, include_symbol=False, fmt='#,##0.00', locale='en-us'
),
'1,234.56',
)
def test_render_currency_locale_override(self):
"""Explicit locale= kwarg takes priority over global setting and system locale."""
m = Money(1234.56, 'USD')
# Explicit locale overrides system LANGUAGE_CODE
with override_settings(LANGUAGE_CODE='en-au'):
self.assertEqual(
report_tags.render_currency(m, locale='en-us'), '$1,234.56'
)
self.assertEqual(
report_tags.render_currency(m, locale='en-gb'), 'US$1,234.56'
)
# Invalid locale raises ValidationError regardless of other settings
with self.assertRaises(ValidationError):
report_tags.render_currency(m, locale='xx-zz')
def test_render_currency_system_locale(self):
"""render_currency uses system LANGUAGE_CODE when no explicit locale= is passed."""
m = Money(1234.56, 'USD')
with override_settings(LANGUAGE_CODE='en-us'):
self.assertEqual(report_tags.render_currency(m), '$1,234.56')
with override_settings(LANGUAGE_CODE='en-gb'):
self.assertEqual(report_tags.render_currency(m), 'US$1,234.56')
with override_settings(LANGUAGE_CODE='en-au'):
self.assertEqual(report_tags.render_currency(m), 'USD1,234.56')
def test_create_currency(self):
"""Test the create_currency template tag."""
m = report_tags.create_currency(1000, 'USD')
@ -618,14 +751,94 @@ class ReportTagTest(PartImageTestMixin, InvenTreeTestCase):
def test_format_date(self):
"""Test the format_date template tag."""
# Test with a valid date
date = timezone.datetime(year=2024, month=3, day=13)
self.assertEqual(report_tags.format_date(date), '2024-03-13')
self.assertEqual(report_tags.format_date(date, fmt='%d-%m-%y'), '13-03-24')
dt = timezone.datetime(year=2024, month=3, day=13)
self.assertEqual(report_tags.format_date(dt, locale='de-de'), '13.03.2024')
self.assertEqual(report_tags.format_date(dt, locale='en-us'), 'Mar 13, 2024')
self.assertEqual(report_tags.format_date(dt, locale='en-au'), '13 Mar 2024')
self.assertEqual(report_tags.format_date(dt, locale='fr-fr'), '13 mars 2024')
self.assertEqual(report_tags.format_date(dt, fmt='%d-%m-%y'), '13-03-24')
# Test with an invalid date
self.assertEqual(report_tags.format_date('abc'), 'abc')
self.assertEqual(report_tags.format_date(date, fmt='a'), 'a')
self.assertEqual(report_tags.format_date(dt, fmt='a'), 'a')
# Explicit fmt always wins over locale
self.assertEqual(
report_tags.format_date(dt, fmt='%Y-%m-%d', locale='de-de'), '2024-03-13'
)
# Falls back to LANGUAGE_CODE when no locale= arg
with override_settings(LANGUAGE_CODE='en-us'):
self.assertEqual(report_tags.format_date(dt), 'Mar 13, 2024')
# date_format controls the Babel style
self.assertEqual(
report_tags.format_date(dt, locale='en-us', date_format='short'), '3/13/24'
)
self.assertEqual(
report_tags.format_date(dt, locale='en-us', date_format='long'),
'March 13, 2024',
)
self.assertEqual(
report_tags.format_date(dt, locale='en-us', date_format='full'),
'Wednesday, March 13, 2024',
)
# fmt= wins over date_format=
self.assertEqual(
report_tags.format_date(dt, fmt='%Y', locale='en-us', date_format='full'),
'2024',
)
# Invalid locale raises ValidationError
with self.assertRaises(ValidationError):
report_tags.format_date(dt, locale='xx-zz')
def test_format_datetime(self):
"""Test that format_datetime renders locale-aware output."""
from zoneinfo import ZoneInfo
dt = timezone.datetime(2026, 6, 19, 15, 30, 0, tzinfo=ZoneInfo('UTC'))
self.assertEqual(
report_tags.format_datetime(dt, locale='en-us'),
'Jun 19, 2026, 3:30:00PM', # noqa: RUF001
)
self.assertEqual(
report_tags.format_datetime(dt, locale='de-de'), '19.06.2026, 15:30:00'
)
# Explicit fmt still wins
self.assertEqual(
report_tags.format_datetime(dt, fmt='%Y-%m-%d', locale='de-de'),
'2026-06-19',
)
# Falls back to LANGUAGE_CODE when no locale= arg
with override_settings(LANGUAGE_CODE='de-de'):
self.assertEqual(report_tags.format_datetime(dt), '19.06.2026, 15:30:00')
# date_format controls the Babel style
self.assertEqual(
report_tags.format_datetime(dt, locale='de-de', date_format='short'),
'19.06.26, 15:30',
)
self.assertEqual(
report_tags.format_datetime(dt, locale='de-de', date_format='long'),
'19. Juni 2026, 15:30:00 UTC', # codespell:ignore "Juni"
)
# fmt= wins over date_format=
self.assertEqual(
report_tags.format_datetime(
dt, fmt='%H:%M', locale='en-us', date_format='full'
),
'15:30',
)
# Invalid locale raises ValidationError
with self.assertRaises(ValidationError):
report_tags.format_datetime(dt, locale='xx-zz')
class BarcodeTagTest(TestCase):

View File

@ -34,11 +34,11 @@ from InvenTree.api import (
BulkCreateMixin,
BulkUpdateMixin,
ListCreateDestroyAPIView,
TreeMixin,
meta_path,
)
from InvenTree.fields import InvenTreeOutputOption, OutputConfiguration
from InvenTree.filters import (
ORDER_FILTER,
SEARCH_ORDER_FILTER,
InvenTreeDateFilter,
NumberOrNullFilter,
@ -456,20 +456,33 @@ class StockLocationDetail(
)
class StockLocationTree(ListAPI):
class LocationTreeFilter(FilterSet):
"""Custom filterset class for the StockLocationTree endpoint."""
class Meta:
"""Metaclass options for this filterset."""
model = StockLocation
fields = ['parent', 'tree_id', 'level']
max_level = rest_filters.NumberFilter(
label=_('Max Level'),
method='filter_max_level',
help_text=_('Limit the depth of the category tree'),
)
def filter_max_level(self, queryset, name, value):
"""Filter by the maximum depth of the category tree."""
return queryset.filter(level__lte=value)
class StockLocationTree(TreeMixin, ListAPI):
"""API endpoint for accessing a list of StockLocation objects, ready for rendering as a tree."""
model_class = StockLocation
queryset = StockLocation.objects.all()
serializer_class = StockSerializers.LocationTreeSerializer
filter_backends = ORDER_FILTER
ordering_fields = ['level', 'name', 'sublocations']
# Order by tree level (top levels first) and then name
ordering = ['level', 'name']
ordering_field_aliases = {'level': ['level', 'name'], 'name': ['name', 'level']}
filterset_class = LocationTreeFilter
def get_queryset(self, *args, **kwargs):
"""Return annotated queryset for the StockLocationTree endpoint."""
@ -1513,10 +1526,7 @@ class StockItemTestResultList(
Also, check if an attachment was uploaded alongside the test result,
and save it to the database if it were.
"""
# Capture the user information
test_result = serializer.save()
test_result.user = self.request.user
test_result.save()
serializer.save(user=self.request.user)
class StockTrackingDetail(RetrieveAPI):
@ -1665,32 +1675,6 @@ class StockTrackingList(
return Response(data)
def create(self, request, *args, **kwargs):
"""Create a new StockItemTracking object.
Here we override the default 'create' implementation,
to save the user information associated with the request object.
"""
# Clean up input data
data = self.clean_data(request.data)
serializer = self.get_serializer(data=data)
serializer.is_valid(raise_exception=True)
# Record the user who created this Part object
item = serializer.save()
item.user = request.user
item.system = False
# quantity field cannot be explicitly adjusted here
item.quantity = item.item.quantity
item.save()
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data, status=status.HTTP_201_CREATED, headers=headers
)
filter_backends = SEARCH_ORDER_FILTER
ordering = '-date'

View File

@ -1160,7 +1160,18 @@ class LocationTreeSerializer(InvenTree.serializers.InvenTreeModelSerializer):
"""Metaclass options."""
model = StockLocation
fields = ['pk', 'name', 'parent', 'icon', 'structural', 'sublocations']
fields = [
'pk',
'name',
'description',
'pathstring',
'parent',
'tree_id',
'level',
'icon',
'structural',
'sublocations',
]
sublocations = serializers.IntegerField(label=_('Sublocations'), read_only=True)

View File

@ -101,16 +101,16 @@ blessed==1.44.0 \
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
boto3==1.43.23 \
--hash=sha256:5d26498702ffd021dc0d57d0eefcc7101cd995ea0ed08c057c9b631efccbaa48 \
--hash=sha256:8afc058924ef8a5c62467fe2e1e2e0304c22018587a044714da89f9c602ba856
boto3==1.43.34 \
--hash=sha256:42595057324606928c6e2432b3093978e4d722e0d432bce942f2a385702c0a43 \
--hash=sha256:444207c6c883d4df3ea3b2c36df43ad492b86e0b889eebd2fc1d5ea8db0a8a1a
# via
# -c src/backend/requirements.txt
# django-anymail
# django-storages
botocore==1.43.23 \
--hash=sha256:69ff3d951cb644d1d84db646663c7eb919dc9c0c47e5768e947c8a71121b3d77 \
--hash=sha256:a6737c598750f330bfa8ef2be2d9fa84b5d2d643b6bbb0d22e129e03b7535df1
botocore==1.43.34 \
--hash=sha256:238a0269f33c5914b9343900b44767e783b3e8b6dcb6e065eac8b4495601c5df \
--hash=sha256:ccc973cf30c6445b30afe5760f6dc949a80f1f862cb23d9c45747f2c814ece77
# via
# -c src/backend/requirements.txt
# boto3
@ -219,9 +219,9 @@ brotli==1.2.0 \
# via
# -c src/backend/requirements.txt
# fonttools
certifi==2026.5.20 \
--hash=sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 \
--hash=sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d
certifi==2026.6.17 \
--hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
--hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
# via
# -c src/backend/requirements.txt
# requests
@ -614,9 +614,9 @@ django-ipware==7.0.1 \
# via
# -c src/backend/requirements.txt
# django-structlog
django-js-asset==3.1.2 \
--hash=sha256:1fc7584199ed1941ed7c8e7b87ca5524bb0f2ba941561d2a104e88ee9f07bedd \
--hash=sha256:b5ffe376aebbd73b7af886d675ac9f43ca63b39540190fa8409c9f8e79145f68
django-js-asset==4.0.1 \
--hash=sha256:51ad1060115bf741bef88dc1287ca7f70e1d6ea7cf935f52a34f39eca9bd9db1 \
--hash=sha256:967ac7d95ce094d9f65f358278bcd494201e2f9bbee936430150de83eac9f656
# via
# -c src/backend/requirements.txt
# django-mptt
@ -637,9 +637,9 @@ django-markdownify==0.9.7 \
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
django-money==3.6.0 \
--hash=sha256:94402f2831f2726b94ef2da35b4059441b4c0aedfc47b312472200d4ffdf8d73 \
--hash=sha256:a8d249bf3ce6ad7fb953530c920cc85ea7f1137c0fde747a74204ea24ec97ab1
django-money==3.6.1 \
--hash=sha256:32a8027a91dea969951a34a9cc4a4f101aaa6ec45e7f784f0b17ec7813818fb2 \
--hash=sha256:9b25d992a457af932eef1e5fef0098dd3ff0c92f4255d2d6d452af772b2fdde5
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
@ -899,58 +899,58 @@ googleapis-common-protos==1.75.0 \
# -c src/backend/requirements.txt
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
grpcio==1.81.0 \
--hash=sha256:0fba53cb96004b2b7fb758b46b2288cb49d0b658316a4e73f3ef67230616ee65 \
--hash=sha256:194eddfacc84d80f50512e9fd4ee851d5f2499f18f299c95aa8fb4748f0537e0 \
--hash=sha256:19f201da7b4e5c0559198abe5a97157e726f3abe6e8f5e832d4a50740f6dcc22 \
--hash=sha256:21ec30b9ea320c8207ea7cd05873ad64aa69fdd0e81b6758b3347983ba20b50a \
--hash=sha256:275144b0115353339dbb8a6f28a9cf8997b5bf40e37f8f66ac0b0ea57e95b43f \
--hash=sha256:300f3337b6425fd16ead9a4f9b2ac25801acb64aa5bc0b99eb69901645b2b1d2 \
--hash=sha256:3755c9669307cad18e7e009860fdea98118978d2300451bd8530a53048e741e7 \
--hash=sha256:3d4e0ce5a40a998cf608c8ba60ecfe18fdf364a9aa193ae4ac3faeecd0e86757 \
--hash=sha256:40edffb4ec3689373825d367c4457727047a6e554f03245265ecc8cc03215f22 \
--hash=sha256:43c121e135ae44d1559b430db2b2dfad7421cbbe40e1deba506c7dc62b439719 \
--hash=sha256:4e032feb3bfb4e2749b140a2302a6baa8ead1b9781ff5cf7094e4402b5e9372e \
--hash=sha256:5192857589f223e5a98ff0e31f6e551b19040e647d17bfe10116c8a2ce3b8696 \
--hash=sha256:57b3b0e73a518fa286959b40c3eddd02703504ca186e8b7b2945954519bd8b2c \
--hash=sha256:5e925a70fe99fe5794f7beca0ea034c75f068afcc356d79047e73f99cdcca34c \
--hash=sha256:62bbe463c9f0f2ff24e31bd25f8dd8b4bae78900e315915a3195a0ef1471a855 \
--hash=sha256:638ccc1b86f7540170a169cb900799b9296a1381e47879ce60b0de9d3db73d33 \
--hash=sha256:725801c7086d7e4cd160e42bb2f54e0aeb976b9568df3cc6f843b15d29b79fb1 \
--hash=sha256:77eb4e9fe61486bd1198cc7236ebb0f70e66234e63c0348f40bc2553ed16a88b \
--hash=sha256:7915a2e63acdc05264a206e1bddfd8e1fb8a29e406c18d72d30f8c124e021374 \
--hash=sha256:794e6aa648e8df47d8f908dc8c3b42347d04ec58438f1dcd4e445f09b4f6b0ce \
--hash=sha256:8226ba097eed660ef14d36c6a69b85038552bb8b6d17b44a5aa6f9abf48b8e08 \
--hash=sha256:87e33b7afcfb3585121b5f007d2c52b8c534104d18f556e840d35193ca2a9141 \
--hash=sha256:8bb1789c94322a13336a2b6c58d9c14d68f8628b6e24205a799c69f5bf8516ce \
--hash=sha256:8c0855a350886f713b9e458e2a10d208009dcaa849f574e39cd6067db1fe1279 \
--hash=sha256:909bb3222b53235498d2c5817a0596d82b0aaea490ba93fdf1b060e2938a543c \
--hash=sha256:97bbd623f7ded558fd4f7cb5a4f600c4d4de65c5dd364c83a5b14b2a10a2d3b5 \
--hash=sha256:98c6240f563178fc5877bd50e6ff274463e53e1472128f4110742450739659fa \
--hash=sha256:9f355384e5543ab77a755a7085225ecc19f32b76032e851cbd8145715d79dec8 \
--hash=sha256:a524cd530900bd24511fcb7f2ed144da4ea37711c4b094475d0bceca7a93a170 \
--hash=sha256:a5acd7efd3b1fe9b4eb0bcaaa1507eed68a0ad0678b654c3f7b464df9ba9dca5 \
--hash=sha256:a9351055f52660b58f3d4890ea66188b5134399f82b11aa0c55bd4b99eff5390 \
--hash=sha256:aa948712c8e5fa40ec250870bda14bc7578e1bb832a8912d9d2a0f720518edbe \
--hash=sha256:aaaa4f7f2057d795952e4eacf3f342be8b5b156992f6ac85023c8b98794ebd47 \
--hash=sha256:b4108e5d9d0f651b7eea749116181fe6c315b145661a80ec31f05ec2dbe21af7 \
--hash=sha256:b76ea9d55cd08fcdbda25d28e0f76679536710acb7fbd5b1f70cb4ac49317265 \
--hash=sha256:b8b025b6af43ee0ad4a70307025d77bcab5adde7c4597786010d802c203e9fc5 \
--hash=sha256:b93cee313cae4e113fbb3a0ce1ea5633db6f63cfde2b2dc1d817429026b2a50b \
--hash=sha256:c197e2ef75a442528072b29e9755da299110e8610e8bcbb59a6b4cf55384f005 \
--hash=sha256:c36f5d5e97944cbda2d4096b4ae262e6e68506246b61582acf1b8591607f3ccc \
--hash=sha256:c4fe218c5a35e1d87a5a26544237f1fa41dfd9cbd3c856b0810a30061f8b0aaf \
--hash=sha256:c6ff087cb1f563f47b504b4e29e684129fc5ae4863faf3ebca08a327764ee6cb \
--hash=sha256:cd78145b7f7784661c524624f3526c9c6f891b30a4b54cb93a40806d0d0d61e9 \
--hash=sha256:db217c2e52931719f9937bd12082cd4d7b495b35803d5760686975c285924bf8 \
--hash=sha256:dbdb99986548a7e87f8343805ef315fd4eb50ffaabf4fb1206e42f2542bb805d \
--hash=sha256:e4d053900a0d24b75d7521139a3872150301b3d6bde3bed5e12318fb25791e4d \
--hash=sha256:e7746ba3e6efc9e2b748eff59470a2b8684d5a9ec607c6580bcaa5be175820bc \
--hash=sha256:f345de40ef2e65f63645d53d251824e6070e07804827c5b00ec2e44555f9f901 \
--hash=sha256:f750a091fff3a3991731abc1f818bdc64874bb3528162732cb4d45f2e07821a6 \
--hash=sha256:f85570a016d794c29b1e76cf22f67af4486ddbe779e0f30674f138fa4e1769ec \
--hash=sha256:fbbe81314a9d92156abce8b62c09364eb8bafc0ca2a19919a45ec64b5c6cb664 \
--hash=sha256:ff83d889e3ebf6341c8c7864ad8031591ad5ca61599072fc511644d1eb962d2b
grpcio==1.81.1 \
--hash=sha256:0490c30c261eded63f3f354979f9dc4502a9fb944cccb60cd9dc85f5a7349854 \
--hash=sha256:0a37165cc80b1a368384b383e63a4c38116a10467ae44c904d2d7468c4470ec2 \
--hash=sha256:12b7524c88d4026d3dcb7b0ebe16b6714f3b4af402ddd0f0639ab064a00c87c3 \
--hash=sha256:15641444eca4a29358107b3dceb74c1c6305c55c822fd199b458aaea4068a7fb \
--hash=sha256:1b22c80559854b789a01fd89e8929b3798a156c0829b5282a8939f33ad4115ad \
--hash=sha256:1e123f9b37edb8375fd74130d1f69c944bbf0a7b06761ae7211154b8759e94d2 \
--hash=sha256:24c8e57504c8f45b237e40b99262d181071e5099a07053695b75d97bb53053a0 \
--hash=sha256:2c2e2ae6867c2966b8daccc836d54a13218e0007e9a490aeb81dd05be64d22d7 \
--hash=sha256:30e825f6848d9f18bba350ed6c75c1b02a0b5184474a31db9a32b1fa66fd8c79 \
--hash=sha256:3768a5ff1b2125e6f552e561b6b2dca0e64982d8949689b4df145cf8b98d7821 \
--hash=sha256:3ad74f8bb1a18963914c5452d289422830b39459e8776ebbcd207be1fbfb1d94 \
--hash=sha256:410482da976329fe5f4067270401b12cf2bd552ff8020f054ecfaddb5475f9d6 \
--hash=sha256:428bec0161b48d8cf583c068591bc0016d0d9cfff52462b72b3884861ea768c5 \
--hash=sha256:506f48f2f9c29b143fca3dad7b0d518c188b6c9648c75a2ae6e2d9f2c13a060b \
--hash=sha256:58ad1131c300d3c9b933802b3cc4dc69d380822935ba50b28703156ea826fbf7 \
--hash=sha256:592b5fee597faa91cce2dd294dd7d9a1c83d76c4dbf877e33ec1adb866b2fbed \
--hash=sha256:61233fe8951e5c85dff81c2458b6528624760166946b5b47ea150a589168411f \
--hash=sha256:62481553b1793a27e9b9c3cf9e5bd483ef045ca72462592074b46d42b0c4d9b9 \
--hash=sha256:6282caffb41ec326d4cb67ca9cf53b739d1b2f975a2acb498c7418e9f7d9a416 \
--hash=sha256:69ef28e54fc85397f91b8c19592b8ef3d81952080366914823bd8572a2958120 \
--hash=sha256:6f9a0c9c1cc15c112d1c053064fd032b64917062292c3d70aea280e02ae10b77 \
--hash=sha256:6fa10a767143a5e82e8eaab53918af0cd8909a57a27f8cb2288b80a613ac671b \
--hash=sha256:766bc7c9a9c340342f4c864ccbda8e78111e4751f13b895812b9c148fb79e9d0 \
--hash=sha256:78e29211f26da2fdd0e9c6d2b79f489476140cf7029b6a64808ade7ca4156a42 \
--hash=sha256:819edbdcb42ab8598b494bcf0222684bbb7a3c772bd1b1f0be7e029a6063c28e \
--hash=sha256:85b10a45b8993d195c4f3ff57025b8d1e11834909ee475c403bfa60cb4caefaf \
--hash=sha256:88268ca418cacea64cecb0d1d600d3c6b3a8038fcba02e1e205178c5b1f47661 \
--hash=sha256:8b39472beafc0bdcafc4c8c73ad082ebfdb449d566897a61e7acb4fa88089115 \
--hash=sha256:8ea1936c26b99999b27479853039a7f34713f56c49375ad52b38535ec93a796c \
--hash=sha256:98a07f9bf591e3a8919797bee1c53f026ba4acd587e5a4404c8e57c9ec36b2a5 \
--hash=sha256:a185a04039df6cae8648bc8ab6d6fde7bf94f7188ecf7828e76ac52eef1e41d6 \
--hash=sha256:a35009284d0d3d5c2c9601c164a911b8b4331608d98a9a66d47d97bb2f522b70 \
--hash=sha256:a3acb384427816dd5d470f47e62137b87f74da694faa8a50147012cf40df276a \
--hash=sha256:aa2ba7d2ad6df4d80127cea65e5b8d5e2c3adbf153ff4804452836328aca7c54 \
--hash=sha256:b10e1ff4756ed27d5a29d7fc79cfce7ef1ff56ad20025b89bac7cf79e09abbbe \
--hash=sha256:b137f4bf3ada9dc44d411478decc6ff09a79ed30b306cd2abaa98408c3588137 \
--hash=sha256:b259a04a737cb3496be0901328eb8b7552ed8df4865d8c8f1cf1bffcfc0776a3 \
--hash=sha256:b427c19380991a4eaab2f6144b64b99b412043314c6bf4ab544f97bb31ee4190 \
--hash=sha256:bb693b1e3d9a2f3fd228e2110daf4b5aeedb36761ca1e4282f74725f6d89f611 \
--hash=sha256:c261d74b1a945cf895a9d6eccd1685a8e837531beaab782da4d630a8d12deffb \
--hash=sha256:c5bf2dc311127d91230cc79b92188c082634a06cf66c5234db49a43b910183b0 \
--hash=sha256:ca1cc11d82677b9662082e5478b7528e2b7db7beaa6bdff42bd62789d81be399 \
--hash=sha256:d4b2dddfc219f54f956ccd53cf76a1d338ffe68fc7f2849ec9c7feb9927ff692 \
--hash=sha256:d71d30f2d92f67d944631c523713934fee37292469e182ebcd2c1dd8a64ce53f \
--hash=sha256:d865db4a6318e1c1bea83292e0ed231090538fc4ca45425b0f0480eb338bbc6e \
--hash=sha256:e2aa72e3ce1770317ef534f63d397b55e130725f5149bd36077c3b539019db27 \
--hash=sha256:e3657301562ac3cb8018d30d0d3ebfa39932239f7b5703422057ef14b69949f5 \
--hash=sha256:e64dd101d380a115cc5a0c7856788adb535f1a4e21fc543775602f8be95180ae \
--hash=sha256:e8ca6a1fcdb2943c9cbc1804a1baf3acb6071d72a471591678ded84218006e14 \
--hash=sha256:edb59506291b647a30884b1d51a599d605f40b20af4a7dc3d33786a47a31de60 \
--hash=sha256:f9a0ebbe45c29b5e5866593c12b78bd9035f0f0f0d4bc8361680cd580d99db49
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
@ -961,9 +961,9 @@ gunicorn==26.0.0 \
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
icalendar==7.1.2 \
--hash=sha256:01c76243c76c549f58bb51510a8f0a4edb7c539726adda1356dfd0dc04fb7a53 \
--hash=sha256:ebc43ebeb357be98984b573d975118008dee3410d8df28b054ef2943cf3e367e
icalendar==7.1.3 \
--hash=sha256:690f30aa50a76cbf854db5ad52654705db9c5cd0e1b152222f5d4b7854b60667 \
--hash=sha256:eb03a0e215f30db689a72c49f18f998aabf17522eb0858a293c393510850727c
# via
# -c src/backend/requirements.txt
# django-ical
@ -1707,9 +1707,9 @@ pynacl==1.6.2 \
# via
# -c src/backend/requirements.txt
# paramiko
pypdf==6.13.0 \
--hash=sha256:558683ec9daf6b91c280c322c84c32f5cc216afd3eaa3a37de5ae88ae0c3b787 \
--hash=sha256:de1294ae49d6956edb4e5c41527fb9e8716ddd2b120f2185c68aab784d4ffe60
pypdf==6.13.3 \
--hash=sha256:c6e3f86afb625791510b02ad5480e94b63970bb957df75d44657c282ecc52224 \
--hash=sha256:f3cb822769725f1bac658c406cfc9460399043f3750c2d3e4650e0a85eacabd7
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
@ -2094,15 +2094,15 @@ rpds-py==2026.5.1 \
# -c src/backend/requirements.txt
# jsonschema
# referencing
s3transfer==0.18.0 \
--hash=sha256:239c13b09e65ad0346e1be7348b8a202dcad44ac7ea7c6eb858fc881dce739b6 \
--hash=sha256:3760b8b7ec1315da54048b2d626276732bee4300d054d492d4e1d43e20d4ecbd
s3transfer==0.19.0 \
--hash=sha256:777cc2415536f1debadb5c2ef7779275d0fc0fe0e042411cdd6caebeb2685262 \
--hash=sha256:ce436931687addc4c1712d52d40b32f53e88315723f107ffa20ba82b05a0f685
# via
# -c src/backend/requirements.txt
# boto3
sentry-sdk==2.61.1 \
--hash=sha256:9c6adccb3feefa9ba032c8d295ca477575c2f11896046a2b0ad686c47c4af555 \
--hash=sha256:fa36eaf4b8ad708f718500d4bdcc1532637526a22beb874d88cbc0a46458b5ae
sentry-sdk==2.63.0 \
--hash=sha256:2a1502bf864769275dbc8c2c9fc7a0f7f5e18358180b615d262d13a31ffba216 \
--hash=sha256:3a9b5ddd403f79eb73bd670f75f04485819db53d28f76ced7bc09041cb0dfd6a
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
@ -2131,9 +2131,9 @@ sqlparse==0.5.5 \
# -c src/backend/requirements.txt
# django
# django-sql-utils
structlog==25.5.0 \
--hash=sha256:098522a3bebed9153d4570c6d0288abf80a031dfdb2048d59a49e9dc2190fc98 \
--hash=sha256:a8453e9b9e636ec59bd9e79bbd4a72f025981b3ba0f5837aebf48f02f37a7f9f
structlog==26.1.0 \
--hash=sha256:e081a26d6c373e6d201eca24eede26d8ffab07f88f477822e679183428d3d91e \
--hash=sha256:f63a716cbd1b1291cf7661de7794b455acfa4c43c5bcf1630e6ad5ddc1adb3b7
# via
# -c src/backend/requirements.txt
# django-structlog
@ -2157,9 +2157,9 @@ tinyhtml5==2.1.0 \
# via
# -c src/backend/requirements.txt
# weasyprint
tqdm==4.68.1 \
--hash=sha256:fc163d96b287bd031e1aa24421ce4411b25559bd0a1be4fe649bdaa4d2c02bf5 \
--hash=sha256:fea4a90e4023f764914569f7802a297277c5ab1a66be5144143e142e1a4031d8
tqdm==4.68.3 \
--hash=sha256:00dfa48452b6b6cfae3dd9885636c23d3422d1ec97c66d96818cbd5e0821d482 \
--hash=sha256:39832cc2def2789a6f29df83f172db7416cea70052c0907a57801c5f2fdccb03
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
@ -2201,9 +2201,9 @@ urllib3==2.7.0 \
# dulwich
# requests
# sentry-sdk
wcwidth==0.7.0 \
--hash=sha256:5d69154c429a82910e241c738cd0e2976fac8a2dd47a1a805f4afed1c0f136f2 \
--hash=sha256:90e3a7ea092341c44b99562e75d09e4d5160fe7a3974c6fb842a101a95e7eed0
wcwidth==0.8.1 \
--hash=sha256:f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8 \
--hash=sha256:faf5b4a5366a72dc49cad48cdf21f52bdf63bdda995178e483ba247ff79089b9
# via
# -c src/backend/requirements.txt
# blessed
@ -2229,88 +2229,97 @@ whitenoise==6.12.0 \
# via
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
wrapt==1.17.3 \
--hash=sha256:02b551d101f31694fc785e58e0720ef7d9a10c4e62c1c9358ce6f63f23e30a56 \
--hash=sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828 \
--hash=sha256:0610b46293c59a3adbae3dee552b648b984176f8562ee0dba099a56cfbe4df1f \
--hash=sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396 \
--hash=sha256:0b1831115c97f0663cb77aa27d381237e73ad4f721391a9bfb2fe8bc25fa6e77 \
--hash=sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d \
--hash=sha256:0f5f51a6466667a5a356e6381d362d259125b57f059103dd9fdc8c0cf1d14139 \
--hash=sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7 \
--hash=sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb \
--hash=sha256:1f23fa283f51c890eda8e34e4937079114c74b4c81d2b2f1f1d94948f5cc3d7f \
--hash=sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f \
--hash=sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067 \
--hash=sha256:24c2ed34dc222ed754247a2702b1e1e89fdbaa4016f324b4b8f1a802d4ffe87f \
--hash=sha256:273a736c4645e63ac582c60a56b0acb529ef07f78e08dc6bfadf6a46b19c0da7 \
--hash=sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b \
--hash=sha256:30ce38e66630599e1193798285706903110d4f057aab3168a34b7fdc85569afc \
--hash=sha256:33486899acd2d7d3066156b03465b949da3fd41a5da6e394ec49d271baefcf05 \
--hash=sha256:343e44b2a8e60e06a7e0d29c1671a0d9951f59174f3709962b5143f60a2a98bd \
--hash=sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7 \
--hash=sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9 \
--hash=sha256:3e62d15d3cfa26e3d0788094de7b64efa75f3a53875cdbccdf78547aed547a81 \
--hash=sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977 \
--hash=sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa \
--hash=sha256:46acc57b331e0b3bcb3e1ca3b421d65637915cfcd65eb783cb2f78a511193f9b \
--hash=sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe \
--hash=sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58 \
--hash=sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8 \
--hash=sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77 \
--hash=sha256:5531d911795e3f935a9c23eb1c8c03c211661a5060aab167065896bbf62a5f85 \
--hash=sha256:55cbbc356c2842f39bcc553cf695932e8b30e30e797f961860afb308e6b1bb7c \
--hash=sha256:59923aa12d0157f6b82d686c3fd8e1166fa8cdfb3e17b42ce3b6147ff81528df \
--hash=sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454 \
--hash=sha256:5a7b3c1ee8265eb4c8f1b7d29943f195c00673f5ab60c192eba2d4a7eae5f46a \
--hash=sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e \
--hash=sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c \
--hash=sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6 \
--hash=sha256:656873859b3b50eeebe6db8b1455e99d90c26ab058db8e427046dbc35c3140a5 \
--hash=sha256:65d1d00fbfb3ea5f20add88bbc0f815150dbbde3b026e6c24759466c8b5a9ef9 \
--hash=sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd \
--hash=sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277 \
--hash=sha256:70d86fa5197b8947a2fa70260b48e400bf2ccacdcab97bb7de47e3d1e6312225 \
--hash=sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22 \
--hash=sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116 \
--hash=sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16 \
--hash=sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc \
--hash=sha256:758895b01d546812d1f42204bd443b8c433c44d090248bf22689df673ccafe00 \
--hash=sha256:79573c24a46ce11aab457b472efd8d125e5a51da2d1d24387666cd85f54c05b2 \
--hash=sha256:7e18f01b0c3e4a07fe6dfdb00e29049ba17eadbc5e7609a2a3a4af83ab7d710a \
--hash=sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804 \
--hash=sha256:88bbae4d40d5a46142e70d58bf664a89b6b4befaea7b2ecc14e03cedb8e06c04 \
--hash=sha256:8cccf4f81371f257440c88faed6b74f1053eef90807b77e31ca057b2db74edb1 \
--hash=sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba \
--hash=sha256:a36692b8491d30a8c75f1dfee65bef119d6f39ea84ee04d9f9311f83c5ad9390 \
--hash=sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0 \
--hash=sha256:a7c06742645f914f26c7f1fa47b8bc4c91d222f76ee20116c43d5ef0912bba2d \
--hash=sha256:a9a2203361a6e6404f80b99234fe7fb37d1fc73487b5a78dc1aa5b97201e0f22 \
--hash=sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0 \
--hash=sha256:ad85e269fe54d506b240d2d7b9f5f2057c2aa9a2ea5b32c66f8902f768117ed2 \
--hash=sha256:af338aa93554be859173c39c85243970dc6a289fa907402289eeae7543e1ae18 \
--hash=sha256:afd964fd43b10c12213574db492cb8f73b2f0826c8df07a68288f8f19af2ebe6 \
--hash=sha256:b32888aad8b6e68f83a8fdccbf3165f5469702a7544472bdf41f582970ed3311 \
--hash=sha256:c31eebe420a9a5d2887b13000b043ff6ca27c452a9a22fa71f35f118e8d4bf89 \
--hash=sha256:caea3e9c79d5f0d2c6d9ab96111601797ea5da8e6d0723f77eabb0d4068d2b2f \
--hash=sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39 \
--hash=sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4 \
--hash=sha256:d8a210b158a34164de8bb68b0e7780041a903d7b00c87e906fb69928bf7890d5 \
--hash=sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa \
--hash=sha256:df7d30371a2accfe4013e90445f6388c570f103d61019b6b7c57e0265250072a \
--hash=sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050 \
--hash=sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6 \
--hash=sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235 \
--hash=sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056 \
--hash=sha256:e6b13af258d6a9ad602d57d889f83b9d5543acd471eee12eb51f5b01f8eb1bc2 \
--hash=sha256:e6f40a8aa5a92f150bdb3e1c44b7e98fb7113955b2e5394122fa5532fec4b418 \
--hash=sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c \
--hash=sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a \
--hash=sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6 \
--hash=sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0 \
--hash=sha256:f9b2601381be482f70e5d1051a5965c25fb3625455a2bf520b5a077b22afb775 \
--hash=sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10 \
--hash=sha256:fd341868a4b6714a5962c1af0bd44f7c404ef78720c7de4892901e540417111c
wrapt==2.2.1 \
--hash=sha256:036dfb40128819a751c6f451c6b9c10172c49e4c401aebcdb8ecf2aec1683598 \
--hash=sha256:03df9ebed4c73ab93fa8c07e3d41d818dfca1852b15731a3de59457b27814624 \
--hash=sha256:05d5cb74d1b232ec8cfa130a8f900708699ff2491d97b8f85a4cdc5996294b85 \
--hash=sha256:07be671fa8875971222b0ba9059ed8b4dc738631122feba17c93aa36b4213e9a \
--hash=sha256:09ac16c081bebfd15d8e4dfa5bdc805990bbd52249ecff22530da7a129d6120b \
--hash=sha256:0d9ff006f420b2ec8296aa56ade43ea7da3e997e85769f0aafc5e0661aacb710 \
--hash=sha256:0f68f478004475d97906686e702ddbddeaf717c0b68ad2794384308f2dc713ae \
--hash=sha256:17de18fc12cea55b8a9587314cb830573e37fb33b247a7515696350863714188 \
--hash=sha256:1ae574d65c9fa8e86f64f6a7c2668f9fcd507b183e0e577619f504b883cb0a6c \
--hash=sha256:1c9934ea5d92957e3cd0adbc0845539dccfd62710ebe16195a8c66c53954db36 \
--hash=sha256:1d676ee388bc42a04d56dd7deb5605244dac2e35cc2fadbb43c9fa25bbd93508 \
--hash=sha256:1ffa9cfd4bdb581539951b14ae661ff20ed0c3599b3e911a131ee0ec5ac11337 \
--hash=sha256:2076d2335085eb09b9547e7688656fa8f5cf0183eab589d33499cd353489d797 \
--hash=sha256:211f595f8e7faae5c5930fcc64708f2ba36849e0ba0fd653a843de9fa8d7db77 \
--hash=sha256:24c52546acf2ab82412f2ab6fc5948a7fe958d3b4f070202e8dcdd865489eaf9 \
--hash=sha256:2d83966dc7f4f45e8b97b5933685ac2e6e67fc0e19246ea314bceb9a8970c956 \
--hash=sha256:2de9e20769fe9c1f6dcdc893c6a89287c5ccf8537c90b5de78aed8017697aad5 \
--hash=sha256:2e08688ab16525897da6589d56d0aebaf417bbe91c2d8e3b96203b1efa596e85 \
--hash=sha256:2f8c90c8afde51969487be4e1343ae049b268854877d415c2510baf833775052 \
--hash=sha256:368eac1e20fd0bb03dd3cc42bf9887154c3861b60989389ccb5fac032617d215 \
--hash=sha256:3aafea2975caef8ca49400640dde02cc7426e798f24870ed01f490bc3cffd32f \
--hash=sha256:3e2f02472a1cbbf3884b365714a810b5947134a95ad6952b554cb8cce9d492b0 \
--hash=sha256:3ffad790d9d11d8ecf9f17c4bb671a5b4089e4d8b575c46c5129597f41f836b0 \
--hash=sha256:401229e9d63ca09f9b8891ecf83798d26c11bbb445d11ed9f1836b6d4585b38a \
--hash=sha256:436addbc4bb4fc0a88c702577f51195d7d73683a7f3e0e5b253d8404d7847243 \
--hash=sha256:44255c84bc57554fed822e83e70036b51afa9edb56fc7ca56c54410ece7898c9 \
--hash=sha256:50972a1d974ea07725a7f6b1cec5f8759008afd030a0024843ebe7d52de47f2b \
--hash=sha256:5590d63f5243251641cf543009b4c9314a79d0598fdb8a8e4cfc918494536c53 \
--hash=sha256:585916e210db57b23543342c2f298e42331b617fd0c934caf5c64df44de8640e \
--hash=sha256:5f1845c2a8cc1180ccccfa45785dd06f562730d19ef75be180334254012b6283 \
--hash=sha256:5fa9bf3b9e66336589d03f42abce2da1055ad5c69b0c2b764852a8471c9b9114 \
--hash=sha256:61a0013344674d2b648bc6e6fe9828dd4fc1d3b4eb7523809792f8cb952e2f16 \
--hash=sha256:61acce4257a9883669703c525447c5b4c392edf0f987ae77ec32668440158f0e \
--hash=sha256:628f5220c7a904d5fc78f7075c8d7871433eb6d035c94728a22fdf85f193d2a8 \
--hash=sha256:64b7deeda4b70408e382328d8bbe52a256fe9bc63ae3db86d804608367e5422c \
--hash=sha256:6744f504375775d7609c82c8d3d94af1c9a6f05586984536905908ba905277b9 \
--hash=sha256:67a97e5b6c457f0cd3cfc19ebb2d84463e60c3ece754cc831e4281a3ca29bb18 \
--hash=sha256:69f2e9244542cb34dd59c7f073445b9e54ad9f3fce8d93606c368a1b499fc413 \
--hash=sha256:6ce32763ac31ce94fe9aada947e479b1975012bff166da409b4b9e4e376cf7e5 \
--hash=sha256:6f56a647e4eaf5f0ca40330fb070f566bdf9f7b0db89a1af20d71c28dcd7a0ab \
--hash=sha256:727ab4244622cd6ad2390f322642090c877d2e83a608d2653a7643ae5368d926 \
--hash=sha256:74d6a0c31472fe5d814917266b9f46495d7c61ed890af08b468acea92fb89a8d \
--hash=sha256:78b0aa6bfb7be8deed0ab23e7aa028cc5210c29bc2d32a04d52b50e517a7307e \
--hash=sha256:7975bc88ab4b0f72ef2a2d5ae9d77d87efb5ef95e8f8046242fa9afdaaf2030b \
--hash=sha256:7a4fdb9326aab4a5a477a1640e5ad786a8495901009d7e7b038371edd23a9d2b \
--hash=sha256:844c858fc3bb7eacc0ba8efa904935d16aac6a4470948ad1e7e55c9f5a2a665f \
--hash=sha256:87bacdaf225117a342a20d9c03438d701c02112f6e3f351ce9b7f32354f14797 \
--hash=sha256:8a983a603a18c8708f024f7f6991b2e66159219abbf894634c5056243c55f3cd \
--hash=sha256:8d1b4d0e0c2119587a31f5c029abd547e0c81d93b89d394566fe1588659eb579 \
--hash=sha256:9011395be8db1827d106c6449b4bb6dd17e331ff6ec521f227e4588f1c78e46f \
--hash=sha256:93fc2bf40cd7f4a0256010dce073d44eeb4a351b9bca94d0477ce2b6e62532b3 \
--hash=sha256:95821352042722cd9f1108874579a47989d0a7e12a37d87d2fc4af20fd99ab8a \
--hash=sha256:9907a4402ab6db12b7077a0ea5d7a4d028ecb22c8eee2b53527080d347cd1562 \
--hash=sha256:9a04c28c10ba7fd12842b109d2edb0678872a2fe65277ca4ff06a0d61edee245 \
--hash=sha256:9a5934eaea872e17936b5f45501eba5ab0bce9a74122e172b663d7c28c459c4a \
--hash=sha256:9b984d1eb252145d6302c1dbd5e87fc6d404d45531447c84eadec04bf1fcb027 \
--hash=sha256:9c210a6994b21aa9b29e81c8d11560e8fdab54c117e9cff37870d0a27bde1343 \
--hash=sha256:9d8f204c8e3a8bf9ece17e0a83d137fd807440977f8a5e762d59306795011440 \
--hash=sha256:a8f7176b83664af44567e9cc06e0d3827823fcc1a5e52307ebb8ac3aa95860b9 \
--hash=sha256:a9dec1aca52dddde7df94818310fa2fe79739c8f385b2014c4cb1035f5508199 \
--hash=sha256:ab5be648d5a0b86b7438864f8df3c705a65cef35a2fd3e5561e3e203167e0f27 \
--hash=sha256:abd621552ede77c4c69be7fac44ba911225b0c812b6ba604e5964cf98085b474 \
--hash=sha256:ac2745950b2bff80219c15ebf2fa9d8427eba7e249739f97e55c9d169e47e9e1 \
--hash=sha256:aed9658797d0b45d6c49adcfc6b41f66e6f2d0c6de3ec79e16cf4b1855df240f \
--hash=sha256:b6c0febfe38f22df2eb565c0ce8a092bb80411e56861ca382c443da83105423f \
--hash=sha256:b9cf53ba90717db2e292401de290776c498d4bbfb0d4a559ca2895db8b9dcb5c \
--hash=sha256:ba519b2d765df9871a25879e6f7fa78948ea59a2a31f9c1a257e34b651994afc \
--hash=sha256:c318a64b53d97b841d7b5e637517e50a27be64bc695128422953d4b21710954e \
--hash=sha256:c3723ff8eb8721f4daac98bc0256f15158e05316d5e52648ce9cebee434fbdd5 \
--hash=sha256:c754dafdf5aaf0b401b644a90a30046929a0dd1a536e0ff0ec959a59155d9c7f \
--hash=sha256:c803a3d331796255af51ba2c79ed0ac8275865b516c09e61f248d1e7aff31ce9 \
--hash=sha256:c8cc5094b08abeae52da9c73c8a32003623be691a5193df2f4e3eac3d557c394 \
--hash=sha256:cf3638274ab9d9b724c9baa0b4c04e132cd6faefb78b4dd3dd1a02a4bdaad41e \
--hash=sha256:d047f6498c973874ba08ac3f97c69a2c4b2211c8de6f4c205f75cb1c9522596e \
--hash=sha256:d2beb1c7cab10603aecdc42f8edd6ff013f9a32e4543474e38e6b77ce9975aeb \
--hash=sha256:d7f513d3185e6fec82d0c3518f2e6365d8b4e49f5f45f29640d5162d56a23b54 \
--hash=sha256:dd57607acc85678925940bd5df0385ff8332083a32fa8d7a43f8767f4997263c \
--hash=sha256:e0cb7e4dd71f4c32e5e84843cd3c4cd65dda034314004bbe1d7f99af2426ab80 \
--hash=sha256:e3677c7146ce694874941ba82b57092cc4875445aadf29d72807351023105143 \
--hash=sha256:e395f7bc31851ef9b612050368cb446e9bc14cd7454b025018980349caf25ae5 \
--hash=sha256:e422b2d647a65d6b080cad5accd09055d3809bdff00c76fba8dca00ca935572a \
--hash=sha256:ed55af48b3eb28f43228ca2306788892bcb629eb2b5c4876e2a3659872c2f17a \
--hash=sha256:ed928d0fda15fc0adc8d13305c8b3c0f2fba5b0669950c9e6d019d9162a3b3e8 \
--hash=sha256:f4e1a92032a39cd5e3c647ca57dbf33b6a1938fd975623175793f9dbb63236de \
--hash=sha256:f53ac9f3ef573326d009ed809beff4efcac6451931c2b8132586da4b9e53ff31 \
--hash=sha256:f5b9daf6b629fce418e0cc3dd0436eac045188fa35deadb7a7f3941d5b8203f9 \
--hash=sha256:f6518b94edb9150452e9aba08027d4cc293433753ec1fbefb4629a21cbc74181 \
--hash=sha256:f70db64e8266d7c45d3b735f2e08eeb434b5e03da9a479ae42b2e2e486a21a00 \
--hash=sha256:fafb4e739e43544d12cb4abd1605fd4683b6ca6a9ad682b7fd8f4d21973eafa8 \
--hash=sha256:fd0135d34387f5fd087d9be368ea77ea89cf2451dc1cd1c622d35021bcb3ab50
# via
# -c src/backend/requirements.txt
# opentelemetry-instrumentation
@ -2388,19 +2397,20 @@ xmlsec==1.3.17 \
# -c src/backend/requirements.txt
# -r src/backend/requirements.in
# python3-saml
zopfli==0.4.2 \
--hash=sha256:18af6d2f778552d9bfdaa8e6caaf38c2bd57d0efba34a47860fcc4f6ba899696 \
--hash=sha256:1fc2fd1725c986f535ea323139ec1b974fa294ef9574e0fad840967d52dd38a9 \
--hash=sha256:65a847b1f234df456584f0267fb0f270a95772e675a98ae9c21f3b4839077b2f \
--hash=sha256:70c20595aa30aae246ac71a9fa471e2aa768318150ab814aeea2f651c59c6a32 \
--hash=sha256:92e30df03a00c08b3265c362566573b50a3af3b113b0dbe755071376635ce93d \
--hash=sha256:932083f7ca190fbd73cdf8ad7d32ec7231ecd25e1b3fade547cfb11b823ff91f \
--hash=sha256:a75e646fed3a2a42a82e69a81644009189c8ab4271691f020d52da8630d0580e \
--hash=sha256:bc25a3b3568910afb4bbd951d99835de29cade95417bca215339eac172eb381d \
--hash=sha256:d036b7179c225ce6bd73e68b5a176319ce8835739f494650e4124cd9c383b826 \
--hash=sha256:d1972b58083b85af460d8936f623d849b487c151b26eae925b25ec921ae6cd22 \
--hash=sha256:d3bc0b483575ab8849d9c15b349f78ae0141eb4dfe2ba260c8fdc0b3ba5c6c42 \
--hash=sha256:e679896fde39930dec1f46e5f4e1b1900378686168064966209ffb7b80e41743
zopfli==0.4.3 \
--hash=sha256:0087c9a6f0c8a052be0f6d1a9bb71b6caffdd3e10201d6d6166e28d482cebe6d \
--hash=sha256:47604eee5c6704bdf0e94d8391fe3b74ddb2abd84128fbcfdc3ee0fc265feaef \
--hash=sha256:62248dbf8dbcbd588ee194b210e5be9fa80bce29641f55599d6d394bd2a9d8a3 \
--hash=sha256:628c3e941752880b3491db8d44163d0aedb221944e22a17187ff7fc549b050f6 \
--hash=sha256:769875152d0625c46707bcca57d4b2233fe653482067acd55fbf6ec525cb9bdc \
--hash=sha256:7e9703ca6e7ef66c8d05e0826b6f558b680c9db8206f84f05a3ee93430a12e42 \
--hash=sha256:7fa3c35193475290e3f007bbcdebdbae64ba2f012d75c632da0d727e1da50d5e \
--hash=sha256:88f4fbe429aad72bc206275d81fab11a097e0f951a5848d1f51083c37ea73073 \
--hash=sha256:921c2c9907f4364963848da5ad194b46d68865e07fdb975d04fd09bc42d47357 \
--hash=sha256:d3a50f91a13cea9bafe025de8fd87a005eb26de02a4f0c193127ddbf23ac8ebe \
--hash=sha256:d4f51dd1ab5312e837e2091284e0d9f1a138188f2e65812f9a5799dc02c45f94 \
--hash=sha256:eb0c9c1d40a8cb1d58762d7e57290ccb753e0828c4d01be8acb59aae5d0ca206 \
--hash=sha256:f2e0adcf7d36c6fd0dd36cc771ef7f0c5803a05666feafcd90d7170174a4148e
# via
# -c src/backend/requirements.txt
# fonttools

View File

@ -14,9 +14,9 @@ build==1.5.0 \
# via
# -c src/backend/requirements-dev.txt
# pip-tools
certifi==2026.5.20 \
--hash=sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 \
--hash=sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d
certifi==2026.6.17 \
--hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
--hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
# via
# -c src/backend/requirements-3.14.txt
# -c src/backend/requirements-dev.txt
@ -254,113 +254,113 @@ click==8.4.1 \
# via
# -c src/backend/requirements-dev.txt
# pip-tools
coverage[toml]==7.13.5 \
--hash=sha256:012d5319e66e9d5a218834642d6c35d265515a62f01157a45bcc036ecf947256 \
--hash=sha256:02ca0eed225b2ff301c474aeeeae27d26e2537942aa0f87491d3e147e784a82b \
--hash=sha256:03ccc709a17a1de074fb1d11f217342fb0d2b1582ed544f554fc9fc3f07e95f5 \
--hash=sha256:0428cbef5783ad91fe240f673cc1f76b25e74bbfe1a13115e4aa30d3f538162d \
--hash=sha256:04690832cbea4e4663d9149e05dba142546ca05cb1848816760e7f58285c970a \
--hash=sha256:0590e44dd2745c696a778f7bab6aa95256de2cbc8b8cff4f7db8ff09813d6969 \
--hash=sha256:0672854dc733c342fa3e957e0605256d2bf5934feeac328da9e0b5449634a642 \
--hash=sha256:084b84a8c63e8d6fc7e3931b316a9bcafca1458d753c539db82d31ed20091a87 \
--hash=sha256:0b67af5492adb31940ee418a5a655c28e48165da5afab8c7fa6fd72a142f8740 \
--hash=sha256:0cd9ed7a8b181775459296e402ca4fb27db1279740a24e93b3b41942ebe4b215 \
--hash=sha256:0cef0cdec915d11254a7f549c1170afecce708d30610c6abdded1f74e581666d \
--hash=sha256:0e223ce4b4ed47f065bfb123687686512e37629be25cc63728557ae7db261422 \
--hash=sha256:0e3c426ffc4cd952f54ee9ffbdd10345709ecc78a3ecfd796a57236bfad0b9b8 \
--hash=sha256:0ecf12ecb326fe2c339d93fc131816f3a7367d223db37817208905c89bded911 \
--hash=sha256:10a0c37f0b646eaff7cce1874c31d1f1ccb297688d4c747291f4f4c70741cc8b \
--hash=sha256:145ede53ccbafb297c1c9287f788d1bc3efd6c900da23bf6931b09eafc931587 \
--hash=sha256:1b11eef33edeae9d142f9b4358edb76273b3bfd30bc3df9a4f95d0e49caf94e8 \
--hash=sha256:1b88c69c8ef5d4b6fe7dea66d6636056a0f6a7527c440e890cf9259011f5e606 \
--hash=sha256:258354455f4e86e3e9d0d17571d522e13b4e1e19bf0f8596bcf9476d61e7d8a9 \
--hash=sha256:259b69bb83ad9894c4b25be2528139eecba9a82646ebdda2d9db1ba28424a6bf \
--hash=sha256:2aa055ae1857258f9e0045be26a6d62bdb47a72448b62d7b55f4820f361a2633 \
--hash=sha256:2d3807015f138ffea1ed9afeeb8624fd781703f2858b62a8dd8da5a0994c57b6 \
--hash=sha256:301e3b7dfefecaca37c9f1aa6f0049b7d4ab8dd933742b607765d757aca77d43 \
--hash=sha256:32ca0c0114c9834a43f045a87dcebd69d108d8ffb666957ea65aa132f50332e2 \
--hash=sha256:34b02417cf070e173989b3db962f7ed56d2f644307b2cf9d5a0f258e13084a61 \
--hash=sha256:356e76b46783a98c2a2fe81ec79df4883a1e62895ea952968fb253c114e7f930 \
--hash=sha256:35a31f2b1578185fbe6aa2e74cea1b1d0bbf4c552774247d9160d29b80ed56cc \
--hash=sha256:380e8e9084d8eb38db3a9176a1a4f3c0082c3806fa0dc882d1d87abc3c789247 \
--hash=sha256:3ad050321264c49c2fa67bb599100456fc51d004b82534f379d16445da40fb75 \
--hash=sha256:3e1bb5f6c78feeb1be3475789b14a0f0a5b47d505bfc7267126ccbd50289999e \
--hash=sha256:3f4818d065964db3c1c66dc0fbdac5ac692ecbc875555e13374fdbe7eedb4376 \
--hash=sha256:460cf0114c5016fa841214ff5564aa4864f11948da9440bc97e21ad1f4ba1e01 \
--hash=sha256:48c39bc4a04d983a54a705a6389512883d4a3b9862991b3617d547940e9f52b1 \
--hash=sha256:4b59148601efcd2bac8c4dbf1f0ad6391693ccf7a74b8205781751637076aee3 \
--hash=sha256:4d2afbc5cc54d286bfb54541aa50b64cdb07a718227168c87b9e2fb8f25e1743 \
--hash=sha256:505d7083c8b0c87a8fa8c07370c285847c1f77739b22e299ad75a6af6c32c5c9 \
--hash=sha256:52f444e86475992506b32d4e5ca55c24fc88d73bcbda0e9745095b28ef4dc0cf \
--hash=sha256:5b13955d31d1633cf9376908089b7cebe7d15ddad7aeaabcbe969a595a97e95e \
--hash=sha256:5ec4af212df513e399cf11610cc27063f1586419e814755ab362e50a85ea69c1 \
--hash=sha256:60365289c3741e4db327e7baff2a4aaacf22f788e80fa4683393891b70a89fbd \
--hash=sha256:631efb83f01569670a5e866ceb80fe483e7c159fac6f167e6571522636104a0b \
--hash=sha256:6697e29b93707167687543480a40f0db8f356e86d9f67ddf2e37e2dfd91a9dab \
--hash=sha256:66a80c616f80181f4d643b0f9e709d97bcea413ecd9631e1dedc7401c8e6695d \
--hash=sha256:67e9bc5449801fad0e5dff329499fb090ba4c5800b86805c80617b4e29809b2a \
--hash=sha256:68a4953be99b17ac3c23b6efbc8a38330d99680c9458927491d18700ef23ded0 \
--hash=sha256:6c36ddb64ed9d7e496028d1d00dfec3e428e0aabf4006583bb1839958d280510 \
--hash=sha256:6e3370441f4513c6252bf042b9c36d22491142385049243253c7e48398a15a9f \
--hash=sha256:7034b5c56a58ae5e85f23949d52c14aca2cfc6848a31764995b7de88f13a1ea0 \
--hash=sha256:704de6328e3d612a8f6c07000a878ff38181ec3263d5a11da1db294fa6a9bdf8 \
--hash=sha256:7132bed4bd7b836200c591410ae7d97bf7ae8be6fc87d160b2bd881df929e7bf \
--hash=sha256:7300c8a6d13335b29bb76d7651c66af6bd8658517c43499f110ddc6717bfc209 \
--hash=sha256:750db93a81e3e5a9831b534be7b1229df848b2e125a604fe6651e48aa070e5f9 \
--hash=sha256:777c4d1eff1b67876139d24288aaf1817f6c03d6bae9c5cc8d27b83bcfe38fe3 \
--hash=sha256:78e696e1cc714e57e8b25760b33a8b1026b7048d270140d25dafe1b0a1ee05a3 \
--hash=sha256:79060214983769c7ba3f0cee10b54c97609dca4d478fa1aa32b914480fd5738d \
--hash=sha256:7c8d4bc913dd70b93488d6c496c77f3aff5ea99a07e36a18f865bca55adef8bd \
--hash=sha256:7f2c47b36fe7709a6e83bfadf4eefb90bd25fbe4014d715224c4316f808e59a2 \
--hash=sha256:800bc829053c80d240a687ceeb927a94fd108bbdc68dfbe505d0d75ab578a882 \
--hash=sha256:843ea8643cf967d1ac7e8ecd4bb00c99135adf4816c0c0593fdcc47b597fcf09 \
--hash=sha256:8769751c10f339021e2638cd354e13adeac54004d1941119b2c96fe5276d45ea \
--hash=sha256:8dd02af98971bdb956363e4827d34425cb3df19ee550ef92855b0acb9c7ce51c \
--hash=sha256:8fdf453a942c3e4d99bd80088141c4c6960bb232c409d9c3558e2dbaa3998562 \
--hash=sha256:941617e518602e2d64942c88ec8499f7fbd49d3f6c4327d3a71d43a1973032f3 \
--hash=sha256:972a9cd27894afe4bc2b1480107054e062df08e671df7c2f18c205e805ccd806 \
--hash=sha256:9adb6688e3b53adffefd4a52d72cbd8b02602bfb8f74dcd862337182fd4d1a4e \
--hash=sha256:9b74db26dfea4f4e50d48a4602207cd1e78be33182bc9cbf22da94f332f99878 \
--hash=sha256:9bb2a28101a443669a423b665939381084412b81c3f8c0fcfbac57f4e30b5b8e \
--hash=sha256:9d44d7aa963820b1b971dbecd90bfe5fe8f81cff79787eb6cca15750bd2f79b9 \
--hash=sha256:9dacc2ad679b292709e0f5fc1ac74a6d4d5562e424058962c7bb0c658ad25e45 \
--hash=sha256:9ddb4f4a5479f2539644be484da179b653273bca1a323947d48ab107b3ed1f29 \
--hash=sha256:a1a6d79a14e1ec1832cabc833898636ad5f3754a678ef8bb4908515208bf84f4 \
--hash=sha256:a698e363641b98843c517817db75373c83254781426e94ada3197cabbc2c919c \
--hash=sha256:ad14385487393e386e2ea988b09d62dd42c397662ac2dabc3832d71253eee479 \
--hash=sha256:ad146744ca4fd09b50c482650e3c1b1f4dfa1d4792e0a04a369c7f23336f0400 \
--hash=sha256:b5db73ba3c41c7008037fa731ad5459fc3944cb7452fc0aa9f822ad3533c583c \
--hash=sha256:bd3a2fbc1c6cccb3c5106140d87cc6a8715110373ef42b63cf5aea29df8c217a \
--hash=sha256:bdba0a6b8812e8c7df002d908a9a2ea3c36e92611b5708633c50869e6d922fdf \
--hash=sha256:be3d4bbad9d4b037791794ddeedd7d64a56f5933a2c1373e18e9e568b9141686 \
--hash=sha256:bf69236a9a81bdca3bff53796237aab096cdbf8d78a66ad61e992d9dac7eb2de \
--hash=sha256:bff95879c33ec8da99fc9b6fe345ddb5be6414b41d6d1ad1c8f188d26f36e028 \
--hash=sha256:c555b48be1853fe3997c11c4bd521cdd9a9612352de01fa4508f16ec341e6fe0 \
--hash=sha256:c81f6515c4c40141f83f502b07bbfa5c240ba25bbe73da7b33f1e5b6120ff179 \
--hash=sha256:c9136ff29c3a91e25b1d1552b5308e53a1e0653a23e53b6366d7c2dcbbaf8a16 \
--hash=sha256:ce1998c0483007608c8382f4ff50164bfc5bd07a2246dd272aa4043b75e61e85 \
--hash=sha256:cec2d83125531bd153175354055cdb7a09987af08a9430bd173c937c6d0fba2a \
--hash=sha256:cff784eef7f0b8f6cb28804fbddcfa99f89efe4cc35fb5627e3ac58f91ed3ac0 \
--hash=sha256:d2c87e0c473a10bffe991502eac389220533024c8082ec1ce849f4218dded810 \
--hash=sha256:d7cfad2d6d81dd298ab6b89fe72c3b7b05ec7544bdda3b707ddaecff8d25c161 \
--hash=sha256:d8a7a2049c14f413163e2bdabd37e41179b1d1ccb10ffc6ccc4b7a718429c607 \
--hash=sha256:da305e9937617ee95c2e39d8ff9f040e0487cbf1ac174f777ed5eddd7a7c1f26 \
--hash=sha256:da86cdcf10d2519e10cabb8ac2de03da1bcb6e4853790b7fbd48523332e3a819 \
--hash=sha256:dc022073d063b25a402454e5712ef9e007113e3a676b96c5f29b2bda29352f40 \
--hash=sha256:e0723d2c96324561b9aa76fb982406e11d93cdb388a7a7da2b16e04719cf7ca5 \
--hash=sha256:e092b9499de38ae0fbfbc603a74660eb6ff3e869e507b50d85a13b6db9863e15 \
--hash=sha256:e0b216a19534b2427cc201a26c25da4a48633f29a487c61258643e89d28200c0 \
--hash=sha256:e1c85e0b6c05c592ea6d8768a66a254bfb3874b53774b12d4c89c481eb78cb90 \
--hash=sha256:e301d30dd7e95ae068671d746ba8c34e945a82682e62918e41b2679acd2051a0 \
--hash=sha256:e808af52a0513762df4d945ea164a24b37f2f518cbe97e03deaa0ee66139b4d6 \
--hash=sha256:eb07647a5738b89baab047f14edd18ded523de60f3b30e75c2acc826f79c839a \
--hash=sha256:eb7fdf1ef130660e7415e0253a01a7d5a88c9c4d158bcf75cbbd922fd65a5b58 \
--hash=sha256:ec10e2a42b41c923c2209b846126c6582db5e43a33157e9870ba9fb70dc7854b \
--hash=sha256:ee2aa19e03161671ec964004fb74b2257805d9710bf14a5c704558b9d8dbaf17 \
--hash=sha256:f08fd75c50a760c7eb068ae823777268daaf16a80b918fa58eea888f8e3919f5 \
--hash=sha256:f4cd16206ad171cbc2470dbea9103cf9a7607d5fe8c242fdf1edf36174020664 \
--hash=sha256:f70c9ab2595c56f81a89620e22899eea8b212a4041bd728ac6f4a28bf5d3ddd0 \
--hash=sha256:fbabfaceaeb587e16f7008f7795cd80d20ec548dc7f94fbb0d4ec2e038ce563f
coverage[toml]==7.14.1 \
--hash=sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86 \
--hash=sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd \
--hash=sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d \
--hash=sha256:042c46ded7c288aeb07cf14a28b6c1e10b78fcba40171c3fa1e939377eeef0b5 \
--hash=sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42 \
--hash=sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de \
--hash=sha256:10274a1fbeb8ec5d72966e17bb198a3104257aca4ac09d98667c5f8aca8c8548 \
--hash=sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1 \
--hash=sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7 \
--hash=sha256:1238cb94638e610e972c60dac68e813f868dc7d6e982535270558443058d9d59 \
--hash=sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906 \
--hash=sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af \
--hash=sha256:17a5a241e5997621a956a7f402a7433ef4221e5152809b785bec79e2323799f1 \
--hash=sha256:1896f5e19ff3f0431c7ce2172adc54890fd97f86b59ced8ca1649145d9ffe35d \
--hash=sha256:196a13319ad88d6d8ef5ab489ec4f44ddde2143c0c7d5b27786f6c3ffd56a7e1 \
--hash=sha256:221c70f316241a78e77e607c227cefc8808d4e08f28d99c04f35694690e940be \
--hash=sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02 \
--hash=sha256:2224f89ffd0c5605ccce1ed7a584da162bc7c55f601ab1c946bc9de31a486b42 \
--hash=sha256:23bf7fa51ac02e07fc7c96849b82946da47ae862dc8f86d183b2a4864fc38129 \
--hash=sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e \
--hash=sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be \
--hash=sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e \
--hash=sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65 \
--hash=sha256:370c5afae3fa0658e11694a32b24c2778f6bc2d17718121f94ee185e69f26b54 \
--hash=sha256:3758dd0a7f1fa57365ef2e781df0f0731d38b6e3772259d13dae4bd8a958d4b1 \
--hash=sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5 \
--hash=sha256:3a56abc20a472baf0304c455721bc601477440d28ecfde8a03dde79ede07e0df \
--hash=sha256:3c18ebc343e15be53049b3a2dce38fe82d58f37e20ab9094b3a39c0aa4f6bb47 \
--hash=sha256:3d452fd08b5c72c5167c93e6867b5c08500bd40f2a21e1e854a500550b6cc36f \
--hash=sha256:3e3680291c4a1d0dadfa84a2c459576a4af5133abb617905714339a0c73138cf \
--hash=sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37 \
--hash=sha256:46f714d2fb8ae2f4f29f23ada7f1e79b759fff5a70f94a1dac23af204c3ec9e4 \
--hash=sha256:478b5bcd63c2e1357c5c7e16c070690df7b07f676b1c114d7b93e533c664309f \
--hash=sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84 \
--hash=sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1 \
--hash=sha256:4ea1c034f95c9b056e856b794630b17f9fa3d57e4800ff1e503d3be0f9c9078c \
--hash=sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8 \
--hash=sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e \
--hash=sha256:59baf88468dbc8d63b1887afd92bda52e40bb1561696e5819670601403810cec \
--hash=sha256:5a1c5215be81035e629d5bc756650634d0bf31991038db7a0eccb90f025ce16d \
--hash=sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54 \
--hash=sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890 \
--hash=sha256:5f0cfc27c539f07cf5c0a4cfe211d0b6cae039f8f40526dbaa71944e64b50a7b \
--hash=sha256:6223a72fd0e4c7156353ec0f08a5f93623e1d3034d0e2683b9bb8ea674131b1d \
--hash=sha256:62a9f70b52e0b5a95cfef4a5c5641b06983cadc5e538a3feeb5c00211f523ac2 \
--hash=sha256:62fd185ef9df3c33d1c8178c5af105f762afbad96038de9a4ae100aa6297ca33 \
--hash=sha256:6a3cb83d1552c0cd1b4906655b6a33fd4a8473229633a901c6b73bf86914dee9 \
--hash=sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e \
--hash=sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6 \
--hash=sha256:6ff665fb023a77386fe11685190cee1f60a7d635994a30d9b0a061533d470fce \
--hash=sha256:7279d2110a28cebc738b6459ecda2771735a4c18465fbbd36b3288fe5ed92247 \
--hash=sha256:76a085d7005236a767e3426148b2c407e53ad61695c562f8a81da2d373324901 \
--hash=sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36 \
--hash=sha256:79058c47dae6788504b5effb319961bcd72d7240551464b91d474bc0ed186d69 \
--hash=sha256:7af486dabe8954d03b087f0021540897afe084f04e16ff5579e08cc46f871416 \
--hash=sha256:7f02d09f70776579b926d889a4c9c235070a1f47c40458aeaca563fae5acfdb5 \
--hash=sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500 \
--hash=sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad \
--hash=sha256:84ac9499e48700399a5dd0ea7085b5091961fec52c68d66b4ec0d3cf7f4441b1 \
--hash=sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b \
--hash=sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b \
--hash=sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a \
--hash=sha256:87ebdf787d4888e3f3f2d523eadc6e18c6d18c6d0eb173801a189641627fb37e \
--hash=sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee \
--hash=sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07 \
--hash=sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a \
--hash=sha256:9eeb3fcbc13ba40dfbdb22d01d196a28e9cef9ed4c29b60061a1e0e823a9929d \
--hash=sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c \
--hash=sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343 \
--hash=sha256:a24a81f9715ee42ef59a316cc11611c98fe23920f7c81861315c9f3ff4a230f4 \
--hash=sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2 \
--hash=sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8 \
--hash=sha256:a5274669f37f2343635a347b91a60777621341ab3378e9c6ac9335eee704bddf \
--hash=sha256:aa5e304a873fabddc11e484e9b6b738bd38bd7bed17b09aa84eecf5332e8b8bb \
--hash=sha256:ab4af6352741a604c431c6072fce5bee33bf0f20dc7a56618d6bf6bb89e9810c \
--hash=sha256:b553d04b5e778a8e56d57eb134aff42a92718ecba45e79c4764ecfa40efd92ff \
--hash=sha256:b84800013769a78ccb9ef4659402e26d06867e337b61ec365f77ad008adea80e \
--hash=sha256:b84ffdf877644e7096aa936991efeed873f7f3df57b9cd001312b7668ab08550 \
--hash=sha256:bcaa50684dcaadfa599ac48f81103c756d791cfd85c97203d2217c593d48b860 \
--hash=sha256:be9f2c802dcfce3f71298303aa5dad0dce440a76c52f2f60dacd8656dab78793 \
--hash=sha256:c643734307300234fafa36bf2a040a7235f8f177ea1fd6ec1423aea6fb7b929f \
--hash=sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851 \
--hash=sha256:c7e057326434e441306226fbeb5d1aaf14a2637efe97ba668306635835f32ad7 \
--hash=sha256:c912c259304cfb5ee584481cfb7ce1ff932b4d61e6c9140b8f19cb7b5ed82332 \
--hash=sha256:ce66d8e46da2bb5ee313a745cbd2e391d319176c1f7a9451bfcd3a2fb920859b \
--hash=sha256:ced2f09ef276fd58611a1ef502164ad266d2b75174e5a40cabbdb4033f9f6cf2 \
--hash=sha256:cfe5a5fec635799ef33428f1e5e61bafa45a92a96190ba731561ba558ccc214d \
--hash=sha256:d13e6725992e2d2fd7d81d4f5241952d13740121dfd501da09201be39b2c003a \
--hash=sha256:d34d75f892b3ab73ba11cab5442cce7b3e168fd64162b16f0e1e0d09c508edef \
--hash=sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474 \
--hash=sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee \
--hash=sha256:da028256b04ec30e5e0114b6f76172938c313991f0a2d3d894271315cf5d5e43 \
--hash=sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034 \
--hash=sha256:dd34767fa19848d35659ffc0a75314f58c7af3f1cd87ec521e8292a1238398a3 \
--hash=sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c \
--hash=sha256:de286598cc65d2b489411174b1faec2f5a7775fb3201fd925db2a76b4030f37d \
--hash=sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7 \
--hash=sha256:e854312c4103f2ad4c0dc023b69b77ebfd2c89db5f86c4c94dc2353f9a92167e \
--hash=sha256:ea8cd6ca0ee9f616aaef3afc6882e32c2cbf18b00d96313ffd76af650574034d \
--hash=sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4 \
--hash=sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9 \
--hash=sha256:f4ddbe407477f04c45115d1a4e5bc480f753553b534d338d4c3358b1cdd0ea52 \
--hash=sha256:f747dc8edcfe740130f28f32f3995e955494285717e86ee25af51db2219df08a \
--hash=sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c \
--hash=sha256:fc459e5d73be2d6332fcfe8dbf3d8994671fe33c700f4565988ecfa511547253 \
--hash=sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c
# via
# -c src/backend/requirements-dev.txt
# -r src/backend/requirements-dev.in
@ -496,9 +496,9 @@ isort==8.0.1 \
# via
# -c src/backend/requirements-dev.txt
# -r src/backend/requirements-dev.in
markdown-it-py==4.0.0 \
--hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \
--hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3
markdown-it-py==4.2.0 \
--hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \
--hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a
# via
# -c src/backend/requirements-dev.txt
# rich
@ -542,24 +542,24 @@ pluggy==1.6.0 \
# via
# -c src/backend/requirements-dev.txt
# pytest
prek==0.4.1 \
--hash=sha256:051c442b570b53756225410240577bee1aeace6be52955dfacf45a9783223b36 \
--hash=sha256:10e7e78ffe65dfba7d687a8c71b2f473554d1ba60f43c742105da4c0030feed9 \
--hash=sha256:17ffa9d8dd40791b9b99cafe558c5cc28e78e5be57607b280b15f0dab90264e9 \
--hash=sha256:2ab3460641762edf128b1ec8e833ce7e9ae015d1268a894560cb90d3393a7527 \
--hash=sha256:2d1805123ab5d730629de588bf319ea39e7078b589b3288c95740f1b4780a1d4 \
--hash=sha256:5b4a348537924b20e208cbd87ef58e96ec37d691c5bec2969209c40de0ecf72e \
--hash=sha256:60928d1dad45ff3e491d3083a50643cc213aa2d54f1dbd8d702d7193773c020e \
--hash=sha256:622a8812bda87cf4ddcae2dab5ccecc55b88d70c677129dbe25e975d923179f0 \
--hash=sha256:6e69a9c02ead38706a5d2a4ae209dccba08ccb5d0026e1d08e723c66ab964750 \
--hash=sha256:76663998827a2cbc94f5e209319809655489b5bd1f8e70568a623372e80253f0 \
--hash=sha256:7c515492ef3585e6bcd7b83f1bb1cb131038abc88ed2c843de1e4c3ceb865b19 \
--hash=sha256:8fa707971465d8ad021c907e43691aad7bb98942943e61e294ece5f95d9fbc78 \
--hash=sha256:b25807e0aa57d2118747e127b58e7a1bf41d5d7b3323f5f3f1f3cb10031245cc \
--hash=sha256:c0877e82c52359d655fe1072b3a5228639184d1d5f03c6803b6530cd6da1ef20 \
--hash=sha256:cdf4503a240369f66321213d9c4bc6f925014b64ff7121de9e9920c9b9838ce2 \
--hash=sha256:dc744fedf98df8a00a9e3bcd629b163fee5e9f9e22bce66029d9945241586165 \
--hash=sha256:efa95331c4c171a867c0064c19d8a4abc94a1c1c920c8b8092f2d7d87f4b90a8
prek==0.4.5 \
--hash=sha256:14109d37b33e5529db41a3539d4f8f72d295f6eeddede3964994d898b8cec05c \
--hash=sha256:1fd98b986767dafdb6b4305b563ee5a3a8f13bd3c78b98d708626815ea9f147f \
--hash=sha256:2be7bcf839de19a0144ed5a5aadf73bc5899cf6823bb1c58cf1d45ae389c201a \
--hash=sha256:40d262418105b2ede9836593a1927fc927cc8093c432e998640964102196996e \
--hash=sha256:50697089a86a78d16f087c1912a2f3bc2bea82319a220fac52cc8e3ec9fc0426 \
--hash=sha256:590427a42a3c1e5064487a0dc91167ae0c8a52168e77f574758ef9b138fcfd61 \
--hash=sha256:646a86a1a082dbd99fed96314b1064f5644bb34c1f4037a63547a18e2160fb86 \
--hash=sha256:66877ff21ae9d548f0f7e56fab8e65f1500a74a810e7749188c3f35a4a1b911b \
--hash=sha256:7546989b2403c96137bd79d19ebfe21facb87266cefe819db2458c3b9b23f350 \
--hash=sha256:86f76bd3d2ecf6fd9034d75c62ff4c786eb11d0dd0a1f79bbb4343b023e12769 \
--hash=sha256:8b2ac9227504371d97338215b344184cb0b31ca94113515a3a90c509c6c5a707 \
--hash=sha256:a586d14c3b852fdee1c3dcd0b9cb0915db9f9d054334b854fd9470bf68edf129 \
--hash=sha256:a8ed0d28f3e7790e4402a9324c386509066df6e67cc587f7406f9a245b97b7e8 \
--hash=sha256:aca9fa995536036a0171bcf7a4db96dc0a14f480054eda1d7d1c2e7739650993 \
--hash=sha256:e491a1a4641d91d8b03dcce5588397e76d2a5b432c9b0a6c70475972b4512ab4 \
--hash=sha256:f7517774c72b001573520dc7111156779fd3e5b4452c11f09ff53c71a067e835 \
--hash=sha256:fccd11613ae92619d1ecda0ab3359ceebeb38898909ec84a8d383733d12158cc
# via
# -c src/backend/requirements-dev.txt
# -r src/backend/requirements-dev.in
@ -585,9 +585,9 @@ pyproject-hooks==1.2.0 \
# -c src/backend/requirements-dev.txt
# build
# pip-tools
pytest==9.0.3 \
--hash=sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9 \
--hash=sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c
pytest==9.1.1 \
--hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
--hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
# via
# -c src/backend/requirements-dev.txt
# pytest-codspeed

View File

@ -10,9 +10,9 @@ build==1.5.0 \
--hash=sha256:13f3eecb844759ab66efec90ca17639bbf14dc06cb2fdf37a9010322d9c50a6f \
--hash=sha256:302c22c3ba2a0fd5f3911918651341ebb3896176cbdec15bd421f80b1afc7647
# via pip-tools
certifi==2026.5.20 \
--hash=sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 \
--hash=sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d
certifi==2026.6.17 \
--hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
--hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
# via
# -c src/backend/requirements.txt
# requests
@ -242,113 +242,113 @@ click==8.4.1 \
--hash=sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2 \
--hash=sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96
# via pip-tools
coverage[toml]==7.13.5 \
--hash=sha256:012d5319e66e9d5a218834642d6c35d265515a62f01157a45bcc036ecf947256 \
--hash=sha256:02ca0eed225b2ff301c474aeeeae27d26e2537942aa0f87491d3e147e784a82b \
--hash=sha256:03ccc709a17a1de074fb1d11f217342fb0d2b1582ed544f554fc9fc3f07e95f5 \
--hash=sha256:0428cbef5783ad91fe240f673cc1f76b25e74bbfe1a13115e4aa30d3f538162d \
--hash=sha256:04690832cbea4e4663d9149e05dba142546ca05cb1848816760e7f58285c970a \
--hash=sha256:0590e44dd2745c696a778f7bab6aa95256de2cbc8b8cff4f7db8ff09813d6969 \
--hash=sha256:0672854dc733c342fa3e957e0605256d2bf5934feeac328da9e0b5449634a642 \
--hash=sha256:084b84a8c63e8d6fc7e3931b316a9bcafca1458d753c539db82d31ed20091a87 \
--hash=sha256:0b67af5492adb31940ee418a5a655c28e48165da5afab8c7fa6fd72a142f8740 \
--hash=sha256:0cd9ed7a8b181775459296e402ca4fb27db1279740a24e93b3b41942ebe4b215 \
--hash=sha256:0cef0cdec915d11254a7f549c1170afecce708d30610c6abdded1f74e581666d \
--hash=sha256:0e223ce4b4ed47f065bfb123687686512e37629be25cc63728557ae7db261422 \
--hash=sha256:0e3c426ffc4cd952f54ee9ffbdd10345709ecc78a3ecfd796a57236bfad0b9b8 \
--hash=sha256:0ecf12ecb326fe2c339d93fc131816f3a7367d223db37817208905c89bded911 \
--hash=sha256:10a0c37f0b646eaff7cce1874c31d1f1ccb297688d4c747291f4f4c70741cc8b \
--hash=sha256:145ede53ccbafb297c1c9287f788d1bc3efd6c900da23bf6931b09eafc931587 \
--hash=sha256:1b11eef33edeae9d142f9b4358edb76273b3bfd30bc3df9a4f95d0e49caf94e8 \
--hash=sha256:1b88c69c8ef5d4b6fe7dea66d6636056a0f6a7527c440e890cf9259011f5e606 \
--hash=sha256:258354455f4e86e3e9d0d17571d522e13b4e1e19bf0f8596bcf9476d61e7d8a9 \
--hash=sha256:259b69bb83ad9894c4b25be2528139eecba9a82646ebdda2d9db1ba28424a6bf \
--hash=sha256:2aa055ae1857258f9e0045be26a6d62bdb47a72448b62d7b55f4820f361a2633 \
--hash=sha256:2d3807015f138ffea1ed9afeeb8624fd781703f2858b62a8dd8da5a0994c57b6 \
--hash=sha256:301e3b7dfefecaca37c9f1aa6f0049b7d4ab8dd933742b607765d757aca77d43 \
--hash=sha256:32ca0c0114c9834a43f045a87dcebd69d108d8ffb666957ea65aa132f50332e2 \
--hash=sha256:34b02417cf070e173989b3db962f7ed56d2f644307b2cf9d5a0f258e13084a61 \
--hash=sha256:356e76b46783a98c2a2fe81ec79df4883a1e62895ea952968fb253c114e7f930 \
--hash=sha256:35a31f2b1578185fbe6aa2e74cea1b1d0bbf4c552774247d9160d29b80ed56cc \
--hash=sha256:380e8e9084d8eb38db3a9176a1a4f3c0082c3806fa0dc882d1d87abc3c789247 \
--hash=sha256:3ad050321264c49c2fa67bb599100456fc51d004b82534f379d16445da40fb75 \
--hash=sha256:3e1bb5f6c78feeb1be3475789b14a0f0a5b47d505bfc7267126ccbd50289999e \
--hash=sha256:3f4818d065964db3c1c66dc0fbdac5ac692ecbc875555e13374fdbe7eedb4376 \
--hash=sha256:460cf0114c5016fa841214ff5564aa4864f11948da9440bc97e21ad1f4ba1e01 \
--hash=sha256:48c39bc4a04d983a54a705a6389512883d4a3b9862991b3617d547940e9f52b1 \
--hash=sha256:4b59148601efcd2bac8c4dbf1f0ad6391693ccf7a74b8205781751637076aee3 \
--hash=sha256:4d2afbc5cc54d286bfb54541aa50b64cdb07a718227168c87b9e2fb8f25e1743 \
--hash=sha256:505d7083c8b0c87a8fa8c07370c285847c1f77739b22e299ad75a6af6c32c5c9 \
--hash=sha256:52f444e86475992506b32d4e5ca55c24fc88d73bcbda0e9745095b28ef4dc0cf \
--hash=sha256:5b13955d31d1633cf9376908089b7cebe7d15ddad7aeaabcbe969a595a97e95e \
--hash=sha256:5ec4af212df513e399cf11610cc27063f1586419e814755ab362e50a85ea69c1 \
--hash=sha256:60365289c3741e4db327e7baff2a4aaacf22f788e80fa4683393891b70a89fbd \
--hash=sha256:631efb83f01569670a5e866ceb80fe483e7c159fac6f167e6571522636104a0b \
--hash=sha256:6697e29b93707167687543480a40f0db8f356e86d9f67ddf2e37e2dfd91a9dab \
--hash=sha256:66a80c616f80181f4d643b0f9e709d97bcea413ecd9631e1dedc7401c8e6695d \
--hash=sha256:67e9bc5449801fad0e5dff329499fb090ba4c5800b86805c80617b4e29809b2a \
--hash=sha256:68a4953be99b17ac3c23b6efbc8a38330d99680c9458927491d18700ef23ded0 \
--hash=sha256:6c36ddb64ed9d7e496028d1d00dfec3e428e0aabf4006583bb1839958d280510 \
--hash=sha256:6e3370441f4513c6252bf042b9c36d22491142385049243253c7e48398a15a9f \
--hash=sha256:7034b5c56a58ae5e85f23949d52c14aca2cfc6848a31764995b7de88f13a1ea0 \
--hash=sha256:704de6328e3d612a8f6c07000a878ff38181ec3263d5a11da1db294fa6a9bdf8 \
--hash=sha256:7132bed4bd7b836200c591410ae7d97bf7ae8be6fc87d160b2bd881df929e7bf \
--hash=sha256:7300c8a6d13335b29bb76d7651c66af6bd8658517c43499f110ddc6717bfc209 \
--hash=sha256:750db93a81e3e5a9831b534be7b1229df848b2e125a604fe6651e48aa070e5f9 \
--hash=sha256:777c4d1eff1b67876139d24288aaf1817f6c03d6bae9c5cc8d27b83bcfe38fe3 \
--hash=sha256:78e696e1cc714e57e8b25760b33a8b1026b7048d270140d25dafe1b0a1ee05a3 \
--hash=sha256:79060214983769c7ba3f0cee10b54c97609dca4d478fa1aa32b914480fd5738d \
--hash=sha256:7c8d4bc913dd70b93488d6c496c77f3aff5ea99a07e36a18f865bca55adef8bd \
--hash=sha256:7f2c47b36fe7709a6e83bfadf4eefb90bd25fbe4014d715224c4316f808e59a2 \
--hash=sha256:800bc829053c80d240a687ceeb927a94fd108bbdc68dfbe505d0d75ab578a882 \
--hash=sha256:843ea8643cf967d1ac7e8ecd4bb00c99135adf4816c0c0593fdcc47b597fcf09 \
--hash=sha256:8769751c10f339021e2638cd354e13adeac54004d1941119b2c96fe5276d45ea \
--hash=sha256:8dd02af98971bdb956363e4827d34425cb3df19ee550ef92855b0acb9c7ce51c \
--hash=sha256:8fdf453a942c3e4d99bd80088141c4c6960bb232c409d9c3558e2dbaa3998562 \
--hash=sha256:941617e518602e2d64942c88ec8499f7fbd49d3f6c4327d3a71d43a1973032f3 \
--hash=sha256:972a9cd27894afe4bc2b1480107054e062df08e671df7c2f18c205e805ccd806 \
--hash=sha256:9adb6688e3b53adffefd4a52d72cbd8b02602bfb8f74dcd862337182fd4d1a4e \
--hash=sha256:9b74db26dfea4f4e50d48a4602207cd1e78be33182bc9cbf22da94f332f99878 \
--hash=sha256:9bb2a28101a443669a423b665939381084412b81c3f8c0fcfbac57f4e30b5b8e \
--hash=sha256:9d44d7aa963820b1b971dbecd90bfe5fe8f81cff79787eb6cca15750bd2f79b9 \
--hash=sha256:9dacc2ad679b292709e0f5fc1ac74a6d4d5562e424058962c7bb0c658ad25e45 \
--hash=sha256:9ddb4f4a5479f2539644be484da179b653273bca1a323947d48ab107b3ed1f29 \
--hash=sha256:a1a6d79a14e1ec1832cabc833898636ad5f3754a678ef8bb4908515208bf84f4 \
--hash=sha256:a698e363641b98843c517817db75373c83254781426e94ada3197cabbc2c919c \
--hash=sha256:ad14385487393e386e2ea988b09d62dd42c397662ac2dabc3832d71253eee479 \
--hash=sha256:ad146744ca4fd09b50c482650e3c1b1f4dfa1d4792e0a04a369c7f23336f0400 \
--hash=sha256:b5db73ba3c41c7008037fa731ad5459fc3944cb7452fc0aa9f822ad3533c583c \
--hash=sha256:bd3a2fbc1c6cccb3c5106140d87cc6a8715110373ef42b63cf5aea29df8c217a \
--hash=sha256:bdba0a6b8812e8c7df002d908a9a2ea3c36e92611b5708633c50869e6d922fdf \
--hash=sha256:be3d4bbad9d4b037791794ddeedd7d64a56f5933a2c1373e18e9e568b9141686 \
--hash=sha256:bf69236a9a81bdca3bff53796237aab096cdbf8d78a66ad61e992d9dac7eb2de \
--hash=sha256:bff95879c33ec8da99fc9b6fe345ddb5be6414b41d6d1ad1c8f188d26f36e028 \
--hash=sha256:c555b48be1853fe3997c11c4bd521cdd9a9612352de01fa4508f16ec341e6fe0 \
--hash=sha256:c81f6515c4c40141f83f502b07bbfa5c240ba25bbe73da7b33f1e5b6120ff179 \
--hash=sha256:c9136ff29c3a91e25b1d1552b5308e53a1e0653a23e53b6366d7c2dcbbaf8a16 \
--hash=sha256:ce1998c0483007608c8382f4ff50164bfc5bd07a2246dd272aa4043b75e61e85 \
--hash=sha256:cec2d83125531bd153175354055cdb7a09987af08a9430bd173c937c6d0fba2a \
--hash=sha256:cff784eef7f0b8f6cb28804fbddcfa99f89efe4cc35fb5627e3ac58f91ed3ac0 \
--hash=sha256:d2c87e0c473a10bffe991502eac389220533024c8082ec1ce849f4218dded810 \
--hash=sha256:d7cfad2d6d81dd298ab6b89fe72c3b7b05ec7544bdda3b707ddaecff8d25c161 \
--hash=sha256:d8a7a2049c14f413163e2bdabd37e41179b1d1ccb10ffc6ccc4b7a718429c607 \
--hash=sha256:da305e9937617ee95c2e39d8ff9f040e0487cbf1ac174f777ed5eddd7a7c1f26 \
--hash=sha256:da86cdcf10d2519e10cabb8ac2de03da1bcb6e4853790b7fbd48523332e3a819 \
--hash=sha256:dc022073d063b25a402454e5712ef9e007113e3a676b96c5f29b2bda29352f40 \
--hash=sha256:e0723d2c96324561b9aa76fb982406e11d93cdb388a7a7da2b16e04719cf7ca5 \
--hash=sha256:e092b9499de38ae0fbfbc603a74660eb6ff3e869e507b50d85a13b6db9863e15 \
--hash=sha256:e0b216a19534b2427cc201a26c25da4a48633f29a487c61258643e89d28200c0 \
--hash=sha256:e1c85e0b6c05c592ea6d8768a66a254bfb3874b53774b12d4c89c481eb78cb90 \
--hash=sha256:e301d30dd7e95ae068671d746ba8c34e945a82682e62918e41b2679acd2051a0 \
--hash=sha256:e808af52a0513762df4d945ea164a24b37f2f518cbe97e03deaa0ee66139b4d6 \
--hash=sha256:eb07647a5738b89baab047f14edd18ded523de60f3b30e75c2acc826f79c839a \
--hash=sha256:eb7fdf1ef130660e7415e0253a01a7d5a88c9c4d158bcf75cbbd922fd65a5b58 \
--hash=sha256:ec10e2a42b41c923c2209b846126c6582db5e43a33157e9870ba9fb70dc7854b \
--hash=sha256:ee2aa19e03161671ec964004fb74b2257805d9710bf14a5c704558b9d8dbaf17 \
--hash=sha256:f08fd75c50a760c7eb068ae823777268daaf16a80b918fa58eea888f8e3919f5 \
--hash=sha256:f4cd16206ad171cbc2470dbea9103cf9a7607d5fe8c242fdf1edf36174020664 \
--hash=sha256:f70c9ab2595c56f81a89620e22899eea8b212a4041bd728ac6f4a28bf5d3ddd0 \
--hash=sha256:fbabfaceaeb587e16f7008f7795cd80d20ec548dc7f94fbb0d4ec2e038ce563f
coverage[toml]==7.14.1 \
--hash=sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86 \
--hash=sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd \
--hash=sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d \
--hash=sha256:042c46ded7c288aeb07cf14a28b6c1e10b78fcba40171c3fa1e939377eeef0b5 \
--hash=sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42 \
--hash=sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de \
--hash=sha256:10274a1fbeb8ec5d72966e17bb198a3104257aca4ac09d98667c5f8aca8c8548 \
--hash=sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1 \
--hash=sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7 \
--hash=sha256:1238cb94638e610e972c60dac68e813f868dc7d6e982535270558443058d9d59 \
--hash=sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906 \
--hash=sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af \
--hash=sha256:17a5a241e5997621a956a7f402a7433ef4221e5152809b785bec79e2323799f1 \
--hash=sha256:1896f5e19ff3f0431c7ce2172adc54890fd97f86b59ced8ca1649145d9ffe35d \
--hash=sha256:196a13319ad88d6d8ef5ab489ec4f44ddde2143c0c7d5b27786f6c3ffd56a7e1 \
--hash=sha256:221c70f316241a78e77e607c227cefc8808d4e08f28d99c04f35694690e940be \
--hash=sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02 \
--hash=sha256:2224f89ffd0c5605ccce1ed7a584da162bc7c55f601ab1c946bc9de31a486b42 \
--hash=sha256:23bf7fa51ac02e07fc7c96849b82946da47ae862dc8f86d183b2a4864fc38129 \
--hash=sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e \
--hash=sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be \
--hash=sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e \
--hash=sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65 \
--hash=sha256:370c5afae3fa0658e11694a32b24c2778f6bc2d17718121f94ee185e69f26b54 \
--hash=sha256:3758dd0a7f1fa57365ef2e781df0f0731d38b6e3772259d13dae4bd8a958d4b1 \
--hash=sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5 \
--hash=sha256:3a56abc20a472baf0304c455721bc601477440d28ecfde8a03dde79ede07e0df \
--hash=sha256:3c18ebc343e15be53049b3a2dce38fe82d58f37e20ab9094b3a39c0aa4f6bb47 \
--hash=sha256:3d452fd08b5c72c5167c93e6867b5c08500bd40f2a21e1e854a500550b6cc36f \
--hash=sha256:3e3680291c4a1d0dadfa84a2c459576a4af5133abb617905714339a0c73138cf \
--hash=sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37 \
--hash=sha256:46f714d2fb8ae2f4f29f23ada7f1e79b759fff5a70f94a1dac23af204c3ec9e4 \
--hash=sha256:478b5bcd63c2e1357c5c7e16c070690df7b07f676b1c114d7b93e533c664309f \
--hash=sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84 \
--hash=sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1 \
--hash=sha256:4ea1c034f95c9b056e856b794630b17f9fa3d57e4800ff1e503d3be0f9c9078c \
--hash=sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8 \
--hash=sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e \
--hash=sha256:59baf88468dbc8d63b1887afd92bda52e40bb1561696e5819670601403810cec \
--hash=sha256:5a1c5215be81035e629d5bc756650634d0bf31991038db7a0eccb90f025ce16d \
--hash=sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54 \
--hash=sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890 \
--hash=sha256:5f0cfc27c539f07cf5c0a4cfe211d0b6cae039f8f40526dbaa71944e64b50a7b \
--hash=sha256:6223a72fd0e4c7156353ec0f08a5f93623e1d3034d0e2683b9bb8ea674131b1d \
--hash=sha256:62a9f70b52e0b5a95cfef4a5c5641b06983cadc5e538a3feeb5c00211f523ac2 \
--hash=sha256:62fd185ef9df3c33d1c8178c5af105f762afbad96038de9a4ae100aa6297ca33 \
--hash=sha256:6a3cb83d1552c0cd1b4906655b6a33fd4a8473229633a901c6b73bf86914dee9 \
--hash=sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e \
--hash=sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6 \
--hash=sha256:6ff665fb023a77386fe11685190cee1f60a7d635994a30d9b0a061533d470fce \
--hash=sha256:7279d2110a28cebc738b6459ecda2771735a4c18465fbbd36b3288fe5ed92247 \
--hash=sha256:76a085d7005236a767e3426148b2c407e53ad61695c562f8a81da2d373324901 \
--hash=sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36 \
--hash=sha256:79058c47dae6788504b5effb319961bcd72d7240551464b91d474bc0ed186d69 \
--hash=sha256:7af486dabe8954d03b087f0021540897afe084f04e16ff5579e08cc46f871416 \
--hash=sha256:7f02d09f70776579b926d889a4c9c235070a1f47c40458aeaca563fae5acfdb5 \
--hash=sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500 \
--hash=sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad \
--hash=sha256:84ac9499e48700399a5dd0ea7085b5091961fec52c68d66b4ec0d3cf7f4441b1 \
--hash=sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b \
--hash=sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b \
--hash=sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a \
--hash=sha256:87ebdf787d4888e3f3f2d523eadc6e18c6d18c6d0eb173801a189641627fb37e \
--hash=sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee \
--hash=sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07 \
--hash=sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a \
--hash=sha256:9eeb3fcbc13ba40dfbdb22d01d196a28e9cef9ed4c29b60061a1e0e823a9929d \
--hash=sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c \
--hash=sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343 \
--hash=sha256:a24a81f9715ee42ef59a316cc11611c98fe23920f7c81861315c9f3ff4a230f4 \
--hash=sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2 \
--hash=sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8 \
--hash=sha256:a5274669f37f2343635a347b91a60777621341ab3378e9c6ac9335eee704bddf \
--hash=sha256:aa5e304a873fabddc11e484e9b6b738bd38bd7bed17b09aa84eecf5332e8b8bb \
--hash=sha256:ab4af6352741a604c431c6072fce5bee33bf0f20dc7a56618d6bf6bb89e9810c \
--hash=sha256:b553d04b5e778a8e56d57eb134aff42a92718ecba45e79c4764ecfa40efd92ff \
--hash=sha256:b84800013769a78ccb9ef4659402e26d06867e337b61ec365f77ad008adea80e \
--hash=sha256:b84ffdf877644e7096aa936991efeed873f7f3df57b9cd001312b7668ab08550 \
--hash=sha256:bcaa50684dcaadfa599ac48f81103c756d791cfd85c97203d2217c593d48b860 \
--hash=sha256:be9f2c802dcfce3f71298303aa5dad0dce440a76c52f2f60dacd8656dab78793 \
--hash=sha256:c643734307300234fafa36bf2a040a7235f8f177ea1fd6ec1423aea6fb7b929f \
--hash=sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851 \
--hash=sha256:c7e057326434e441306226fbeb5d1aaf14a2637efe97ba668306635835f32ad7 \
--hash=sha256:c912c259304cfb5ee584481cfb7ce1ff932b4d61e6c9140b8f19cb7b5ed82332 \
--hash=sha256:ce66d8e46da2bb5ee313a745cbd2e391d319176c1f7a9451bfcd3a2fb920859b \
--hash=sha256:ced2f09ef276fd58611a1ef502164ad266d2b75174e5a40cabbdb4033f9f6cf2 \
--hash=sha256:cfe5a5fec635799ef33428f1e5e61bafa45a92a96190ba731561ba558ccc214d \
--hash=sha256:d13e6725992e2d2fd7d81d4f5241952d13740121dfd501da09201be39b2c003a \
--hash=sha256:d34d75f892b3ab73ba11cab5442cce7b3e168fd64162b16f0e1e0d09c508edef \
--hash=sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474 \
--hash=sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee \
--hash=sha256:da028256b04ec30e5e0114b6f76172938c313991f0a2d3d894271315cf5d5e43 \
--hash=sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034 \
--hash=sha256:dd34767fa19848d35659ffc0a75314f58c7af3f1cd87ec521e8292a1238398a3 \
--hash=sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c \
--hash=sha256:de286598cc65d2b489411174b1faec2f5a7775fb3201fd925db2a76b4030f37d \
--hash=sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7 \
--hash=sha256:e854312c4103f2ad4c0dc023b69b77ebfd2c89db5f86c4c94dc2353f9a92167e \
--hash=sha256:ea8cd6ca0ee9f616aaef3afc6882e32c2cbf18b00d96313ffd76af650574034d \
--hash=sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4 \
--hash=sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9 \
--hash=sha256:f4ddbe407477f04c45115d1a4e5bc480f753553b534d338d4c3358b1cdd0ea52 \
--hash=sha256:f747dc8edcfe740130f28f32f3995e955494285717e86ee25af51db2219df08a \
--hash=sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c \
--hash=sha256:fc459e5d73be2d6332fcfe8dbf3d8994671fe33c700f4565988ecfa511547253 \
--hash=sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c
# via -r src/backend/requirements-dev.in
cryptography==48.0.1 \
--hash=sha256:08a597acce1ff37f347400087776599e2348a3a8bc53b44120e463cd274efe4a \
@ -456,9 +456,9 @@ isort==8.0.1 \
--hash=sha256:171ac4ff559cdc060bcfff550bc8404a486fee0caab245679c2abe7cb253c78d \
--hash=sha256:28b89bc70f751b559aeca209e6120393d43fbe2490de0559662be7a9787e3d75
# via -r src/backend/requirements-dev.in
markdown-it-py==4.0.0 \
--hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \
--hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3
markdown-it-py==4.2.0 \
--hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \
--hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a
# via rich
mdurl==0.1.2 \
--hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
@ -488,24 +488,24 @@ pluggy==1.6.0 \
--hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \
--hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
# via pytest
prek==0.4.1 \
--hash=sha256:051c442b570b53756225410240577bee1aeace6be52955dfacf45a9783223b36 \
--hash=sha256:10e7e78ffe65dfba7d687a8c71b2f473554d1ba60f43c742105da4c0030feed9 \
--hash=sha256:17ffa9d8dd40791b9b99cafe558c5cc28e78e5be57607b280b15f0dab90264e9 \
--hash=sha256:2ab3460641762edf128b1ec8e833ce7e9ae015d1268a894560cb90d3393a7527 \
--hash=sha256:2d1805123ab5d730629de588bf319ea39e7078b589b3288c95740f1b4780a1d4 \
--hash=sha256:5b4a348537924b20e208cbd87ef58e96ec37d691c5bec2969209c40de0ecf72e \
--hash=sha256:60928d1dad45ff3e491d3083a50643cc213aa2d54f1dbd8d702d7193773c020e \
--hash=sha256:622a8812bda87cf4ddcae2dab5ccecc55b88d70c677129dbe25e975d923179f0 \
--hash=sha256:6e69a9c02ead38706a5d2a4ae209dccba08ccb5d0026e1d08e723c66ab964750 \
--hash=sha256:76663998827a2cbc94f5e209319809655489b5bd1f8e70568a623372e80253f0 \
--hash=sha256:7c515492ef3585e6bcd7b83f1bb1cb131038abc88ed2c843de1e4c3ceb865b19 \
--hash=sha256:8fa707971465d8ad021c907e43691aad7bb98942943e61e294ece5f95d9fbc78 \
--hash=sha256:b25807e0aa57d2118747e127b58e7a1bf41d5d7b3323f5f3f1f3cb10031245cc \
--hash=sha256:c0877e82c52359d655fe1072b3a5228639184d1d5f03c6803b6530cd6da1ef20 \
--hash=sha256:cdf4503a240369f66321213d9c4bc6f925014b64ff7121de9e9920c9b9838ce2 \
--hash=sha256:dc744fedf98df8a00a9e3bcd629b163fee5e9f9e22bce66029d9945241586165 \
--hash=sha256:efa95331c4c171a867c0064c19d8a4abc94a1c1c920c8b8092f2d7d87f4b90a8
prek==0.4.5 \
--hash=sha256:14109d37b33e5529db41a3539d4f8f72d295f6eeddede3964994d898b8cec05c \
--hash=sha256:1fd98b986767dafdb6b4305b563ee5a3a8f13bd3c78b98d708626815ea9f147f \
--hash=sha256:2be7bcf839de19a0144ed5a5aadf73bc5899cf6823bb1c58cf1d45ae389c201a \
--hash=sha256:40d262418105b2ede9836593a1927fc927cc8093c432e998640964102196996e \
--hash=sha256:50697089a86a78d16f087c1912a2f3bc2bea82319a220fac52cc8e3ec9fc0426 \
--hash=sha256:590427a42a3c1e5064487a0dc91167ae0c8a52168e77f574758ef9b138fcfd61 \
--hash=sha256:646a86a1a082dbd99fed96314b1064f5644bb34c1f4037a63547a18e2160fb86 \
--hash=sha256:66877ff21ae9d548f0f7e56fab8e65f1500a74a810e7749188c3f35a4a1b911b \
--hash=sha256:7546989b2403c96137bd79d19ebfe21facb87266cefe819db2458c3b9b23f350 \
--hash=sha256:86f76bd3d2ecf6fd9034d75c62ff4c786eb11d0dd0a1f79bbb4343b023e12769 \
--hash=sha256:8b2ac9227504371d97338215b344184cb0b31ca94113515a3a90c509c6c5a707 \
--hash=sha256:a586d14c3b852fdee1c3dcd0b9cb0915db9f9d054334b854fd9470bf68edf129 \
--hash=sha256:a8ed0d28f3e7790e4402a9324c386509066df6e67cc587f7406f9a245b97b7e8 \
--hash=sha256:aca9fa995536036a0171bcf7a4db96dc0a14f480054eda1d7d1c2e7739650993 \
--hash=sha256:e491a1a4641d91d8b03dcce5588397e76d2a5b432c9b0a6c70475972b4512ab4 \
--hash=sha256:f7517774c72b001573520dc7111156779fd3e5b4452c11f09ff53c71a067e835 \
--hash=sha256:fccd11613ae92619d1ecda0ab3359ceebeb38898909ec84a8d383733d12158cc
# via -r src/backend/requirements-dev.in
pycparser==3.0 \
--hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
@ -525,9 +525,9 @@ pyproject-hooks==1.2.0 \
# via
# build
# pip-tools
pytest==9.0.3 \
--hash=sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9 \
--hash=sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c
pytest==9.1.1 \
--hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
--hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
# via
# pytest-codspeed
# pytest-django

View File

@ -95,15 +95,15 @@ blessed==1.44.0 \
--hash=sha256:d3b5037f0143eb7c80b2000be5bcdf86161af68aed231b91deadbce4e7379785 \
--hash=sha256:e1d2ed93d3d90d0a1494a8b134d188c83fb89ae25590af638b921e8c1c8fa223
# via -r src/backend/requirements.in
boto3==1.43.23 \
--hash=sha256:5d26498702ffd021dc0d57d0eefcc7101cd995ea0ed08c057c9b631efccbaa48 \
--hash=sha256:8afc058924ef8a5c62467fe2e1e2e0304c22018587a044714da89f9c602ba856
boto3==1.43.34 \
--hash=sha256:42595057324606928c6e2432b3093978e4d722e0d432bce942f2a385702c0a43 \
--hash=sha256:444207c6c883d4df3ea3b2c36df43ad492b86e0b889eebd2fc1d5ea8db0a8a1a
# via
# django-anymail
# django-storages
botocore==1.43.23 \
--hash=sha256:69ff3d951cb644d1d84db646663c7eb919dc9c0c47e5768e947c8a71121b3d77 \
--hash=sha256:a6737c598750f330bfa8ef2be2d9fa84b5d2d643b6bbb0d22e129e03b7535df1
botocore==1.43.34 \
--hash=sha256:238a0269f33c5914b9343900b44767e783b3e8b6dcb6e065eac8b4495601c5df \
--hash=sha256:ccc973cf30c6445b30afe5760f6dc949a80f1f862cb23d9c45747f2c814ece77
# via
# boto3
# s3transfer
@ -209,9 +209,9 @@ brotli==1.2.0 \
--hash=sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361 \
--hash=sha256:ff09cd8c5eec3b9d02d2408db41be150d8891c5566addce57513bf546e3d6c6d
# via fonttools
certifi==2026.5.20 \
--hash=sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897 \
--hash=sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d
certifi==2026.6.17 \
--hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
--hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
# via
# requests
# sentry-sdk
@ -574,9 +574,9 @@ django-ipware==7.0.1 \
--hash=sha256:d9ec43d2bf7cdf216fed8d494a084deb5761a54860a53b2e74346a4f384cff47 \
--hash=sha256:db16bbee920f661ae7f678e4270460c85850f03c6761a4eaeb489bdc91f64709
# via django-structlog
django-js-asset==3.1.2 \
--hash=sha256:1fc7584199ed1941ed7c8e7b87ca5524bb0f2ba941561d2a104e88ee9f07bedd \
--hash=sha256:b5ffe376aebbd73b7af886d675ac9f43ca63b39540190fa8409c9f8e79145f68
django-js-asset==4.0.1 \
--hash=sha256:51ad1060115bf741bef88dc1287ca7f70e1d6ea7cf935f52a34f39eca9bd9db1 \
--hash=sha256:967ac7d95ce094d9f65f358278bcd494201e2f9bbee936430150de83eac9f656
# via django-mptt
django-mailbox==4.10.1 \
--hash=sha256:9060a4ddc81d16aa699e266649c12eaf4f29671b5266352e2fad3043a6832b52
@ -589,9 +589,9 @@ django-markdownify==0.9.7 \
--hash=sha256:2e59dfd445ad6362288f7bc1574e45d8356848463e261b878fd70df6a272c47f \
--hash=sha256:ca3a6361f952d1c1b661c13229f69219a36e745358aa0f377212aef8f09e4cf3
# via -r src/backend/requirements.in
django-money==3.6.0 \
--hash=sha256:94402f2831f2726b94ef2da35b4059441b4c0aedfc47b312472200d4ffdf8d73 \
--hash=sha256:a8d249bf3ce6ad7fb953530c920cc85ea7f1137c0fde747a74204ea24ec97ab1
django-money==3.6.1 \
--hash=sha256:32a8027a91dea969951a34a9cc4a4f101aaa6ec45e7f784f0b17ec7813818fb2 \
--hash=sha256:9b25d992a457af932eef1e5fef0098dd3ff0c92f4255d2d6d452af772b2fdde5
# via -r src/backend/requirements.in
django-mptt==0.18.0 \
--hash=sha256:bfa3f01627e3966a1df901aeca74570a3e933e66809ebf58d9df673e63627afb \
@ -795,58 +795,58 @@ googleapis-common-protos==1.75.0 \
# via
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
grpcio==1.81.0 \
--hash=sha256:0fba53cb96004b2b7fb758b46b2288cb49d0b658316a4e73f3ef67230616ee65 \
--hash=sha256:194eddfacc84d80f50512e9fd4ee851d5f2499f18f299c95aa8fb4748f0537e0 \
--hash=sha256:19f201da7b4e5c0559198abe5a97157e726f3abe6e8f5e832d4a50740f6dcc22 \
--hash=sha256:21ec30b9ea320c8207ea7cd05873ad64aa69fdd0e81b6758b3347983ba20b50a \
--hash=sha256:275144b0115353339dbb8a6f28a9cf8997b5bf40e37f8f66ac0b0ea57e95b43f \
--hash=sha256:300f3337b6425fd16ead9a4f9b2ac25801acb64aa5bc0b99eb69901645b2b1d2 \
--hash=sha256:3755c9669307cad18e7e009860fdea98118978d2300451bd8530a53048e741e7 \
--hash=sha256:3d4e0ce5a40a998cf608c8ba60ecfe18fdf364a9aa193ae4ac3faeecd0e86757 \
--hash=sha256:40edffb4ec3689373825d367c4457727047a6e554f03245265ecc8cc03215f22 \
--hash=sha256:43c121e135ae44d1559b430db2b2dfad7421cbbe40e1deba506c7dc62b439719 \
--hash=sha256:4e032feb3bfb4e2749b140a2302a6baa8ead1b9781ff5cf7094e4402b5e9372e \
--hash=sha256:5192857589f223e5a98ff0e31f6e551b19040e647d17bfe10116c8a2ce3b8696 \
--hash=sha256:57b3b0e73a518fa286959b40c3eddd02703504ca186e8b7b2945954519bd8b2c \
--hash=sha256:5e925a70fe99fe5794f7beca0ea034c75f068afcc356d79047e73f99cdcca34c \
--hash=sha256:62bbe463c9f0f2ff24e31bd25f8dd8b4bae78900e315915a3195a0ef1471a855 \
--hash=sha256:638ccc1b86f7540170a169cb900799b9296a1381e47879ce60b0de9d3db73d33 \
--hash=sha256:725801c7086d7e4cd160e42bb2f54e0aeb976b9568df3cc6f843b15d29b79fb1 \
--hash=sha256:77eb4e9fe61486bd1198cc7236ebb0f70e66234e63c0348f40bc2553ed16a88b \
--hash=sha256:7915a2e63acdc05264a206e1bddfd8e1fb8a29e406c18d72d30f8c124e021374 \
--hash=sha256:794e6aa648e8df47d8f908dc8c3b42347d04ec58438f1dcd4e445f09b4f6b0ce \
--hash=sha256:8226ba097eed660ef14d36c6a69b85038552bb8b6d17b44a5aa6f9abf48b8e08 \
--hash=sha256:87e33b7afcfb3585121b5f007d2c52b8c534104d18f556e840d35193ca2a9141 \
--hash=sha256:8bb1789c94322a13336a2b6c58d9c14d68f8628b6e24205a799c69f5bf8516ce \
--hash=sha256:8c0855a350886f713b9e458e2a10d208009dcaa849f574e39cd6067db1fe1279 \
--hash=sha256:909bb3222b53235498d2c5817a0596d82b0aaea490ba93fdf1b060e2938a543c \
--hash=sha256:97bbd623f7ded558fd4f7cb5a4f600c4d4de65c5dd364c83a5b14b2a10a2d3b5 \
--hash=sha256:98c6240f563178fc5877bd50e6ff274463e53e1472128f4110742450739659fa \
--hash=sha256:9f355384e5543ab77a755a7085225ecc19f32b76032e851cbd8145715d79dec8 \
--hash=sha256:a524cd530900bd24511fcb7f2ed144da4ea37711c4b094475d0bceca7a93a170 \
--hash=sha256:a5acd7efd3b1fe9b4eb0bcaaa1507eed68a0ad0678b654c3f7b464df9ba9dca5 \
--hash=sha256:a9351055f52660b58f3d4890ea66188b5134399f82b11aa0c55bd4b99eff5390 \
--hash=sha256:aa948712c8e5fa40ec250870bda14bc7578e1bb832a8912d9d2a0f720518edbe \
--hash=sha256:aaaa4f7f2057d795952e4eacf3f342be8b5b156992f6ac85023c8b98794ebd47 \
--hash=sha256:b4108e5d9d0f651b7eea749116181fe6c315b145661a80ec31f05ec2dbe21af7 \
--hash=sha256:b76ea9d55cd08fcdbda25d28e0f76679536710acb7fbd5b1f70cb4ac49317265 \
--hash=sha256:b8b025b6af43ee0ad4a70307025d77bcab5adde7c4597786010d802c203e9fc5 \
--hash=sha256:b93cee313cae4e113fbb3a0ce1ea5633db6f63cfde2b2dc1d817429026b2a50b \
--hash=sha256:c197e2ef75a442528072b29e9755da299110e8610e8bcbb59a6b4cf55384f005 \
--hash=sha256:c36f5d5e97944cbda2d4096b4ae262e6e68506246b61582acf1b8591607f3ccc \
--hash=sha256:c4fe218c5a35e1d87a5a26544237f1fa41dfd9cbd3c856b0810a30061f8b0aaf \
--hash=sha256:c6ff087cb1f563f47b504b4e29e684129fc5ae4863faf3ebca08a327764ee6cb \
--hash=sha256:cd78145b7f7784661c524624f3526c9c6f891b30a4b54cb93a40806d0d0d61e9 \
--hash=sha256:db217c2e52931719f9937bd12082cd4d7b495b35803d5760686975c285924bf8 \
--hash=sha256:dbdb99986548a7e87f8343805ef315fd4eb50ffaabf4fb1206e42f2542bb805d \
--hash=sha256:e4d053900a0d24b75d7521139a3872150301b3d6bde3bed5e12318fb25791e4d \
--hash=sha256:e7746ba3e6efc9e2b748eff59470a2b8684d5a9ec607c6580bcaa5be175820bc \
--hash=sha256:f345de40ef2e65f63645d53d251824e6070e07804827c5b00ec2e44555f9f901 \
--hash=sha256:f750a091fff3a3991731abc1f818bdc64874bb3528162732cb4d45f2e07821a6 \
--hash=sha256:f85570a016d794c29b1e76cf22f67af4486ddbe779e0f30674f138fa4e1769ec \
--hash=sha256:fbbe81314a9d92156abce8b62c09364eb8bafc0ca2a19919a45ec64b5c6cb664 \
--hash=sha256:ff83d889e3ebf6341c8c7864ad8031591ad5ca61599072fc511644d1eb962d2b
grpcio==1.81.1 \
--hash=sha256:0490c30c261eded63f3f354979f9dc4502a9fb944cccb60cd9dc85f5a7349854 \
--hash=sha256:0a37165cc80b1a368384b383e63a4c38116a10467ae44c904d2d7468c4470ec2 \
--hash=sha256:12b7524c88d4026d3dcb7b0ebe16b6714f3b4af402ddd0f0639ab064a00c87c3 \
--hash=sha256:15641444eca4a29358107b3dceb74c1c6305c55c822fd199b458aaea4068a7fb \
--hash=sha256:1b22c80559854b789a01fd89e8929b3798a156c0829b5282a8939f33ad4115ad \
--hash=sha256:1e123f9b37edb8375fd74130d1f69c944bbf0a7b06761ae7211154b8759e94d2 \
--hash=sha256:24c8e57504c8f45b237e40b99262d181071e5099a07053695b75d97bb53053a0 \
--hash=sha256:2c2e2ae6867c2966b8daccc836d54a13218e0007e9a490aeb81dd05be64d22d7 \
--hash=sha256:30e825f6848d9f18bba350ed6c75c1b02a0b5184474a31db9a32b1fa66fd8c79 \
--hash=sha256:3768a5ff1b2125e6f552e561b6b2dca0e64982d8949689b4df145cf8b98d7821 \
--hash=sha256:3ad74f8bb1a18963914c5452d289422830b39459e8776ebbcd207be1fbfb1d94 \
--hash=sha256:410482da976329fe5f4067270401b12cf2bd552ff8020f054ecfaddb5475f9d6 \
--hash=sha256:428bec0161b48d8cf583c068591bc0016d0d9cfff52462b72b3884861ea768c5 \
--hash=sha256:506f48f2f9c29b143fca3dad7b0d518c188b6c9648c75a2ae6e2d9f2c13a060b \
--hash=sha256:58ad1131c300d3c9b933802b3cc4dc69d380822935ba50b28703156ea826fbf7 \
--hash=sha256:592b5fee597faa91cce2dd294dd7d9a1c83d76c4dbf877e33ec1adb866b2fbed \
--hash=sha256:61233fe8951e5c85dff81c2458b6528624760166946b5b47ea150a589168411f \
--hash=sha256:62481553b1793a27e9b9c3cf9e5bd483ef045ca72462592074b46d42b0c4d9b9 \
--hash=sha256:6282caffb41ec326d4cb67ca9cf53b739d1b2f975a2acb498c7418e9f7d9a416 \
--hash=sha256:69ef28e54fc85397f91b8c19592b8ef3d81952080366914823bd8572a2958120 \
--hash=sha256:6f9a0c9c1cc15c112d1c053064fd032b64917062292c3d70aea280e02ae10b77 \
--hash=sha256:6fa10a767143a5e82e8eaab53918af0cd8909a57a27f8cb2288b80a613ac671b \
--hash=sha256:766bc7c9a9c340342f4c864ccbda8e78111e4751f13b895812b9c148fb79e9d0 \
--hash=sha256:78e29211f26da2fdd0e9c6d2b79f489476140cf7029b6a64808ade7ca4156a42 \
--hash=sha256:819edbdcb42ab8598b494bcf0222684bbb7a3c772bd1b1f0be7e029a6063c28e \
--hash=sha256:85b10a45b8993d195c4f3ff57025b8d1e11834909ee475c403bfa60cb4caefaf \
--hash=sha256:88268ca418cacea64cecb0d1d600d3c6b3a8038fcba02e1e205178c5b1f47661 \
--hash=sha256:8b39472beafc0bdcafc4c8c73ad082ebfdb449d566897a61e7acb4fa88089115 \
--hash=sha256:8ea1936c26b99999b27479853039a7f34713f56c49375ad52b38535ec93a796c \
--hash=sha256:98a07f9bf591e3a8919797bee1c53f026ba4acd587e5a4404c8e57c9ec36b2a5 \
--hash=sha256:a185a04039df6cae8648bc8ab6d6fde7bf94f7188ecf7828e76ac52eef1e41d6 \
--hash=sha256:a35009284d0d3d5c2c9601c164a911b8b4331608d98a9a66d47d97bb2f522b70 \
--hash=sha256:a3acb384427816dd5d470f47e62137b87f74da694faa8a50147012cf40df276a \
--hash=sha256:aa2ba7d2ad6df4d80127cea65e5b8d5e2c3adbf153ff4804452836328aca7c54 \
--hash=sha256:b10e1ff4756ed27d5a29d7fc79cfce7ef1ff56ad20025b89bac7cf79e09abbbe \
--hash=sha256:b137f4bf3ada9dc44d411478decc6ff09a79ed30b306cd2abaa98408c3588137 \
--hash=sha256:b259a04a737cb3496be0901328eb8b7552ed8df4865d8c8f1cf1bffcfc0776a3 \
--hash=sha256:b427c19380991a4eaab2f6144b64b99b412043314c6bf4ab544f97bb31ee4190 \
--hash=sha256:bb693b1e3d9a2f3fd228e2110daf4b5aeedb36761ca1e4282f74725f6d89f611 \
--hash=sha256:c261d74b1a945cf895a9d6eccd1685a8e837531beaab782da4d630a8d12deffb \
--hash=sha256:c5bf2dc311127d91230cc79b92188c082634a06cf66c5234db49a43b910183b0 \
--hash=sha256:ca1cc11d82677b9662082e5478b7528e2b7db7beaa6bdff42bd62789d81be399 \
--hash=sha256:d4b2dddfc219f54f956ccd53cf76a1d338ffe68fc7f2849ec9c7feb9927ff692 \
--hash=sha256:d71d30f2d92f67d944631c523713934fee37292469e182ebcd2c1dd8a64ce53f \
--hash=sha256:d865db4a6318e1c1bea83292e0ed231090538fc4ca45425b0f0480eb338bbc6e \
--hash=sha256:e2aa72e3ce1770317ef534f63d397b55e130725f5149bd36077c3b539019db27 \
--hash=sha256:e3657301562ac3cb8018d30d0d3ebfa39932239f7b5703422057ef14b69949f5 \
--hash=sha256:e64dd101d380a115cc5a0c7856788adb535f1a4e21fc543775602f8be95180ae \
--hash=sha256:e8ca6a1fcdb2943c9cbc1804a1baf3acb6071d72a471591678ded84218006e14 \
--hash=sha256:edb59506291b647a30884b1d51a599d605f40b20af4a7dc3d33786a47a31de60 \
--hash=sha256:f9a0ebbe45c29b5e5866593c12b78bd9035f0f0f0d4bc8361680cd580d99db49
# via
# -r src/backend/requirements.in
# opentelemetry-exporter-otlp-proto-grpc
@ -854,9 +854,9 @@ gunicorn==26.0.0 \
--hash=sha256:40233d26a5f0d1872916188c276e21641155111c2853f0c2cd55260aec0d24fc \
--hash=sha256:ca9346f85e3a4aeeb64d491045c16b9a35647abd37ea15efe53080eb8b090baf
# via -r src/backend/requirements.in
icalendar==7.1.2 \
--hash=sha256:01c76243c76c549f58bb51510a8f0a4edb7c539726adda1356dfd0dc04fb7a53 \
--hash=sha256:ebc43ebeb357be98984b573d975118008dee3410d8df28b054ef2943cf3e367e
icalendar==7.1.3 \
--hash=sha256:690f30aa50a76cbf854db5ad52654705db9c5cd0e1b152222f5d4b7854b60667 \
--hash=sha256:eb03a0e215f30db689a72c49f18f998aabf17522eb0858a293c393510850727c
# via django-ical
idna==3.18 \
--hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \
@ -1513,9 +1513,9 @@ pynacl==1.6.2 \
--hash=sha256:d29bfe37e20e015a7d8b23cfc8bd6aa7909c92a1b8f41ee416bbb3e79ef182b2 \
--hash=sha256:fe9847ca47d287af41e82be1dd5e23023d3c31a951da134121ab02e42ac218c9
# via paramiko
pypdf==6.13.0 \
--hash=sha256:558683ec9daf6b91c280c322c84c32f5cc216afd3eaa3a37de5ae88ae0c3b787 \
--hash=sha256:de1294ae49d6956edb4e5c41527fb9e8716ddd2b120f2185c68aab784d4ffe60
pypdf==6.13.3 \
--hash=sha256:c6e3f86afb625791510b02ad5480e94b63970bb957df75d44657c282ecc52224 \
--hash=sha256:f3cb822769725f1bac658c406cfc9460399043f3750c2d3e4650e0a85eacabd7
# via -r src/backend/requirements.in
pyphen==0.17.2 \
--hash=sha256:3a07fb017cb2341e1d9ff31b8634efb1ae4dc4b130468c7c39dd3d32e7c3affd \
@ -1874,13 +1874,13 @@ rpds-py==2026.5.1 \
# via
# jsonschema
# referencing
s3transfer==0.18.0 \
--hash=sha256:239c13b09e65ad0346e1be7348b8a202dcad44ac7ea7c6eb858fc881dce739b6 \
--hash=sha256:3760b8b7ec1315da54048b2d626276732bee4300d054d492d4e1d43e20d4ecbd
s3transfer==0.19.0 \
--hash=sha256:777cc2415536f1debadb5c2ef7779275d0fc0fe0e042411cdd6caebeb2685262 \
--hash=sha256:ce436931687addc4c1712d52d40b32f53e88315723f107ffa20ba82b05a0f685
# via boto3
sentry-sdk==2.61.1 \
--hash=sha256:9c6adccb3feefa9ba032c8d295ca477575c2f11896046a2b0ad686c47c4af555 \
--hash=sha256:fa36eaf4b8ad708f718500d4bdcc1532637526a22beb874d88cbc0a46458b5ae
sentry-sdk==2.63.0 \
--hash=sha256:2a1502bf864769275dbc8c2c9fc7a0f7f5e18358180b615d262d13a31ffba216 \
--hash=sha256:3a9b5ddd403f79eb73bd670f75f04485819db53d28f76ced7bc09041cb0dfd6a
# via
# -r src/backend/requirements.in
# django-q-sentry
@ -1901,9 +1901,9 @@ sqlparse==0.5.5 \
# via
# django
# django-sql-utils
structlog==25.5.0 \
--hash=sha256:098522a3bebed9153d4570c6d0288abf80a031dfdb2048d59a49e9dc2190fc98 \
--hash=sha256:a8453e9b9e636ec59bd9e79bbd4a72f025981b3ba0f5837aebf48f02f37a7f9f
structlog==26.1.0 \
--hash=sha256:e081a26d6c373e6d201eca24eede26d8ffab07f88f477822e679183428d3d91e \
--hash=sha256:f63a716cbd1b1291cf7661de7794b455acfa4c43c5bcf1630e6ad5ddc1adb3b7
# via django-structlog
tablib[xls, xlsx, yaml]==3.9.0 \
--hash=sha256:1b6abd8edb0f35601e04c6161d79660fdcde4abb4a54f66cc9f9054bd55d5fe2 \
@ -1920,9 +1920,9 @@ tinyhtml5==2.1.0 \
--hash=sha256:60a50ec3d938a37e491efa01af895853060943dcebb5627de5b10d188b338a67 \
--hash=sha256:6e11cfff38515834268daf89d5f85bbde0b6dd02e8d9e212d1385c2289b89f0a
# via weasyprint
tqdm==4.68.1 \
--hash=sha256:fc163d96b287bd031e1aa24421ce4411b25559bd0a1be4fe649bdaa4d2c02bf5 \
--hash=sha256:fea4a90e4023f764914569f7802a297277c5ab1a66be5144143e142e1a4031d8
tqdm==4.68.3 \
--hash=sha256:00dfa48452b6b6cfae3dd9885636c23d3422d1ec97c66d96818cbd5e0821d482 \
--hash=sha256:39832cc2def2789a6f29df83f172db7416cea70052c0907a57801c5f2fdccb03
# via -r src/backend/requirements.in
typing-extensions==4.15.0 \
--hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
@ -1960,9 +1960,9 @@ urllib3==2.7.0 \
# dulwich
# requests
# sentry-sdk
wcwidth==0.7.0 \
--hash=sha256:5d69154c429a82910e241c738cd0e2976fac8a2dd47a1a805f4afed1c0f136f2 \
--hash=sha256:90e3a7ea092341c44b99562e75d09e4d5160fe7a3974c6fb842a101a95e7eed0
wcwidth==0.8.1 \
--hash=sha256:f453740b1e4a4f3291faa37944c555d71056c4da08d59809b307ef4feba695c8 \
--hash=sha256:faf5b4a5366a72dc49cad48cdf21f52bdf63bdda995178e483ba247ff79089b9
# via
# blessed
# prettytable
@ -1982,88 +1982,97 @@ whitenoise==6.12.0 \
--hash=sha256:f723ebb76a112e98816ff80fcea0a6c9b8ecde835f8ddda25df7a30a3c2db6ad \
--hash=sha256:fc5e8c572e33ebf24795b47b6a7da8da3c00cff2349f5b04c02f28d0cc5a3cc2
# via -r src/backend/requirements.in
wrapt==1.17.3 \
--hash=sha256:02b551d101f31694fc785e58e0720ef7d9a10c4e62c1c9358ce6f63f23e30a56 \
--hash=sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828 \
--hash=sha256:0610b46293c59a3adbae3dee552b648b984176f8562ee0dba099a56cfbe4df1f \
--hash=sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396 \
--hash=sha256:0b1831115c97f0663cb77aa27d381237e73ad4f721391a9bfb2fe8bc25fa6e77 \
--hash=sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d \
--hash=sha256:0f5f51a6466667a5a356e6381d362d259125b57f059103dd9fdc8c0cf1d14139 \
--hash=sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7 \
--hash=sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb \
--hash=sha256:1f23fa283f51c890eda8e34e4937079114c74b4c81d2b2f1f1d94948f5cc3d7f \
--hash=sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f \
--hash=sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067 \
--hash=sha256:24c2ed34dc222ed754247a2702b1e1e89fdbaa4016f324b4b8f1a802d4ffe87f \
--hash=sha256:273a736c4645e63ac582c60a56b0acb529ef07f78e08dc6bfadf6a46b19c0da7 \
--hash=sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b \
--hash=sha256:30ce38e66630599e1193798285706903110d4f057aab3168a34b7fdc85569afc \
--hash=sha256:33486899acd2d7d3066156b03465b949da3fd41a5da6e394ec49d271baefcf05 \
--hash=sha256:343e44b2a8e60e06a7e0d29c1671a0d9951f59174f3709962b5143f60a2a98bd \
--hash=sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7 \
--hash=sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9 \
--hash=sha256:3e62d15d3cfa26e3d0788094de7b64efa75f3a53875cdbccdf78547aed547a81 \
--hash=sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977 \
--hash=sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa \
--hash=sha256:46acc57b331e0b3bcb3e1ca3b421d65637915cfcd65eb783cb2f78a511193f9b \
--hash=sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe \
--hash=sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58 \
--hash=sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8 \
--hash=sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77 \
--hash=sha256:5531d911795e3f935a9c23eb1c8c03c211661a5060aab167065896bbf62a5f85 \
--hash=sha256:55cbbc356c2842f39bcc553cf695932e8b30e30e797f961860afb308e6b1bb7c \
--hash=sha256:59923aa12d0157f6b82d686c3fd8e1166fa8cdfb3e17b42ce3b6147ff81528df \
--hash=sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454 \
--hash=sha256:5a7b3c1ee8265eb4c8f1b7d29943f195c00673f5ab60c192eba2d4a7eae5f46a \
--hash=sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e \
--hash=sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c \
--hash=sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6 \
--hash=sha256:656873859b3b50eeebe6db8b1455e99d90c26ab058db8e427046dbc35c3140a5 \
--hash=sha256:65d1d00fbfb3ea5f20add88bbc0f815150dbbde3b026e6c24759466c8b5a9ef9 \
--hash=sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd \
--hash=sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277 \
--hash=sha256:70d86fa5197b8947a2fa70260b48e400bf2ccacdcab97bb7de47e3d1e6312225 \
--hash=sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22 \
--hash=sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116 \
--hash=sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16 \
--hash=sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc \
--hash=sha256:758895b01d546812d1f42204bd443b8c433c44d090248bf22689df673ccafe00 \
--hash=sha256:79573c24a46ce11aab457b472efd8d125e5a51da2d1d24387666cd85f54c05b2 \
--hash=sha256:7e18f01b0c3e4a07fe6dfdb00e29049ba17eadbc5e7609a2a3a4af83ab7d710a \
--hash=sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804 \
--hash=sha256:88bbae4d40d5a46142e70d58bf664a89b6b4befaea7b2ecc14e03cedb8e06c04 \
--hash=sha256:8cccf4f81371f257440c88faed6b74f1053eef90807b77e31ca057b2db74edb1 \
--hash=sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba \
--hash=sha256:a36692b8491d30a8c75f1dfee65bef119d6f39ea84ee04d9f9311f83c5ad9390 \
--hash=sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0 \
--hash=sha256:a7c06742645f914f26c7f1fa47b8bc4c91d222f76ee20116c43d5ef0912bba2d \
--hash=sha256:a9a2203361a6e6404f80b99234fe7fb37d1fc73487b5a78dc1aa5b97201e0f22 \
--hash=sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0 \
--hash=sha256:ad85e269fe54d506b240d2d7b9f5f2057c2aa9a2ea5b32c66f8902f768117ed2 \
--hash=sha256:af338aa93554be859173c39c85243970dc6a289fa907402289eeae7543e1ae18 \
--hash=sha256:afd964fd43b10c12213574db492cb8f73b2f0826c8df07a68288f8f19af2ebe6 \
--hash=sha256:b32888aad8b6e68f83a8fdccbf3165f5469702a7544472bdf41f582970ed3311 \
--hash=sha256:c31eebe420a9a5d2887b13000b043ff6ca27c452a9a22fa71f35f118e8d4bf89 \
--hash=sha256:caea3e9c79d5f0d2c6d9ab96111601797ea5da8e6d0723f77eabb0d4068d2b2f \
--hash=sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39 \
--hash=sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4 \
--hash=sha256:d8a210b158a34164de8bb68b0e7780041a903d7b00c87e906fb69928bf7890d5 \
--hash=sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa \
--hash=sha256:df7d30371a2accfe4013e90445f6388c570f103d61019b6b7c57e0265250072a \
--hash=sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050 \
--hash=sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6 \
--hash=sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235 \
--hash=sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056 \
--hash=sha256:e6b13af258d6a9ad602d57d889f83b9d5543acd471eee12eb51f5b01f8eb1bc2 \
--hash=sha256:e6f40a8aa5a92f150bdb3e1c44b7e98fb7113955b2e5394122fa5532fec4b418 \
--hash=sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c \
--hash=sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a \
--hash=sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6 \
--hash=sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0 \
--hash=sha256:f9b2601381be482f70e5d1051a5965c25fb3625455a2bf520b5a077b22afb775 \
--hash=sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10 \
--hash=sha256:fd341868a4b6714a5962c1af0bd44f7c404ef78720c7de4892901e540417111c
wrapt==2.2.1 \
--hash=sha256:036dfb40128819a751c6f451c6b9c10172c49e4c401aebcdb8ecf2aec1683598 \
--hash=sha256:03df9ebed4c73ab93fa8c07e3d41d818dfca1852b15731a3de59457b27814624 \
--hash=sha256:05d5cb74d1b232ec8cfa130a8f900708699ff2491d97b8f85a4cdc5996294b85 \
--hash=sha256:07be671fa8875971222b0ba9059ed8b4dc738631122feba17c93aa36b4213e9a \
--hash=sha256:09ac16c081bebfd15d8e4dfa5bdc805990bbd52249ecff22530da7a129d6120b \
--hash=sha256:0d9ff006f420b2ec8296aa56ade43ea7da3e997e85769f0aafc5e0661aacb710 \
--hash=sha256:0f68f478004475d97906686e702ddbddeaf717c0b68ad2794384308f2dc713ae \
--hash=sha256:17de18fc12cea55b8a9587314cb830573e37fb33b247a7515696350863714188 \
--hash=sha256:1ae574d65c9fa8e86f64f6a7c2668f9fcd507b183e0e577619f504b883cb0a6c \
--hash=sha256:1c9934ea5d92957e3cd0adbc0845539dccfd62710ebe16195a8c66c53954db36 \
--hash=sha256:1d676ee388bc42a04d56dd7deb5605244dac2e35cc2fadbb43c9fa25bbd93508 \
--hash=sha256:1ffa9cfd4bdb581539951b14ae661ff20ed0c3599b3e911a131ee0ec5ac11337 \
--hash=sha256:2076d2335085eb09b9547e7688656fa8f5cf0183eab589d33499cd353489d797 \
--hash=sha256:211f595f8e7faae5c5930fcc64708f2ba36849e0ba0fd653a843de9fa8d7db77 \
--hash=sha256:24c52546acf2ab82412f2ab6fc5948a7fe958d3b4f070202e8dcdd865489eaf9 \
--hash=sha256:2d83966dc7f4f45e8b97b5933685ac2e6e67fc0e19246ea314bceb9a8970c956 \
--hash=sha256:2de9e20769fe9c1f6dcdc893c6a89287c5ccf8537c90b5de78aed8017697aad5 \
--hash=sha256:2e08688ab16525897da6589d56d0aebaf417bbe91c2d8e3b96203b1efa596e85 \
--hash=sha256:2f8c90c8afde51969487be4e1343ae049b268854877d415c2510baf833775052 \
--hash=sha256:368eac1e20fd0bb03dd3cc42bf9887154c3861b60989389ccb5fac032617d215 \
--hash=sha256:3aafea2975caef8ca49400640dde02cc7426e798f24870ed01f490bc3cffd32f \
--hash=sha256:3e2f02472a1cbbf3884b365714a810b5947134a95ad6952b554cb8cce9d492b0 \
--hash=sha256:3ffad790d9d11d8ecf9f17c4bb671a5b4089e4d8b575c46c5129597f41f836b0 \
--hash=sha256:401229e9d63ca09f9b8891ecf83798d26c11bbb445d11ed9f1836b6d4585b38a \
--hash=sha256:436addbc4bb4fc0a88c702577f51195d7d73683a7f3e0e5b253d8404d7847243 \
--hash=sha256:44255c84bc57554fed822e83e70036b51afa9edb56fc7ca56c54410ece7898c9 \
--hash=sha256:50972a1d974ea07725a7f6b1cec5f8759008afd030a0024843ebe7d52de47f2b \
--hash=sha256:5590d63f5243251641cf543009b4c9314a79d0598fdb8a8e4cfc918494536c53 \
--hash=sha256:585916e210db57b23543342c2f298e42331b617fd0c934caf5c64df44de8640e \
--hash=sha256:5f1845c2a8cc1180ccccfa45785dd06f562730d19ef75be180334254012b6283 \
--hash=sha256:5fa9bf3b9e66336589d03f42abce2da1055ad5c69b0c2b764852a8471c9b9114 \
--hash=sha256:61a0013344674d2b648bc6e6fe9828dd4fc1d3b4eb7523809792f8cb952e2f16 \
--hash=sha256:61acce4257a9883669703c525447c5b4c392edf0f987ae77ec32668440158f0e \
--hash=sha256:628f5220c7a904d5fc78f7075c8d7871433eb6d035c94728a22fdf85f193d2a8 \
--hash=sha256:64b7deeda4b70408e382328d8bbe52a256fe9bc63ae3db86d804608367e5422c \
--hash=sha256:6744f504375775d7609c82c8d3d94af1c9a6f05586984536905908ba905277b9 \
--hash=sha256:67a97e5b6c457f0cd3cfc19ebb2d84463e60c3ece754cc831e4281a3ca29bb18 \
--hash=sha256:69f2e9244542cb34dd59c7f073445b9e54ad9f3fce8d93606c368a1b499fc413 \
--hash=sha256:6ce32763ac31ce94fe9aada947e479b1975012bff166da409b4b9e4e376cf7e5 \
--hash=sha256:6f56a647e4eaf5f0ca40330fb070f566bdf9f7b0db89a1af20d71c28dcd7a0ab \
--hash=sha256:727ab4244622cd6ad2390f322642090c877d2e83a608d2653a7643ae5368d926 \
--hash=sha256:74d6a0c31472fe5d814917266b9f46495d7c61ed890af08b468acea92fb89a8d \
--hash=sha256:78b0aa6bfb7be8deed0ab23e7aa028cc5210c29bc2d32a04d52b50e517a7307e \
--hash=sha256:7975bc88ab4b0f72ef2a2d5ae9d77d87efb5ef95e8f8046242fa9afdaaf2030b \
--hash=sha256:7a4fdb9326aab4a5a477a1640e5ad786a8495901009d7e7b038371edd23a9d2b \
--hash=sha256:844c858fc3bb7eacc0ba8efa904935d16aac6a4470948ad1e7e55c9f5a2a665f \
--hash=sha256:87bacdaf225117a342a20d9c03438d701c02112f6e3f351ce9b7f32354f14797 \
--hash=sha256:8a983a603a18c8708f024f7f6991b2e66159219abbf894634c5056243c55f3cd \
--hash=sha256:8d1b4d0e0c2119587a31f5c029abd547e0c81d93b89d394566fe1588659eb579 \
--hash=sha256:9011395be8db1827d106c6449b4bb6dd17e331ff6ec521f227e4588f1c78e46f \
--hash=sha256:93fc2bf40cd7f4a0256010dce073d44eeb4a351b9bca94d0477ce2b6e62532b3 \
--hash=sha256:95821352042722cd9f1108874579a47989d0a7e12a37d87d2fc4af20fd99ab8a \
--hash=sha256:9907a4402ab6db12b7077a0ea5d7a4d028ecb22c8eee2b53527080d347cd1562 \
--hash=sha256:9a04c28c10ba7fd12842b109d2edb0678872a2fe65277ca4ff06a0d61edee245 \
--hash=sha256:9a5934eaea872e17936b5f45501eba5ab0bce9a74122e172b663d7c28c459c4a \
--hash=sha256:9b984d1eb252145d6302c1dbd5e87fc6d404d45531447c84eadec04bf1fcb027 \
--hash=sha256:9c210a6994b21aa9b29e81c8d11560e8fdab54c117e9cff37870d0a27bde1343 \
--hash=sha256:9d8f204c8e3a8bf9ece17e0a83d137fd807440977f8a5e762d59306795011440 \
--hash=sha256:a8f7176b83664af44567e9cc06e0d3827823fcc1a5e52307ebb8ac3aa95860b9 \
--hash=sha256:a9dec1aca52dddde7df94818310fa2fe79739c8f385b2014c4cb1035f5508199 \
--hash=sha256:ab5be648d5a0b86b7438864f8df3c705a65cef35a2fd3e5561e3e203167e0f27 \
--hash=sha256:abd621552ede77c4c69be7fac44ba911225b0c812b6ba604e5964cf98085b474 \
--hash=sha256:ac2745950b2bff80219c15ebf2fa9d8427eba7e249739f97e55c9d169e47e9e1 \
--hash=sha256:aed9658797d0b45d6c49adcfc6b41f66e6f2d0c6de3ec79e16cf4b1855df240f \
--hash=sha256:b6c0febfe38f22df2eb565c0ce8a092bb80411e56861ca382c443da83105423f \
--hash=sha256:b9cf53ba90717db2e292401de290776c498d4bbfb0d4a559ca2895db8b9dcb5c \
--hash=sha256:ba519b2d765df9871a25879e6f7fa78948ea59a2a31f9c1a257e34b651994afc \
--hash=sha256:c318a64b53d97b841d7b5e637517e50a27be64bc695128422953d4b21710954e \
--hash=sha256:c3723ff8eb8721f4daac98bc0256f15158e05316d5e52648ce9cebee434fbdd5 \
--hash=sha256:c754dafdf5aaf0b401b644a90a30046929a0dd1a536e0ff0ec959a59155d9c7f \
--hash=sha256:c803a3d331796255af51ba2c79ed0ac8275865b516c09e61f248d1e7aff31ce9 \
--hash=sha256:c8cc5094b08abeae52da9c73c8a32003623be691a5193df2f4e3eac3d557c394 \
--hash=sha256:cf3638274ab9d9b724c9baa0b4c04e132cd6faefb78b4dd3dd1a02a4bdaad41e \
--hash=sha256:d047f6498c973874ba08ac3f97c69a2c4b2211c8de6f4c205f75cb1c9522596e \
--hash=sha256:d2beb1c7cab10603aecdc42f8edd6ff013f9a32e4543474e38e6b77ce9975aeb \
--hash=sha256:d7f513d3185e6fec82d0c3518f2e6365d8b4e49f5f45f29640d5162d56a23b54 \
--hash=sha256:dd57607acc85678925940bd5df0385ff8332083a32fa8d7a43f8767f4997263c \
--hash=sha256:e0cb7e4dd71f4c32e5e84843cd3c4cd65dda034314004bbe1d7f99af2426ab80 \
--hash=sha256:e3677c7146ce694874941ba82b57092cc4875445aadf29d72807351023105143 \
--hash=sha256:e395f7bc31851ef9b612050368cb446e9bc14cd7454b025018980349caf25ae5 \
--hash=sha256:e422b2d647a65d6b080cad5accd09055d3809bdff00c76fba8dca00ca935572a \
--hash=sha256:ed55af48b3eb28f43228ca2306788892bcb629eb2b5c4876e2a3659872c2f17a \
--hash=sha256:ed928d0fda15fc0adc8d13305c8b3c0f2fba5b0669950c9e6d019d9162a3b3e8 \
--hash=sha256:f4e1a92032a39cd5e3c647ca57dbf33b6a1938fd975623175793f9dbb63236de \
--hash=sha256:f53ac9f3ef573326d009ed809beff4efcac6451931c2b8132586da4b9e53ff31 \
--hash=sha256:f5b9daf6b629fce418e0cc3dd0436eac045188fa35deadb7a7f3941d5b8203f9 \
--hash=sha256:f6518b94edb9150452e9aba08027d4cc293433753ec1fbefb4629a21cbc74181 \
--hash=sha256:f70db64e8266d7c45d3b735f2e08eeb434b5e03da9a479ae42b2e2e486a21a00 \
--hash=sha256:fafb4e739e43544d12cb4abd1605fd4683b6ca6a9ad682b7fd8f4d21973eafa8 \
--hash=sha256:fd0135d34387f5fd087d9be368ea77ea89cf2451dc1cd1c622d35021bcb3ab50
# via
# opentelemetry-instrumentation
# opentelemetry-instrumentation-dbapi
@ -2135,17 +2144,18 @@ xmlsec==1.3.17 \
# via
# -r src/backend/requirements.in
# python3-saml
zopfli==0.4.2 \
--hash=sha256:18af6d2f778552d9bfdaa8e6caaf38c2bd57d0efba34a47860fcc4f6ba899696 \
--hash=sha256:1fc2fd1725c986f535ea323139ec1b974fa294ef9574e0fad840967d52dd38a9 \
--hash=sha256:65a847b1f234df456584f0267fb0f270a95772e675a98ae9c21f3b4839077b2f \
--hash=sha256:70c20595aa30aae246ac71a9fa471e2aa768318150ab814aeea2f651c59c6a32 \
--hash=sha256:92e30df03a00c08b3265c362566573b50a3af3b113b0dbe755071376635ce93d \
--hash=sha256:932083f7ca190fbd73cdf8ad7d32ec7231ecd25e1b3fade547cfb11b823ff91f \
--hash=sha256:a75e646fed3a2a42a82e69a81644009189c8ab4271691f020d52da8630d0580e \
--hash=sha256:bc25a3b3568910afb4bbd951d99835de29cade95417bca215339eac172eb381d \
--hash=sha256:d036b7179c225ce6bd73e68b5a176319ce8835739f494650e4124cd9c383b826 \
--hash=sha256:d1972b58083b85af460d8936f623d849b487c151b26eae925b25ec921ae6cd22 \
--hash=sha256:d3bc0b483575ab8849d9c15b349f78ae0141eb4dfe2ba260c8fdc0b3ba5c6c42 \
--hash=sha256:e679896fde39930dec1f46e5f4e1b1900378686168064966209ffb7b80e41743
zopfli==0.4.3 \
--hash=sha256:0087c9a6f0c8a052be0f6d1a9bb71b6caffdd3e10201d6d6166e28d482cebe6d \
--hash=sha256:47604eee5c6704bdf0e94d8391fe3b74ddb2abd84128fbcfdc3ee0fc265feaef \
--hash=sha256:62248dbf8dbcbd588ee194b210e5be9fa80bce29641f55599d6d394bd2a9d8a3 \
--hash=sha256:628c3e941752880b3491db8d44163d0aedb221944e22a17187ff7fc549b050f6 \
--hash=sha256:769875152d0625c46707bcca57d4b2233fe653482067acd55fbf6ec525cb9bdc \
--hash=sha256:7e9703ca6e7ef66c8d05e0826b6f558b680c9db8206f84f05a3ee93430a12e42 \
--hash=sha256:7fa3c35193475290e3f007bbcdebdbae64ba2f012d75c632da0d727e1da50d5e \
--hash=sha256:88f4fbe429aad72bc206275d81fab11a097e0f951a5848d1f51083c37ea73073 \
--hash=sha256:921c2c9907f4364963848da5ad194b46d68865e07fdb975d04fd09bc42d47357 \
--hash=sha256:d3a50f91a13cea9bafe025de8fd87a005eb26de02a4f0c193127ddbf23ac8ebe \
--hash=sha256:d4f51dd1ab5312e837e2091284e0d9f1a138188f2e65812f9a5799dc02c45f94 \
--hash=sha256:eb0c9c1d40a8cb1d58762d7e57290ccb753e0828c4d01be8acb59aae5d0ca206 \
--hash=sha256:f2e0adcf7d36c6fd0dd36cc771ef7f0c5803a05666feafcd90d7170174a4148e
# via fonttools

View File

@ -130,9 +130,13 @@ export default function NewsWidget() {
<NewsItem key={item.pk} item={item} onMarkRead={markRead} />
))
) : (
<Alert color='green' title={t`No News`}>
<Text>{t`There are no unread news items`}</Text>
</Alert>
<Table.Tr>
<Table.Td colSpan={3}>
<Alert color='green' title={t`No News`}>
<Text>{t`There are no unread news items`}</Text>
</Alert>
</Table.Td>
</Table.Tr>
)}
</Table.Tbody>
</Table>

View File

@ -68,9 +68,13 @@ export const PdfPreviewComponent: PreviewAreaComponent = forwardRef(
api
.get(apiUrl(ApiEndpoints.data_output, preview.data.pk))
.then((response) => {
if (response.data.error) {
if (response.data.errors || response.data.error) {
clearInterval(interval);
rej(response.data.error);
rej(
response.data.error ??
response.data.errors?.error ??
t`Process failed`
);
}
if (response.data.complete) {

View File

@ -223,7 +223,7 @@ export function TemplateEditor(props: Readonly<TemplateEditorProps>) {
});
})
.catch((error) => {
const msg = error?.message;
const msg = error?.message || error?.toString();
if (msg) {
if (Array.isArray(msg)) {
@ -272,7 +272,7 @@ export function TemplateEditor(props: Readonly<TemplateEditorProps>) {
return (
<Boundary label='TemplateEditor'>
<Stack style={{ height: '100%', flex: '1' }}>
<Split style={{ gap: '10px' }}>
<Split visible style={{ flex: 1 }}>
<Tabs
value={editorValue}
onChange={async (v) => {
@ -282,7 +282,7 @@ export function TemplateEditor(props: Readonly<TemplateEditorProps>) {
keepMounted={false}
style={{
minWidth: '300px',
flex: '1',
width: '50%',
display: 'flex',
flexDirection: 'column'
}}
@ -348,6 +348,7 @@ export function TemplateEditor(props: Readonly<TemplateEditorProps>) {
keepMounted={false}
style={{
minWidth: '200px',
width: '50%',
display: 'flex',
flexDirection: 'column'
}}

View File

@ -5,28 +5,36 @@ import {
Divider,
Drawer,
Group,
HoverCard,
Loader,
LoadingOverlay,
type RenderTreeNodePayload,
Space,
Stack,
Text,
TextInput,
Tree,
type TreeNodeData,
useTree
} from '@mantine/core';
import { useDebouncedValue } from '@mantine/hooks';
import {
IconChevronDown,
IconChevronRight,
IconExclamationCircle,
IconSitemap
IconSearch,
IconSitemap,
IconX
} from '@tabler/icons-react';
import { useQuery } from '@tanstack/react-query';
import { useCallback, useMemo } from 'react';
import { useCallback, useEffect, useMemo, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { StylishText } from '@lib/components/StylishText';
import type { ApiEndpoints } from '@lib/enums/ApiEndpoints';
import type { ModelType } from '@lib/enums/ModelType';
import { apiUrl } from '@lib/functions/Api';
import { resolveItem } from '@lib/functions/Conversion';
import {
eventModified,
getDetailUrl,
@ -45,6 +53,7 @@ export default function NavigationTree({
onClose,
selectedId,
modelType,
childIdentifier,
endpoint
}: Readonly<{
title: string;
@ -52,26 +61,136 @@ export default function NavigationTree({
onClose: () => void;
selectedId?: number | null;
modelType: ModelType;
childIdentifier?: string;
endpoint: ApiEndpoints;
}>) {
const api = useApi();
const navigate = useNavigate();
const treeState = useTree();
// Data query to fetch the tree data from server
const [searchValue, setSearchValue] = useState('');
const [debouncedSearch] = useDebouncedValue(searchValue, 300);
// Accumulated flat node list for browse (lazy-load) mode
const [allNodes, setAllNodes] = useState<any[]>([]);
// PKs of nodes whose children are currently being fetched
const [loadingNodes, setLoadingNodes] = useState<Set<number>>(new Set());
// Reset everything when the drawer opens or closes
useEffect(() => {
setSearchValue('');
setAllNodes([]);
setLoadingNodes(new Set());
}, [opened]);
// Data query — browse mode loads root nodes only; search mode loads all matches + ancestors
const query = useQuery({
enabled: opened,
queryKey: [modelType, opened],
queryKey: [modelType, 'tree', opened, debouncedSearch, selectedId],
queryFn: async () =>
api
.get(apiUrl(endpoint), {
data: {
ordering: 'level'
params: {
ordering: 'level',
search: debouncedSearch || undefined,
max_level: debouncedSearch ? undefined : 0,
expand_to: debouncedSearch ? undefined : (selectedId ?? undefined)
}
})
.then((response) => response.data ?? [])
});
// When the browse-mode query settles, reset the node list and expand ancestors of the selection
useEffect(() => {
if (!debouncedSearch && query.data && !query.isFetching) {
setAllNodes(query.data);
setLoadingNodes(new Set());
if (selectedId) {
const nodeMap: Record<number, any> = {};
for (const n of query.data) nodeMap[n.pk] = n;
// Collect every ancestor pk, then apply in one setExpandedState call to
// avoid closure/batching issues that arise from calling expand() in a loop.
const toExpand: Record<string, boolean> = {};
let current = nodeMap[selectedId];
while (current?.parent) {
toExpand[current.parent.toString()] = true;
current = nodeMap[current.parent];
}
if (Object.keys(toExpand).length) {
treeState.setExpandedState({
...treeState.expandedState,
...toExpand
});
}
}
}
}, [debouncedSearch, query.data, query.isFetching, selectedId]);
// Collapse all nodes when the search term changes (switching modes).
// Intentionally omits query.data so it does NOT fire when browse results arrive —
// that would undo the ancestor expansion done above.
useEffect(() => {
treeState.collapseAllNodes();
}, [debouncedSearch]);
// Expand all nodes once search results have fully arrived
useEffect(() => {
if (debouncedSearch && !query.isFetching && query.data?.length) {
treeState.expandAllNodes();
}
}, [debouncedSearch, query.data, query.isFetching]);
// Fetch direct children of a node (browse mode only).
// Zeros out the childIdentifier count on success with no results so the node
// is treated as a leaf and won't be re-fetched on subsequent clicks.
const fetchChildren = useCallback(
async (nodeValue: string) => {
const pk = Number.parseInt(nodeValue);
if (loadingNodes.has(pk)) return;
const nodeInfo = allNodes.find((n) => n.pk === pk);
if (!nodeInfo) return;
setLoadingNodes((prev) => new Set([...prev, pk]));
try {
const response = await api.get(apiUrl(endpoint), {
params: {
ordering: 'level',
parent: pk,
max_level: nodeInfo.level + 1
}
});
const children: any[] = response.data ?? [];
setAllNodes((prev) => {
if (children.length === 0 && childIdentifier) {
// No children returned — zero out the count so this node is treated
// as a leaf and won't trigger another fetch on the next click.
return prev.map((n) =>
n.pk === pk ? { ...n, [childIdentifier]: 0 } : n
);
}
const existing = new Set(prev.map((n) => n.pk));
return [...prev, ...children.filter((n) => !existing.has(n.pk))];
});
if (children.length > 0) {
treeState.expand(nodeValue);
}
} finally {
setLoadingNodes((prev) => {
const next = new Set(prev);
next.delete(pk);
return next;
});
}
},
[loadingNodes, allNodes, api, endpoint, childIdentifier]
);
const follow = useCallback(
(node: TreeNodeData, event?: any) => {
const url = getDetailUrl(modelType, node.value);
@ -85,107 +204,156 @@ export default function NavigationTree({
[modelType, navigate]
);
// Map returned query to a "tree" structure
const data: TreeNodeData[] = useMemo(() => {
/*
* Reconstruct the navigation tree from the provided data.
* It is required (and assumed) that the data is first sorted by level.
*/
// In search mode use the query results directly; in browse mode use the accumulated lazy-load list
const sourceNodes: any[] = useMemo(
() => (debouncedSearch ? (query.data ?? []) : allNodes),
[debouncedSearch, query.data, allNodes]
);
// Map flat node list to a nested tree structure (parents must precede children)
const data: TreeNodeData[] = useMemo(() => {
const nodes: Record<number, any> = {};
const tree: TreeNodeData[] = [];
if (!query || !query?.data?.length) {
return [];
}
if (!sourceNodes.length) return [];
for (let ii = 0; ii < query.data.length; ii++) {
// Sort by level so parents are always inserted before their children,
// regardless of the order the API returns items (e.g. after ancestor union in search mode).
const sorted = [...sourceNodes].sort((a, b) => a.level - b.level);
for (const raw of sorted) {
const node = {
...query.data[ii],
...raw,
children: [],
label: (
<Group gap='xs'>
<ApiIcon name={query.data[ii].icon} />
{query.data[ii].name}
<ApiIcon name={raw.icon} />
<Text>{raw.name}</Text>
</Group>
),
value: query.data[ii].pk.toString(),
selected: query.data[ii].pk === selectedId
value: raw.pk.toString(),
selected: raw.pk === selectedId
};
const pk: number = node.pk;
const parent: number | null = node.parent;
if (!parent) {
// This is a top level node
tree.push(node);
} else {
// This is *not* a top level node, so the parent *must* already exist
nodes[parent]?.children.push(node);
}
// Finally, add this node
nodes[pk] = node;
if (pk === selectedId) {
// Expand all parents
let parent = nodes[node.parent];
while (parent) {
parent.expanded = true;
parent = nodes[parent.parent];
}
}
}
return tree;
}, [selectedId, query.data]);
}, [selectedId, sourceNodes]);
const renderNode = useCallback(
(payload: RenderTreeNodePayload) => {
const nodeInfo = payload.node as any;
const pk = Number.parseInt(payload.node.value);
const isLoading = loadingNodes.has(pk);
// A node has children if they are already in the tree, or if the server-side
// count (childIdentifier) says so and they haven't been loaded yet.
const childrenLoaded = nodeInfo.children.length > 0;
const needsFetch =
!isLoading &&
!debouncedSearch &&
!childrenLoaded &&
!!(childIdentifier && resolveItem(payload.node, childIdentifier));
const hasChildren = childrenLoaded || needsFetch;
const isSelected = nodeInfo.selected === true;
return (
<Group
p={3}
gap='xs'
gap={5}
justify='left'
key={payload.node.value}
wrap='nowrap'
bg={isSelected ? 'var(--mantine-primary-color-light)' : undefined}
style={{ borderRadius: 'var(--mantine-radius-sm)' }}
onClick={() => {
if (payload.hasChildren) {
if (isLoading || !hasChildren) return;
if (needsFetch) {
fetchChildren(payload.node.value);
} else {
treeState.toggleExpanded(payload.node.value);
}
}}
>
<Space w={10 * (payload.level - 1)} />
<ActionIcon
size='sm'
variant='transparent'
aria-label={`nav-tree-toggle-${payload.node.value}}`}
<Space w={25 * (payload.level - 1)} />
{(isLoading || hasChildren || payload.expanded) && (
<ActionIcon
size='sm'
variant='transparent'
aria-label={`nav-tree-toggle-${payload.node.value}}`}
>
{isLoading ? (
<Loader size='xs' />
) : hasChildren ? (
payload.expanded ? (
<IconChevronDown />
) : (
<IconChevronRight />
)
) : null}
</ActionIcon>
)}
<HoverCard
width={260}
shadow='md'
withArrow
closeDelay={100}
openDelay={500}
position='top-end'
>
{payload.hasChildren ? (
payload.expanded ? (
<IconChevronDown />
) : (
<IconChevronRight />
)
) : null}
</ActionIcon>
<Anchor
onClick={(event: any) => follow(payload.node, event)}
aria-label={`nav-tree-item-${payload.node.value}`}
c='var(--mantine-color-text)'
>
{payload.node.label}
</Anchor>
<HoverCard.Target>
<Anchor
onClick={(event: any) => follow(payload.node, event)}
aria-label={`nav-tree-item-${payload.node.value}`}
c='var(--mantine-color-text)'
>
{payload.node.label}
</Anchor>
</HoverCard.Target>
<HoverCard.Dropdown>
<Stack gap={4}>
<Group gap='xs' wrap='nowrap'>
{nodeInfo.icon && <ApiIcon name={nodeInfo.icon} />}
<Text fw={600} size='sm'>
{nodeInfo.name}
</Text>
</Group>
{nodeInfo.description && (
<Text size='sm' c='dimmed'>
{nodeInfo.description}
</Text>
)}
</Stack>
</HoverCard.Dropdown>
</HoverCard>
</Group>
);
},
[treeState]
[
treeState,
childIdentifier,
follow,
loadingNodes,
fetchChildren,
debouncedSearch
]
);
return (
<Drawer
opened={opened}
size='md'
size='lg'
position='left'
onClose={onClose}
withCloseButton={true}
@ -205,14 +373,43 @@ export default function NavigationTree({
}
>
<Stack gap='xs'>
<TextInput
aria-label='nav-tree-search'
placeholder={t`Search...`}
value={searchValue}
onChange={(event) => setSearchValue(event.currentTarget.value)}
leftSection={<IconSearch size={16} />}
rightSection={
searchValue ? (
<ActionIcon
size='sm'
variant='transparent'
onClick={() => setSearchValue('')}
aria-label={t`Clear search`}
>
<IconX size={14} />
</ActionIcon>
) : null
}
/>
<Divider />
<LoadingOverlay visible={query.isFetching || query.isLoading} />
{query.isError ? (
<Alert color='red' title={t`Error`} icon={<IconExclamationCircle />}>
{t`Error loading navigation tree.`}
</Alert>
) : !query.isFetching && !query.isLoading && data.length === 0 ? (
<Alert color='blue' icon={<IconSearch />}>
{t`No results found`}
</Alert>
) : (
<Tree data={data} tree={treeState} renderNode={renderNode} />
<Tree
data={data}
tree={treeState}
renderNode={renderNode}
withLines
levelOffset={25}
/>
)}
</Stack>
</Drawer>

View File

@ -19,7 +19,7 @@ export function RenderBuildOrder(
primary={instance.reference}
secondary={instance.title}
suffix={StatusRenderer({
status: instance.status_custom_key,
status: instance.status_custom_key || instance.status,
type: ModelType.build
})}
image={instance.part_detail?.thumbnail || instance.part_detail?.image}

View File

@ -22,7 +22,7 @@ export function RenderPurchaseOrder(
primary={instance.reference}
secondary={instance.description}
suffix={StatusRenderer({
status: instance.status_custom_key,
status: instance.status_custom_key || instance.status,
type: ModelType.purchaseorder
})}
image={supplier.thumbnail || supplier.image}
@ -50,7 +50,7 @@ export function RenderReturnOrder(
primary={instance.reference}
secondary={instance.description}
suffix={StatusRenderer({
status: instance.status_custom_key,
status: instance.status_custom_key || instance.status,
type: ModelType.returnorder
})}
image={customer.thumbnail || customer.image}
@ -95,7 +95,7 @@ export function RenderSalesOrder(
primary={instance.reference}
secondary={instance.description}
suffix={StatusRenderer({
status: instance.status_custom_key,
status: instance.status_custom_key || instance.status,
type: ModelType.salesorder
})}
image={customer.thumbnail || customer.image}
@ -138,7 +138,7 @@ export function RenderTransferOrder(
primary={instance.reference}
secondary={instance.description}
suffix={StatusRenderer({
status: instance.status_custom_key,
status: instance.status_custom_key || instance.status,
type: ModelType.transferorder
})}
url={

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: ar\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:15\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
@ -56,7 +56,7 @@ msgstr "تعديل"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "حذف"
@ -163,10 +163,10 @@ msgstr ""
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr ""
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr ""
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr ""
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr ""
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr ""
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr ""
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr ""
@ -273,7 +274,7 @@ msgstr ""
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr ""
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr ""
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr ""
@ -1982,7 +1983,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr ""
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr ""
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr ""
@ -3131,7 +3140,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr ""
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr ""
@ -3172,7 +3181,7 @@ msgstr ""
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr ""
@ -3198,8 +3207,8 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr ""
@ -3364,7 +3373,7 @@ msgstr ""
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr ""
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr ""
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr ""
@ -7698,7 +7706,7 @@ msgstr ""
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr ""
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr ""
@ -8018,48 +8026,48 @@ msgstr ""
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr ""
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr ""
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr ""
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr ""
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr ""
@ -11419,6 +11427,14 @@ msgstr ""
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr ""
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr ""
@ -11847,7 +11863,7 @@ msgstr ""
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr ""
@ -11869,11 +11885,11 @@ msgstr ""
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr ""
@ -11881,15 +11897,15 @@ msgstr ""
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr ""
@ -11897,44 +11913,44 @@ msgstr ""
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr ""
@ -11942,20 +11958,20 @@ msgstr ""
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr ""
@ -11963,31 +11979,31 @@ msgstr ""
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr ""
@ -11999,7 +12015,7 @@ msgstr ""
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr ""
@ -12015,7 +12031,7 @@ msgstr ""
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr ""
@ -12023,11 +12039,11 @@ msgstr ""
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr ""
@ -12660,29 +12676,29 @@ msgstr ""
msgid "Add Group"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: bg\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:15\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr ""
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr ""
@ -163,10 +163,10 @@ msgstr ""
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr ""
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr ""
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr ""
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr ""
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr ""
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr ""
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr ""
@ -273,7 +274,7 @@ msgstr ""
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr ""
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr ""
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr ""
@ -1982,7 +1983,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr ""
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr ""
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr ""
@ -3131,7 +3140,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr ""
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr ""
@ -3172,7 +3181,7 @@ msgstr ""
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr ""
@ -3198,8 +3207,8 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr ""
@ -3364,7 +3373,7 @@ msgstr ""
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr ""
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr ""
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr ""
@ -7698,7 +7706,7 @@ msgstr ""
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr ""
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr ""
@ -8018,48 +8026,48 @@ msgstr ""
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr ""
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr ""
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr ""
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr ""
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr ""
@ -11419,6 +11427,14 @@ msgstr ""
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr ""
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr ""
@ -11847,7 +11863,7 @@ msgstr ""
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr ""
@ -11869,11 +11885,11 @@ msgstr ""
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr ""
@ -11881,15 +11897,15 @@ msgstr ""
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr ""
@ -11897,44 +11913,44 @@ msgstr ""
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr ""
@ -11942,20 +11958,20 @@ msgstr ""
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr ""
@ -11963,31 +11979,31 @@ msgstr ""
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr ""
@ -11999,7 +12015,7 @@ msgstr ""
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr ""
@ -12015,7 +12031,7 @@ msgstr ""
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr ""
@ -12023,11 +12039,11 @@ msgstr ""
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr ""
@ -12660,29 +12676,29 @@ msgstr ""
msgid "Add Group"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: cs\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:15\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@ -56,7 +56,7 @@ msgstr "Upravit"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Odstranit"
@ -163,10 +163,10 @@ msgstr "Díl"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Díly"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Parametry"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Šablona parametru"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr "Šablony parametru"
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr "Díly výrobce"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Kategorie dílu"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Kategorie dílů"
@ -273,7 +274,7 @@ msgstr "Skladová položka"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Správci"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr "Výběr záznamů"
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Existují chyby pro jedno nebo více polí formuláře"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Aktualizovat"
@ -1982,7 +1983,7 @@ msgstr "Server"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Server"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Verze"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Zpracovávání dat"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Vyberte sloupec, nebo ponechte prázdné pro ignorování tohoto pole."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr "Automaticky"
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Ignorovat toto pole"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Mapování datových sloupců do databázových polí"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Přijmout mapování sloupců"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Databázové pole"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Popis pole:"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Importovaný sloupec"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr "Vyhledávací pole"
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Výchozí hodnota"
@ -2989,7 +2998,7 @@ msgstr "Chyba při načítání oznámení."
#: src/components/nav/PageDetail.tsx:263
msgid "Primary Action"
msgstr ""
msgstr "Primární akce"
#: src/components/nav/SearchDrawer.tsx:111
msgid "No Overview Available"
@ -3094,7 +3103,7 @@ msgstr "Máte neuložené změny, jste si jisti, že chcete opustit tento panel?
#. placeholder {0}: panel.name
#: src/components/panels/PanelGroup.tsx:349
msgid "Navigate to panel {0}"
msgstr ""
msgstr "Přejít na panel {0}"
#: src/components/panels/PanelGroup.tsx:409
msgid "Collapse panels"
@ -3131,7 +3140,7 @@ msgstr "Informace o pluginu"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr "Informace o pluginu"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Popis"
@ -3172,7 +3181,7 @@ msgstr "Datum"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Aktivní"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Webová stránka"
@ -3198,8 +3207,8 @@ msgstr "Instalační cesta"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Vestavěný"
@ -3364,7 +3373,7 @@ msgstr "Detaily"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Kategorie"
@ -4503,7 +4512,7 @@ msgstr "Stroje"
#: src/defaults/actions.tsx:243
msgid "Manage machines and machine types"
msgstr ""
msgstr "Správa strojů a strojních typů"
#: src/defaults/actions.tsx:253
msgid "Manage report templates"
@ -4823,7 +4832,7 @@ msgstr "Množství k dokončení"
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr "Vyberte kód projektu pro tuto položku"
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr "Vlastní jednotky"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Parametry kategorie"
@ -7698,7 +7706,7 @@ msgstr "Zrušit objednávku"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr "Zobrazení kalendáře"
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr "Běžný uživatel"
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr "Běžný uživatel"
msgid "Path"
msgstr "Cesta"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Nadřazená kategorie"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Podkategorie"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Strukturální"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Výchozí výchozí umístění nadřazeného zařízení"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Výchozí umístění"
@ -8018,48 +8026,48 @@ msgstr "Výchozí umístění"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Upravit kategorii dílu"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Přesunout položky do nadřazené kategorie"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Odstranit položky"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Odstranit kategorii dílu"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Akce s položkou"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Akce pro položky v této kategorii"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Akce pro podkategorie"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Akce pro podkategorie v této kategorii"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Akce kategorie."
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Podrobnosti o kategorii"
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "Jste si jisti, že chcete odstranit vybrané položky?"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "Tuto akci nelze vrátit zpět"
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr "Zobrazit povolené šablony"
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr "Typ modelu"
@ -11402,16 +11410,16 @@ msgstr "Nastavit nadřazenou kategorii pro vybrané položky"
msgid "Add Part Category"
msgstr "Přidat kategorii dílu"
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr "Přidat kategorii parametru"
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Upravit kategorii parametru"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Odstranit kategorii parametru"
@ -11419,6 +11427,14 @@ msgstr "Odstranit kategorii parametru"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr "Šablony parametru kategorie dílu"
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr "Díly vytvořené v této kategorii zdědí výchozí hodnoty zadané zde."
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr "Plugin"
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr "Povinné"
@ -11847,7 +11863,7 @@ msgstr "Povinné"
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr "Popis není k dispozici"
@ -11869,11 +11885,11 @@ msgstr "Popis není k dispozici"
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr "Potvrdit aktivaci pluginu"
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr "Potvrdit deaktivaci pluginu"
@ -11881,15 +11897,15 @@ msgstr "Potvrdit deaktivaci pluginu"
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr "Vybraný plugin bude aktivován"
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr "Vybraný plugin bude deaktivován"
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr "Deaktivovat"
@ -11897,44 +11913,44 @@ msgstr "Deaktivovat"
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr "Aktivovat"
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Aktivovat vybraný plugin"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Aktualizovat vybraný plugin"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr "Odinstalovat"
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Odinstalovat vybraný plugin"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Odstranit vybranou konfiguraci pluginu"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr "Aktivovat plugin"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr "Deaktivovat plugin"
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "Plugin byl aktivován"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "Plugin byl deaktivován"
@ -11942,20 +11958,20 @@ msgstr "Plugin byl deaktivován"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr "Instalovat plugin"
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr "Instalovat"
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr "Plugin byl úspěšně nainstalován"
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr "Odinstalovat plugin"
@ -11963,31 +11979,31 @@ msgstr "Odinstalovat plugin"
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr "Potvrdit odinstalaci pluginu"
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr "Vybraný plugin bude odinstalován."
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr "Plugin byl úspěšně odinstalován"
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr "Odstranit plugin"
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr "Smazání této konfigurace pluginu odstraní všechna související nastavení a data. Jste si jisti, že chcete odstranit tento plugin?"
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr "Pluginy znovu načteny"
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr "Pluginy byly úspěšně znovu načteny"
@ -11999,7 +12015,7 @@ msgstr "Pluginy byly úspěšně znovu načteny"
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr "Znovu načíst pluginy"
@ -12015,7 +12031,7 @@ msgstr "Znovu načíst pluginy"
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr "Detail Pluginu"
@ -12023,11 +12039,11 @@ msgstr "Detail Pluginu"
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr "Příklad"
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr "Nainstalováno"
@ -12660,29 +12676,29 @@ msgstr "Upravit skupinu"
msgid "Add Group"
msgstr "Přidat skupinu"
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr "Smazat relaci importu"
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr "Vytvořit relaci importu"
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr "Nahráno"
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Importované řádky"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr "Filtrovat podle typu cílového modelu"
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr "Filtrovat podle stavu importované relace"
@ -12724,31 +12740,31 @@ msgstr "Další spuštění"
#: src/tables/settings/SelectionListDrawer.tsx:64
msgid "Add Selection Entry"
msgstr ""
msgstr "Přidat výběr záznamu"
#: src/tables/settings/SelectionListDrawer.tsx:77
msgid "Edit Selection Entry"
msgstr ""
msgstr "Upravit výběr záznamu"
#: src/tables/settings/SelectionListDrawer.tsx:84
msgid "Delete Selection Entry"
msgstr ""
msgstr "Odebrat výběr záznamu"
#: src/tables/settings/SelectionListDrawer.tsx:94
msgid "Add Entry"
msgstr ""
msgstr "Přidat záznam"
#: src/tables/settings/SelectionListDrawer.tsx:174
msgid "This selection list is locked and cannot be edited."
msgstr ""
msgstr "Tento seznam výběru je uzamčen a nemůže být upraven."
#: src/tables/settings/SelectionListDrawer.tsx:180
msgid "Selection List Details"
msgstr ""
msgstr "Detaily seznamu výběru"
#: src/tables/settings/SelectionListDrawer.tsx:204
msgid "Selection List Entries"
msgstr ""
msgstr "Záznamy seznamu výběru"
#: src/tables/settings/SelectionListTable.tsx:67
#: src/tables/settings/SelectionListTable.tsx:109

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: da\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr "Rediger"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Slet"
@ -163,10 +163,10 @@ msgstr "Del"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Dele"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Parameter"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Parameter Skabelon"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr "Parameter Skabeloner"
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr "Producent Dele"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Del Kategori"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Del Kategorier"
@ -273,7 +274,7 @@ msgstr "Lagervarer"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Ejer"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Fejl findes i et eller flere formularfelter"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Opdater"
@ -1982,7 +1983,7 @@ msgstr "Vært"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Server"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Version"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Behandler Data"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Vælg kolonne, eller efterlad blank for at ignorere dette felt."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Ignorer dette felt"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Kortlægning af datakolonner til databasefelter"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Accepter Kolonnekortlægning"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Databasefelt"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Feltbeskrivelse"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Importerede Kolonne"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Standardværdi"
@ -3131,7 +3140,7 @@ msgstr "Plugin Information"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr "Plugin Information"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Beskrivelse"
@ -3172,7 +3181,7 @@ msgstr "Dato"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Aktiv"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Hjemmeside"
@ -3198,8 +3207,8 @@ msgstr "Installationssti"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Indbygget"
@ -3364,7 +3373,7 @@ msgstr "Detaljer"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Kategori"
@ -4823,7 +4832,7 @@ msgstr "Antal til fuldførelse"
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr "Vælg projektkode for dette linjeelement"
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr ""
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Kategori Parametre"
@ -7698,7 +7706,7 @@ msgstr "Annuller ordre"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr "Kalender Visning"
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr "Sti"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Overordnet kategori"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Underkategorier"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Strukturelle"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Overordnet standard lokation"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Standard lokation"
@ -8018,48 +8026,48 @@ msgstr "Standard lokation"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Rediger Del Kategori"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Flyt elementer til overordnet kategori"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Slet vare"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Slet Del Kategori"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Dele Handling"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Handling for dele i denne kategori"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Underkategori Handling"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Handling for underliggende kategorier i denne kategori"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Kategori Handlinger"
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Kategori Detaljer"
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "Er du sikker på at du ønsker at slette de valgte varer?"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "Denne handling kan ikke fortrydes"
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr "Vis aktiverede skabeloner"
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr ""
@ -11402,16 +11410,16 @@ msgstr "Sæt overordnet kategori for de valgte elementer"
msgid "Add Part Category"
msgstr "Tilføj Del Kategori"
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr "Tilføj Kategori Parameter"
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Rediger Kategori Parameter"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Slet Kategori Parameter"
@ -11419,6 +11427,14 @@ msgstr "Slet Kategori Parameter"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr "Plugin"
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr "Obligatorisk"
@ -11847,7 +11863,7 @@ msgstr "Obligatorisk"
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr "Beskrivelse ikke tilgængelig"
@ -11869,11 +11885,11 @@ msgstr "Beskrivelse ikke tilgængelig"
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr "Bekræft aktivering af plugin"
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr "Bekræft deaktivering af plugin"
@ -11881,15 +11897,15 @@ msgstr "Bekræft deaktivering af plugin"
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr "Det valgte plugin vil blive aktiveret"
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr "Det valgte plugin vil blive deaktiveret"
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr "Deaktiver"
@ -11897,44 +11913,44 @@ msgstr "Deaktiver"
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr "Aktiver"
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Aktiver det valgte plugin"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Opdater valgte plugin"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr "Afinstaller"
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Afinstaller det valgte plugin"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Slet valgte plugin konfiguration"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr "Aktiver Plugin"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "Plugin blev aktiveret"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "Plugin blev deaktiveret"
@ -11942,20 +11958,20 @@ msgstr "Plugin blev deaktiveret"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr "Installer plugin"
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr "Installer"
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr "Plugin blev installeret"
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr "Afinstaller Plugin"
@ -11963,31 +11979,31 @@ msgstr "Afinstaller Plugin"
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr "Bekræft afinstallation af plugin"
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr "Det valgte plugin vil blive afinstalleret."
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr "Plugin blev afinstalleret"
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr "Slet Plugin"
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr "Sletning af denne plugin konfiguration vil fjerne alle tilknyttede indstillinger og data. Er du sikker på, at du vil slette dette plugin?"
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr "Plugins genindlæst"
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr "Plugins blev genindlæst"
@ -11999,7 +12015,7 @@ msgstr "Plugins blev genindlæst"
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr "Genindlæs Plugins"
@ -12015,7 +12031,7 @@ msgstr "Genindlæs Plugins"
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr "Plugin Detaljer"
@ -12023,11 +12039,11 @@ msgstr "Plugin Detaljer"
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr "Prøve"
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr "Installeret"
@ -12660,29 +12676,29 @@ msgstr "Rediger Gruppe"
msgid "Add Group"
msgstr "Tilføj gruppe"
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr "Slet import session"
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr "Opret Import Session"
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr "Uploadet"
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Importerede Rækker"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr "Bearbeiten"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Löschen"
@ -163,10 +163,10 @@ msgstr "Teil"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Teile"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Parameter"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Parameter Vorlage"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr "Parameter Vorlagen"
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr "Herstellerteile"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Teilkategorie"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Teil-Kategorien"
@ -273,7 +274,7 @@ msgstr "Lagerartikel"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Eigentümer"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Fehler für ein oder mehrere Formularfelder vorhanden"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Aktualisieren"
@ -1982,7 +1983,7 @@ msgstr "Adresse"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Server"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Version"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Daten werden verarbeiten"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Spalte auswählen oder leer lassen, um dieses Feld zu ignorieren."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Dieses Feld ignorieren"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Spalten zu Datenbankfeldern zuordnen"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Spaltenzuordnung akzeptieren"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Datenbankfeld"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Feldbeschreibung"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Importierte Spalte"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Standard-Wert"
@ -3131,7 +3140,7 @@ msgstr "Plugin-Informationen"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr "Plugin-Informationen"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Beschreibung"
@ -3172,7 +3181,7 @@ msgstr "Datum"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Aktiv"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Webseite"
@ -3198,8 +3207,8 @@ msgstr "Installationspfad"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Integriert"
@ -3364,7 +3373,7 @@ msgstr "Details"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Kategorie"
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr "Kundenspezifische Einheiten"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Kategorie Parameter"
@ -7698,7 +7706,7 @@ msgstr "Bestellung stornieren"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr "Kalenderansicht"
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr "Pfad"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Übergeordnete Kategorie"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Unterkategorien"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Strukturell"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Übergeordneter Standard-Standort"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Standard-Lagerort"
@ -8018,48 +8026,48 @@ msgstr "Standard-Lagerort"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Teilekategorie bearbeiten"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Elemente in übergeordnete Kategorie verschieben"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Elemente löschen"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Teile-Kategorie löschen"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Teile Aktionen"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Aktion für Teile in dieser Kategorie"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Unterkategorien-Aktion"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Aktion für untergeordnete Kategorien in dieser Kategorie"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Kategorieaktionen"
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Kategorie-Details"
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "Möchten Sie die ausgewählten Elemente wirklich löschen?"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "Diese Aktion kann nicht rückgängig gemacht werden"
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr "Modelltyp"
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr "Teilekategorie hinzufügen"
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr "Kategorieparameter hinzufügen"
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Kategorieparameter bearbeiten"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Kategorieparameter löschen"
@ -11419,6 +11427,14 @@ msgstr "Kategorieparameter löschen"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr "Plugin"
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr "verpflichtend"
@ -11847,7 +11863,7 @@ msgstr "verpflichtend"
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr "描述不可用"
@ -11869,11 +11885,11 @@ msgstr "描述不可用"
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr "Plugin Aktivierung bestätigen"
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr "Plugin Deaktivierung bestätigen"
@ -11881,15 +11897,15 @@ msgstr "Plugin Deaktivierung bestätigen"
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr "Das ausgewählte Plugin wird aktiviert"
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr "Das ausgewählte Plugin wird deaktiviert"
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr "Deaktivieren"
@ -11897,44 +11913,44 @@ msgstr "Deaktivieren"
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr "Aktivieren"
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Ausgewähltes Plugin aktivieren"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Ausgewähltes Plugin aktualisieren"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr "Deinstallieren"
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Ausgewählten Plugin deinstallieren"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Ausgewählte Plugin-Konfiguration löschen"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr "Plugin aktivieren"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "Das Plugin wurde aktiviert"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "Das Plugin wurde deaktiviert"
@ -11942,20 +11958,20 @@ msgstr "Das Plugin wurde deaktiviert"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr "Plugin installieren"
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr "Installieren"
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr "Plugin erfolgreich installiert"
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr "Plugin deinstallieren"
@ -11963,31 +11979,31 @@ msgstr "Plugin deinstallieren"
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr "Plugin deinstallieren bestätigen"
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr "Das ausgewählte Plugin wird deinstalliert."
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr "Plugin erfolgreich deinstalliert"
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr "Plugin löschen"
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr "Durch das Löschen dieser Plugin-Konfiguration werden alle zugehörigen Einstellungen und Daten entfernt. Soll dieses Plugin gelöscht werden?"
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr "Erweiterungen neu geladen"
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr "Plugins wurden erfolgreich neu geladen"
@ -11999,7 +12015,7 @@ msgstr "Plugins wurden erfolgreich neu geladen"
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr "Plugins neu laden"
@ -12015,7 +12031,7 @@ msgstr "Plugins neu laden"
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr "Plugin Detail"
@ -12023,11 +12039,11 @@ msgstr "Plugin Detail"
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr "Beispiel"
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr "Installiert"
@ -12660,29 +12676,29 @@ msgstr "Gruppe bearbeiten"
msgid "Add Group"
msgstr "Gruppe hinzufügen"
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr "Import-Session löschen"
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr "Import-Session erstellen"
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr "Hochgeladen"
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Importierte Zeilen"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr "Nach Modelltyp filtern"
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr "Nach Import-Session-Status filtern"

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: el\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr "Επεξεργασία"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Διαγραφή"
@ -163,10 +163,10 @@ msgstr "Προϊόν"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Προϊόντα"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Παράμετροι"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Πρότυπο παραμέτρου"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr ""
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr "Προϊόντα Κατασκευαστή"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Κατηγορία Προϊόντος"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Κατηγορίες Προϊόντων"
@ -273,7 +274,7 @@ msgstr "Προϊόν Αποθέματος"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Ιδιοκτήτες"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Υπάρχουν σφάλματα σε ένα ή περισσότερα
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Ενημέρωση"
@ -1982,7 +1983,7 @@ msgstr "Υπολογιστής/Host"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Διακομιστής"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Έκδοση"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Επεξεργασία δεδομένων"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Επιλέξτε στήλη ή αφήστε κενό για να αγν
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Αγνόηση αυτού του πεδίου"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Αντιστοίχιση στηλών δεδομένων με πεδία βάσης δεδομένων"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Αποδοχή αντιστοίχισης στηλών"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Πεδίο βάσης δεδομένων"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Περιγραφή πεδίου"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Εισαγόμενη στήλη"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Προεπιλεγμένη τιμή"
@ -3131,7 +3140,7 @@ msgstr "Πληροφορίες πρόσθετου"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr "Πληροφορίες πρόσθετου"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Περιγραφή"
@ -3172,7 +3181,7 @@ msgstr "Ημερομηνία"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Ενεργό"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Ιστοσελίδα"
@ -3198,8 +3207,8 @@ msgstr "Μονοπάτι εγκατάστασης"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Ενσωματωμένο"
@ -3364,7 +3373,7 @@ msgstr "Λεπτομέρειες"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Κατηγορία"
@ -4823,7 +4832,7 @@ msgstr "Ποσότητα προς ολοκλήρωση"
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr "Επιλέξτε κωδικό έργου για αυτό το Προϊό
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr "Προσαρμοσμένες μονάδες"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Παράμετροι Κατηγορίας"
@ -7698,7 +7706,7 @@ msgstr "Ακύρωση παραγγελίας"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr "Προβολή Ημερολογίου"
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr "Διαδρομή"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Γονική Κατηγορία"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Υποκατηγορίες"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Δομικό"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Προεπιλεγμένη τοποθεσία γονικής"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Προεπιλεγμένη τοποθεσία"
@ -8018,48 +8026,48 @@ msgstr "Προεπιλεγμένη τοποθεσία"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Επεξεργασία Κατηγορίας Προϊόντων"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Μετακίνηση Προϊόντων στη γονική κατηγορία"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Διαγραφή Προϊόντων"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Διαγραφή Κατηγορίας Προϊόντων"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Ενέργεια Προϊόντων"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Ενέργεια για τα Προϊόντα αυτής της κατηγορίας"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Ενέργεια Υποκατηγοριών"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Ενέργεια για τις υποκατηγορίες αυτής της κατηγορίας"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Ενέργειες Κατηγορίας"
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Στοιχεία Κατηγορίας"
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε τα επιλεγμένα είδη;"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "Αυτή η ενέργεια δεν μπορεί να αναιρεθεί"
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr "Τύπος μοντέλου"
@ -11402,16 +11410,16 @@ msgstr "Ορισμός γονικής κατηγορίας για τα επιλ
msgid "Add Part Category"
msgstr "Προσθήκη κατηγορίας προϊόντων"
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr "Προσθήκη παραμέτρου κατηγορίας"
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Επεξεργασία παραμέτρου κατηγορίας"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Διαγραφή παραμέτρου κατηγορίας"
@ -11419,6 +11427,14 @@ msgstr "Διαγραφή παραμέτρου κατηγορίας"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr "Plugin"
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr "Υποχρεωτικό"
@ -11847,7 +11863,7 @@ msgstr "Υποχρεωτικό"
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr "Δεν υπάρχει διαθέσιμη περιγραφή"
@ -11869,11 +11885,11 @@ msgstr "Δεν υπάρχει διαθέσιμη περιγραφή"
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr "Επιβεβαίωση ενεργοποίησης plugin"
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr "Επιβεβαίωση απενεργοποίησης plugin"
@ -11881,15 +11897,15 @@ msgstr "Επιβεβαίωση απενεργοποίησης plugin"
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr "Το επιλεγμένο plugin θα ενεργοποιηθεί"
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr "Το επιλεγμένο plugin θα απενεργοποιηθεί"
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr "Απενεργοποίηση"
@ -11897,44 +11913,44 @@ msgstr "Απενεργοποίηση"
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr "Ενεργοποίηση"
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Ενεργοποίηση επιλεγμένου plugin"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Ενημέρωση επιλεγμένου plugin"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr "Απεγκατάσταση"
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Απεγκατάσταση επιλεγμένου plugin"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Διαγραφή ρυθμίσεων του επιλεγμένου plugin"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr "Ενεργοποίηση Plugin"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "Το plugin ενεργοποιήθηκε"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "Το plugin απενεργοποιήθηκε"
@ -11942,20 +11958,20 @@ msgstr "Το plugin απενεργοποιήθηκε"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr "Εγκατάσταση Plugin"
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr "Εγκατάσταση"
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr "Το plugin εγκαταστάθηκε με επιτυχία"
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr "Απεγκατάσταση Plugin"
@ -11963,31 +11979,31 @@ msgstr "Απεγκατάσταση Plugin"
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr "Επιβεβαίωση απεγκατάστασης plugin"
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr "Το επιλεγμένο plugin θα απεγκατασταθεί."
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr "Το plugin απεγκαταστάθηκε με επιτυχία"
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr "Διαγραφή Plugin"
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr "Η διαγραφή αυτής της ρύθμισης plugin θα αφαιρέσει όλες τις συνδεδεμένες ρυθμίσεις και δεδομένα. Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το plugin;"
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr "Τα plugins φορτώθηκαν ξανά"
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr "Τα plugins φορτώθηκαν ξανά με επιτυχία"
@ -11999,7 +12015,7 @@ msgstr "Τα plugins φορτώθηκαν ξανά με επιτυχία"
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr "Επαναφόρτωση Plugins"
@ -12015,7 +12031,7 @@ msgstr "Επαναφόρτωση Plugins"
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr "Λεπτομέρειες Plugin"
@ -12023,11 +12039,11 @@ msgstr "Λεπτομέρειες Plugin"
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr "Δείγμα"
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr "Εγκατεστημένο"
@ -12660,29 +12676,29 @@ msgstr "Επεξεργασία ομάδας"
msgid "Add Group"
msgstr "Προσθήκη ομάδας"
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr "Διαγραφή συνεδρίας εισαγωγής"
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr "Δημιουργία συνεδρίας εισαγωγής"
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr "Μεταφορτώθηκε"
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Γραμμές που εισήχθησαν"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr "Φιλτράρισμα κατά τύπο μοντέλου προορισμού"
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr "Φιλτράρισμα κατά κατάσταση συνεδρίας εισαγωγής"

View File

@ -51,7 +51,7 @@ msgstr "Edit"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Delete"
@ -158,10 +158,10 @@ msgstr "Part"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Parts"
@ -189,11 +189,12 @@ msgid "Parameters"
msgstr "Parameters"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Parameter Template"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr "Parameter Templates"
@ -236,15 +237,15 @@ msgid "Manufacturer Parts"
msgstr "Manufacturer Parts"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Part Category"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Part Categories"
@ -268,7 +269,7 @@ msgstr "Stock Item"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -533,7 +534,7 @@ msgstr "Owners"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -635,7 +636,7 @@ msgstr "Selection Entries"
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1789,7 +1790,7 @@ msgstr "Errors exist for one or more form fields"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Update"
@ -1977,7 +1978,7 @@ msgstr "Host"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2054,7 +2055,7 @@ msgstr "Server"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Version"
@ -2238,7 +2239,7 @@ msgid "Processing Data"
msgstr "Processing Data"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2261,31 +2262,39 @@ msgstr "Select column, or leave blank to ignore this field."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr "Auto"
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Ignore this field"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Mapping data columns to database fields"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Accept Column Mapping"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Database Field"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Field Description"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Imported Column"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr "Lookup Field"
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Default Value"
@ -3126,7 +3135,7 @@ msgstr "Plugin Information"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3137,7 +3146,7 @@ msgstr "Plugin Information"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Description"
@ -3167,7 +3176,7 @@ msgstr "Date"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3178,7 +3187,7 @@ msgstr "Active"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Website"
@ -3193,8 +3202,8 @@ msgstr "Installation Path"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Builtin"
@ -3359,7 +3368,7 @@ msgstr "Details"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Category"
@ -4818,7 +4827,7 @@ msgstr "Quantity to Complete"
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4990,7 +4999,7 @@ msgstr "Select project code for this line item"
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6994,7 +7003,6 @@ msgstr "Custom Units"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Category Parameters"
@ -7693,7 +7701,7 @@ msgstr "Cancel order"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7716,7 +7724,7 @@ msgid "Calendar View"
msgstr "Calendar View"
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7977,7 +7985,7 @@ msgstr "Normal user"
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7985,27 +7993,27 @@ msgstr "Normal user"
msgid "Path"
msgstr "Path"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Parent Category"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Subcategories"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Structural"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Parent default location"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Default location"
@ -8013,48 +8021,48 @@ msgstr "Default location"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Edit Part Category"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Move items to parent category"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Delete items"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Delete Part Category"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Parts Action"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Action for parts in this category"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Child Categories Action"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Action for child categories in this category"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Category Actions"
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Category Details"
@ -10025,7 +10033,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "Are you sure you want to delete the selected items?"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "This action cannot be undone"
@ -11060,7 +11068,7 @@ msgid "Show enabled templates"
msgstr "Show enabled templates"
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr "Model Type"
@ -11397,16 +11405,16 @@ msgstr "Set parent category for the selected items"
msgid "Add Part Category"
msgstr "Add Part Category"
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr "Add Category Parameter"
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Edit Category Parameter"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Delete Category Parameter"
@ -11414,6 +11422,14 @@ msgstr "Delete Category Parameter"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr "Part Category Parameters Templates"
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr "Parts which are created within this category will inherit the default values specified here."
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11833,8 +11849,8 @@ msgstr "Plugin"
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr "Mandatory"
@ -11842,7 +11858,7 @@ msgstr "Mandatory"
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr "Description not available"
@ -11864,11 +11880,11 @@ msgstr "Description not available"
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr "Confirm plugin activation"
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr "Confirm plugin deactivation"
@ -11876,15 +11892,15 @@ msgstr "Confirm plugin deactivation"
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr "The selected plugin will be activated"
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr "The selected plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr "Deactivate"
@ -11892,44 +11908,44 @@ msgstr "Deactivate"
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr "Activate"
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Activate selected plugin"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Update selected plugin"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr "Uninstall"
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Uninstall selected plugin"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Delete selected plugin configuration"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr "Activate Plugin"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr "Deactivate Plugin"
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "The plugin was activated"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "The plugin was deactivated"
@ -11937,20 +11953,20 @@ msgstr "The plugin was deactivated"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr "Install Plugin"
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr "Install"
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr "Plugin installed successfully"
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr "Uninstall Plugin"
@ -11958,31 +11974,31 @@ msgstr "Uninstall Plugin"
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr "Confirm plugin uninstall"
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr "The selected plugin will be uninstalled."
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr "Plugin uninstalled successfully"
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr "Delete Plugin"
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr "Plugins reloaded"
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr "Plugins were reloaded successfully"
@ -11994,7 +12010,7 @@ msgstr "Plugins were reloaded successfully"
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr "Reload Plugins"
@ -12010,7 +12026,7 @@ msgstr "Reload Plugins"
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr "Plugin Detail"
@ -12018,11 +12034,11 @@ msgstr "Plugin Detail"
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr "Sample"
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr "Installed"
@ -12655,29 +12671,29 @@ msgstr "Edit Group"
msgid "Add Group"
msgstr "Add Group"
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr "Delete Import Session"
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr "Create Import Session"
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr "Uploaded"
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Imported Rows"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr "Filter by target model type"
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr "Filter by import session status"

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr "Editar"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Eliminar"
@ -163,10 +163,10 @@ msgstr "Pieza"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Piezas"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Parámetros"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Plantilla de parámetro"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr ""
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr "Piezas del fabricante"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Categoría de Pieza"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Categorías de Pieza"
@ -273,7 +274,7 @@ msgstr "Artículo de stock"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Propietarios"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Existen errores para uno o más campos del formulario"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Actualizar"
@ -1982,7 +1983,7 @@ msgstr "Servidor"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Servidor"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Versión"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Procesando datos"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Seleccione la columna o deje en blanco para ignorar este campo."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Ignorar este campo"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Mapear datos de columnas a campos de la base de datos"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Aceptar mapeo de columnas"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Cambo de base de datos"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Descripción del campo"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Columna importada"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Valor por defecto"
@ -3131,7 +3140,7 @@ msgstr "Información del complemento"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr "Información del complemento"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Descripción"
@ -3172,7 +3181,7 @@ msgstr "Fecha"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Activo"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Sitio Web"
@ -3198,8 +3207,8 @@ msgstr "Ruta de Instalación"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Integrado"
@ -3364,7 +3373,7 @@ msgstr "Detalles"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Categoría"
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr "Unidades personalizadas"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Parámetros de categoría"
@ -7698,7 +7706,7 @@ msgstr "Cancelar pedido"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr ""
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr "Ruta"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Categoría superior"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Subcategorías"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Estructural"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Ubicación padre por defecto"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Ubicación predeterminada"
@ -8018,48 +8026,48 @@ msgstr "Ubicación predeterminada"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Editar categoría de pieza"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Mover elementos a la categoría padre"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Eliminar elementos"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Borrar categoría de pieza"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Acciones de piezas"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Acciones de piezas en esta categoría"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Acción en subcategorías"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Acción para subcategorías en esta categoría"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Acciones de categoría"
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Detalles de categoría"
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "¿Confirma que desea eliminar los elementos seleccionados?"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "Esta acción no se puede deshacer"
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr ""
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr "Añadir categoría de pieza"
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr "Añadir parámetro de Categoría"
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Editar parámetro de Categoría"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Eliminar parámetro de Categoría"
@ -11419,6 +11427,14 @@ msgstr "Eliminar parámetro de Categoría"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr ""
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr ""
@ -11847,7 +11863,7 @@ msgstr ""
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr ""
@ -11869,11 +11885,11 @@ msgstr ""
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr ""
@ -11881,15 +11897,15 @@ msgstr ""
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr ""
@ -11897,44 +11913,44 @@ msgstr ""
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Activar el complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Actualizar complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Desinstalar el complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Eliminar la configuración del complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "El complemento fue activado"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "El complemento fue desactivado"
@ -11942,20 +11958,20 @@ msgstr "El complemento fue desactivado"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr ""
@ -11963,31 +11979,31 @@ msgstr ""
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr ""
@ -11999,7 +12015,7 @@ msgstr ""
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr ""
@ -12015,7 +12031,7 @@ msgstr ""
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr ""
@ -12023,11 +12039,11 @@ msgstr ""
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr ""
@ -12660,29 +12676,29 @@ msgstr ""
msgid "Add Group"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Filas Importadas"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: es_MX\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Spanish, Mexico\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr "Editar"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Eliminar"
@ -163,10 +163,10 @@ msgstr "Pieza"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Piezas"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Parámetros"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Plantilla de parámetro"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr "Plantillas de parámetros"
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr "Piezas del fabricante"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Categoría de Pieza"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Categorías de Pieza"
@ -273,7 +274,7 @@ msgstr "Artículo de stock"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Propietarios"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Existen errores para uno o más campos del formulario"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Actualizar"
@ -1982,7 +1983,7 @@ msgstr "Servidor"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Servidor"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Versión"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Procesando datos"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Seleccione la columna o deje en blanco para ignorar este campo."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Ignorar este campo"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Mapear datos de columnas a campos de la base de datos"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Aceptar mapeo de columnas"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Cambo de base de datos"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Descripción del campo"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Columna importada"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Valor por defecto"
@ -3131,7 +3140,7 @@ msgstr "Información del complemento"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr "Información del complemento"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Descripción"
@ -3172,7 +3181,7 @@ msgstr "Fecha"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Activo"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Sitio web"
@ -3198,8 +3207,8 @@ msgstr "Ruta de instalación"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Integrado"
@ -3364,7 +3373,7 @@ msgstr "Detalles"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Categoría"
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr "Unidades personalizadas"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Parámetros de categoría"
@ -7698,7 +7706,7 @@ msgstr "Cancelar pedido"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr ""
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr "Ruta"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Categoría superior"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Subcategorías"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Estructural"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Ubicación padre por defecto"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Ubicación predeterminada"
@ -8018,48 +8026,48 @@ msgstr "Ubicación predeterminada"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Editar categoría de pieza"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Mover artículos a la categoría padre"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Eliminar elementos"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Eliminar categoría de pieza"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Acciones de piezas"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Acciones de piezas en esta categoría"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Acción en subcategorías"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Acción para subcategorías en esta categoría"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Acciones de categoría"
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Detalles de categoría"
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr ""
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "Esta acción no se puede deshacer"
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr ""
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr ""
@ -11419,6 +11427,14 @@ msgstr ""
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr ""
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr ""
@ -11847,7 +11863,7 @@ msgstr ""
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr ""
@ -11869,11 +11885,11 @@ msgstr ""
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr ""
@ -11881,15 +11897,15 @@ msgstr ""
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr ""
@ -11897,44 +11913,44 @@ msgstr ""
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Activar el complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Actualizar complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Desinstalar el complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Eliminar la configuración del complemento seleccionado"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "El complemento fue activado"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "El complemento fue desactivado"
@ -11942,20 +11958,20 @@ msgstr "El complemento fue desactivado"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr ""
@ -11963,31 +11979,31 @@ msgstr ""
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr ""
@ -11999,7 +12015,7 @@ msgstr ""
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr ""
@ -12015,7 +12031,7 @@ msgstr ""
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr ""
@ -12023,11 +12039,11 @@ msgstr ""
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr ""
@ -12660,29 +12676,29 @@ msgstr ""
msgid "Add Group"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: et\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr "Muuda"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Kustuta"
@ -163,10 +163,10 @@ msgstr "Osa"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Osad"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Parameetrid"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Parameetri mall"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr "Parameetri mall"
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr ""
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Osa kategooria"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Osa kategooriad"
@ -273,7 +274,7 @@ msgstr ""
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Omanikud"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Ühes või mitmes vormiväljas on vigu"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Värskenda"
@ -1982,7 +1983,7 @@ msgstr "Võõrustaja"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Server"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Versioon"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Andmete töötlemine"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Valige veerg või jätke tühi, et see väli ignoreerida."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Ignoreerige see väli"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Kaardistage andmepalgid andmebaasi väljadele"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Võtke vastu veeru kaardistamine"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Andmebaasi väli"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Välja kirjeldus"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Imporditud veerg"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Vaikimisi väärtus"
@ -3131,7 +3140,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr ""
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Kirjeldus"
@ -3172,7 +3181,7 @@ msgstr "Kuupäev"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Aktiivne"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Veebileht"
@ -3198,8 +3207,8 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr ""
@ -3364,7 +3373,7 @@ msgstr "Üksikasjad"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Kategooria"
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr "Kohandatud ühikud"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr ""
@ -7698,7 +7706,7 @@ msgstr "Tühista tellimus"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr "Kalendrivaade"
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr "Asukoht"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Ülemkategooria"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Alamkategooriad"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Vanemaluse vaikimisi asukoht"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Vaikimisi asukoht"
@ -8018,48 +8026,48 @@ msgstr "Vaikimisi asukoht"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Muuda osa kategooriat"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Tegevus osade jaoks selles kategoorias"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Alamkategooriate tegevus"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Tegevus selle kategooria alamkategooriate jaoks"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr ""
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "Kas olete kindel, et soovite kustutada valitud elemendid?"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr ""
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr "Mudeli liik"
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Muuda kategooria parameetrit"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Kustuta kategooria parameeter"
@ -11419,6 +11427,14 @@ msgstr "Kustuta kategooria parameeter"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr "Plugin"
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr "Kohustuslik"
@ -11847,7 +11863,7 @@ msgstr "Kohustuslik"
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr "Kirjeldust pole saadaval"
@ -11869,11 +11885,11 @@ msgstr "Kirjeldust pole saadaval"
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr "Kinnitage pistikmooduli aktiveerimine"
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr "Kinnitage pistikmoodulite deaktiveerimine"
@ -11881,15 +11897,15 @@ msgstr "Kinnitage pistikmoodulite deaktiveerimine"
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr "Valitud pistiklahendus aktiveeritakse"
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr "Valitud pistiklahendus inaktiveeritakse"
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr "Lülita välja"
@ -11897,44 +11913,44 @@ msgstr "Lülita välja"
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr "Aktiveeri"
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr "Eemalda"
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr "Aktiveeri plugin"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr ""
@ -11942,20 +11958,20 @@ msgstr ""
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr "Paigalda plugin"
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr "Paigalda"
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr "Plugin paigaldamine õnnestus"
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr "Eemalda plugin"
@ -11963,31 +11979,31 @@ msgstr "Eemalda plugin"
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr "Kinnita plugina eemaldamine"
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr "Valitud pistikprogramm eemaldatakse."
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr "Plugin desinstall on õnnestunud"
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr "Kustuta plugin"
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr "Kui kustutate selle pistikprogrammi seadistuse, eemaldatakse kõik seotud sätted ja andmed. Olete kindel, et soovite selle pistikprogrammi kustutada?"
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr "Plugin on uuesti laaditud"
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr "Pluginid said edukalt taaskäivitatud"
@ -11999,7 +12015,7 @@ msgstr "Pluginid said edukalt taaskäivitatud"
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr "Laadi pluginad uuesti"
@ -12015,7 +12031,7 @@ msgstr "Laadi pluginad uuesti"
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr "Plugina üksikasjad"
@ -12023,11 +12039,11 @@ msgstr "Plugina üksikasjad"
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr "Näidis"
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr "Paigaldatud"
@ -12660,29 +12676,29 @@ msgstr ""
msgid "Add Group"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr "Kustuta importimise sessioon"
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr "Loo importimise sessioon"
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr "Üles laaditud"
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Imporditud read"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr "Filtri sihtmodeli tüübi järgi"
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr "Filtreeri impordi seansi oleku järgi"

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: fa\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr ""
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr ""
@ -163,10 +163,10 @@ msgstr ""
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr ""
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr ""
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr ""
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr ""
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr ""
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr ""
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr ""
@ -273,7 +274,7 @@ msgstr ""
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr ""
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr ""
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr ""
@ -1982,7 +1983,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr ""
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr ""
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr ""
@ -3131,7 +3140,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr ""
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr ""
@ -3172,7 +3181,7 @@ msgstr ""
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr ""
@ -3198,8 +3207,8 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr ""
@ -3364,7 +3373,7 @@ msgstr ""
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr ""
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr ""
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr ""
@ -7698,7 +7706,7 @@ msgstr ""
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr ""
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr ""
@ -8018,48 +8026,48 @@ msgstr ""
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr ""
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr ""
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr ""
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr ""
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr ""
@ -11419,6 +11427,14 @@ msgstr ""
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr ""
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr ""
@ -11847,7 +11863,7 @@ msgstr ""
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr ""
@ -11869,11 +11885,11 @@ msgstr ""
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr ""
@ -11881,15 +11897,15 @@ msgstr ""
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr ""
@ -11897,44 +11913,44 @@ msgstr ""
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr ""
@ -11942,20 +11958,20 @@ msgstr ""
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr ""
@ -11963,31 +11979,31 @@ msgstr ""
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr ""
@ -11999,7 +12015,7 @@ msgstr ""
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr ""
@ -12015,7 +12031,7 @@ msgstr ""
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr ""
@ -12023,11 +12039,11 @@ msgstr ""
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr ""
@ -12660,29 +12676,29 @@ msgstr ""
msgid "Add Group"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: fi\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -56,7 +56,7 @@ msgstr ""
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr ""
@ -163,10 +163,10 @@ msgstr ""
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr ""
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr ""
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr ""
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr ""
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr ""
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr ""
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr ""
@ -273,7 +274,7 @@ msgstr ""
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr ""
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr ""
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr ""
@ -1982,7 +1983,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr ""
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr ""
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr ""
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr ""
@ -3131,7 +3140,7 @@ msgstr ""
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr ""
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr ""
@ -3172,7 +3181,7 @@ msgstr ""
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr ""
@ -3198,8 +3207,8 @@ msgstr ""
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr ""
@ -3364,7 +3373,7 @@ msgstr ""
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr ""
@ -4823,7 +4832,7 @@ msgstr ""
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr ""
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr ""
@ -7698,7 +7706,7 @@ msgstr ""
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr ""
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr ""
@ -8018,48 +8026,48 @@ msgstr ""
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr ""
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr ""
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr ""
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr ""
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr ""
@ -11402,16 +11410,16 @@ msgstr ""
msgid "Add Part Category"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr ""
@ -11419,6 +11427,14 @@ msgstr ""
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr ""
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr ""
@ -11847,7 +11863,7 @@ msgstr ""
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr ""
@ -11869,11 +11885,11 @@ msgstr ""
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr ""
@ -11881,15 +11897,15 @@ msgstr ""
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr ""
@ -11897,44 +11913,44 @@ msgstr ""
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr ""
@ -11942,20 +11958,20 @@ msgstr ""
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr ""
@ -11963,31 +11979,31 @@ msgstr ""
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr ""
@ -11999,7 +12015,7 @@ msgstr ""
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr ""
@ -12015,7 +12031,7 @@ msgstr ""
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr ""
@ -12023,11 +12039,11 @@ msgstr ""
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr ""
@ -12660,29 +12676,29 @@ msgstr ""
msgid "Add Group"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr ""
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr ""

View File

@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-06-14 02:16\n"
"PO-Revision-Date: 2026-06-17 22:14\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@ -56,7 +56,7 @@ msgstr "Éditer"
#: src/components/items/RoleTable.tsx:155
#: src/hooks/UseForm.tsx:174
#: src/pages/Notifications.tsx:109
#: src/tables/plugin/PluginListTable.tsx:247
#: src/tables/plugin/PluginListTable.tsx:249
msgid "Delete"
msgstr "Supprimer"
@ -163,10 +163,10 @@ msgstr "Pièce"
#: src/components/nav/NavigationDrawer.tsx:70
#: src/defaults/links.tsx:39
#: src/pages/Index/Settings/SystemSettings.tsx:218
#: src/pages/part/CategoryDetail.tsx:137
#: src/pages/part/CategoryDetail.tsx:284
#: src/pages/part/CategoryDetail.tsx:339
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:138
#: src/pages/part/CategoryDetail.tsx:285
#: src/pages/part/CategoryDetail.tsx:345
#: src/pages/part/CategoryDetail.tsx:387
#: src/pages/part/PartDetail.tsx:893
msgid "Parts"
msgstr "Composants"
@ -194,11 +194,12 @@ msgid "Parameters"
msgstr "Paramètres"
#: lib/enums/ModelInformation.tsx:46
#: src/tables/part/PartCategoryTemplateTable.tsx:87
#: src/tables/part/PartCategoryTemplateTable.tsx:96
msgid "Parameter Template"
msgstr "Modèle de paramètre"
#: lib/enums/ModelInformation.tsx:47
#: src/pages/part/CategoryDetail.tsx:334
msgid "Parameter Templates"
msgstr ""
@ -241,15 +242,15 @@ msgid "Manufacturer Parts"
msgstr "Pièces du fabricant"
#: lib/enums/ModelInformation.tsx:80
#: src/pages/part/CategoryDetail.tsx:381
#: src/pages/part/CategoryDetail.tsx:387
#: src/tables/Filter.tsx:496
msgid "Part Category"
msgstr "Catégorie de composant"
#: lib/enums/ModelInformation.tsx:81
#: lib/enums/Roles.tsx:39
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:372
#: src/pages/part/CategoryDetail.tsx:279
#: src/pages/part/CategoryDetail.tsx:378
#: src/pages/part/PartDetail.tsx:1154
msgid "Part Categories"
msgstr "Catégories de composants"
@ -273,7 +274,7 @@ msgstr "Article en stock"
#: lib/enums/ModelInformation.tsx:90
#: lib/enums/Roles.tsx:49
#: src/pages/company/CompanyDetail.tsx:217
#: src/pages/part/CategoryDetail.tsx:313
#: src/pages/part/CategoryDetail.tsx:314
#: src/pages/part/PartStockHistoryDetail.tsx:117
#: src/pages/stock/LocationDetail.tsx:156
#: src/pages/stock/LocationDetail.tsx:235
@ -538,7 +539,7 @@ msgstr "Propriétaires"
#: src/tables/settings/ApiTokenTable.tsx:127
#: src/tables/settings/BarcodeScanHistoryTable.tsx:79
#: src/tables/settings/ExportSessionTable.tsx:44
#: src/tables/settings/ImportSessionTable.tsx:78
#: src/tables/settings/ImportSessionTable.tsx:82
#: src/tables/stock/StockTrackingTable.tsx:237
#: src/tables/stock/StockTrackingTable.tsx:285
msgid "User"
@ -640,7 +641,7 @@ msgstr ""
#: src/components/forms/fields/ApiFormField.tsx:259
#: src/components/forms/fields/TableField.tsx:45
#: src/components/importer/ImportDataSelector.tsx:215
#: src/components/importer/ImporterColumnSelector.tsx:278
#: src/components/importer/ImporterColumnSelector.tsx:330
#: src/components/importer/ImporterDrawer.tsx:91
#: src/components/modals/LicenseModal.tsx:85
#: src/components/nav/NavigationTree.tsx:211
@ -1794,7 +1795,7 @@ msgstr "Il existe des erreurs pour un ou plusieurs champs du formulaire"
#: src/components/forms/ApiForm.tsx:751
#: src/hooks/UseForm.tsx:143
#: src/tables/plugin/PluginListTable.tsx:210
#: src/tables/plugin/PluginListTable.tsx:212
msgid "Update"
msgstr "Mise à jour"
@ -1982,7 +1983,7 @@ msgstr "Serveur"
#: src/components/forms/InstanceOptions.tsx:125
#: src/components/plugins/PluginDrawer.tsx:68
#: src/pages/Index/Settings/AdminCenter/UnitManagementPanel.tsx:19
#: src/pages/part/CategoryDetail.tsx:93
#: src/pages/part/CategoryDetail.tsx:94
#: src/pages/part/PartDetail.tsx:305
#: src/pages/stock/LocationDetail.tsx:117
#: src/tables/machine/MachineTypeTable.tsx:67
@ -2059,7 +2060,7 @@ msgstr "Serveur"
#: src/components/forms/InstanceOptions.tsx:131
#: src/components/plugins/PluginDrawer.tsx:88
#: src/tables/plugin/PluginListTable.tsx:127
#: src/tables/plugin/PluginListTable.tsx:129
msgid "Version"
msgstr "Version"
@ -2243,7 +2244,7 @@ msgid "Processing Data"
msgstr "Traitement des données"
#: src/components/importer/ImporterColumnSelector.tsx:56
#: src/components/importer/ImporterColumnSelector.tsx:247
#: src/components/importer/ImporterColumnSelector.tsx:299
#: src/components/items/ErrorItem.tsx:12
#: src/functions/api.tsx:60
#: src/functions/auth.tsx:401
@ -2266,31 +2267,39 @@ msgstr "Sélectionnez la colonne, ou laissez vide pour ignorer ce champ."
#~ msgid "Imported Column Name"
#~ msgstr "Imported Column Name"
#: src/components/importer/ImporterColumnSelector.tsx:253
#: src/components/importer/ImporterColumnSelector.tsx:202
msgid "Auto"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:305
msgid "Ignore this field"
msgstr "Ignorer ce champ"
#: src/components/importer/ImporterColumnSelector.tsx:267
#: src/components/importer/ImporterColumnSelector.tsx:319
msgid "Mapping data columns to database fields"
msgstr "Mappage des colonnes de données aux champs de la base de données"
#: src/components/importer/ImporterColumnSelector.tsx:272
#: src/components/importer/ImporterColumnSelector.tsx:324
msgid "Accept Column Mapping"
msgstr "Accepter le mappage des colonnes"
#: src/components/importer/ImporterColumnSelector.tsx:285
#: src/components/importer/ImporterColumnSelector.tsx:337
msgid "Database Field"
msgstr "Champ de base de données"
#: src/components/importer/ImporterColumnSelector.tsx:286
#: src/components/importer/ImporterColumnSelector.tsx:338
msgid "Field Description"
msgstr "Description du champ"
#: src/components/importer/ImporterColumnSelector.tsx:287
#: src/components/importer/ImporterColumnSelector.tsx:339
msgid "Imported Column"
msgstr "Colonne importée"
#: src/components/importer/ImporterColumnSelector.tsx:288
#: src/components/importer/ImporterColumnSelector.tsx:340
msgid "Lookup Field"
msgstr ""
#: src/components/importer/ImporterColumnSelector.tsx:341
msgid "Default Value"
msgstr "Valeur par Défaut"
@ -3131,7 +3140,7 @@ msgstr "Informations sur le plugin"
#: src/pages/company/ManufacturerPartDetail.tsx:94
#: src/pages/company/ManufacturerPartDetail.tsx:121
#: src/pages/company/SupplierPartDetail.tsx:150
#: src/pages/part/CategoryDetail.tsx:113
#: src/pages/part/CategoryDetail.tsx:114
#: src/pages/part/PartDetail.tsx:319
#: src/pages/purchasing/PurchaseOrderDetail.tsx:166
#: src/pages/sales/ReturnOrderDetail.tsx:132
@ -3142,7 +3151,7 @@ msgstr "Informations sur le plugin"
#: src/tables/build/BuildAllocatedStockTable.tsx:91
#: src/tables/machine/MachineTypeTable.tsx:159
#: src/tables/machine/MachineTypeTable.tsx:255
#: src/tables/plugin/PluginListTable.tsx:110
#: src/tables/plugin/PluginListTable.tsx:112
msgid "Description"
msgstr "Description"
@ -3172,7 +3181,7 @@ msgstr "Date"
#: src/tables/part/PartTableFilters.tsx:13
#: src/tables/part/PartVariantTable.tsx:15
#: src/tables/plugin/PluginListTable.tsx:96
#: src/tables/plugin/PluginListTable.tsx:420
#: src/tables/plugin/PluginListTable.tsx:422
#: src/tables/purchasing/SupplierPartTable.tsx:139
#: src/tables/purchasing/SupplierPartTable.tsx:254
#: src/tables/settings/ApiTokenTable.tsx:63
@ -3183,7 +3192,7 @@ msgstr "Actif"
#: src/components/plugins/PluginDrawer.tsx:99
#: src/pages/company/CompanyDetail.tsx:103
#: src/tables/plugin/PluginListTable.tsx:140
#: src/tables/plugin/PluginListTable.tsx:142
msgid "Website"
msgstr "Site web"
@ -3198,8 +3207,8 @@ msgstr "Chemin d'installation"
#: src/components/plugins/PluginDrawer.tsx:124
#: src/tables/machine/MachineTypeTable.tsx:182
#: src/tables/machine/MachineTypeTable.tsx:291
#: src/tables/plugin/PluginListTable.tsx:101
#: src/tables/plugin/PluginListTable.tsx:425
#: src/tables/plugin/PluginListTable.tsx:102
#: src/tables/plugin/PluginListTable.tsx:427
msgid "Builtin"
msgstr "Intégré"
@ -3364,7 +3373,7 @@ msgstr "Détails"
#: src/tables/ColumnRenderers.tsx:414
#: src/tables/ColumnRenderers.tsx:423
#: src/tables/notifications/NotificationTable.tsx:32
#: src/tables/part/PartCategoryTemplateTable.tsx:78
#: src/tables/part/PartCategoryTemplateTable.tsx:87
msgid "Category"
msgstr "Catégorie"
@ -4823,7 +4832,7 @@ msgstr "Quantité à allouer"
#: src/tables/sales/ReturnOrderLineItemTable.tsx:175
#: src/tables/settings/CustomStateTable.tsx:79
#: src/tables/settings/EmailTable.tsx:95
#: src/tables/settings/ImportSessionTable.tsx:118
#: src/tables/settings/ImportSessionTable.tsx:129
#: src/tables/stock/StockItemTable.tsx:203
#: src/tables/stock/StockTrackingTable.tsx:83
msgid "Status"
@ -4995,7 +5004,7 @@ msgstr ""
#: src/forms/PartForms.tsx:110
#: src/forms/PartForms.tsx:244
#: src/pages/part/CategoryDetail.tsx:129
#: src/pages/part/CategoryDetail.tsx:130
#: src/pages/part/PartDetail.tsx:536
#: src/tables/part/PartCategoryTable.tsx:92
#: src/tables/part/PartTableFilters.tsx:143
@ -6999,7 +7008,6 @@ msgstr "Unités personnalisées"
#~ msgstr "Part Parameters"
#: src/pages/Index/Settings/AdminCenter/Index.tsx:207
#: src/pages/part/CategoryDetail.tsx:328
msgid "Category Parameters"
msgstr "Paramètres de catégorie"
@ -7698,7 +7706,7 @@ msgstr "Annuler la commande"
#~ msgstr "New Build Order"
#: src/pages/build/BuildIndex.tsx:94
#: src/pages/part/CategoryDetail.tsx:291
#: src/pages/part/CategoryDetail.tsx:292
#: src/pages/purchasing/PurchasingIndex.tsx:103
#: src/pages/purchasing/PurchasingIndex.tsx:130
#: src/pages/purchasing/PurchasingIndex.tsx:159
@ -7721,7 +7729,7 @@ msgid "Calendar View"
msgstr "Vue du calendrier"
#: src/pages/build/BuildIndex.tsx:106
#: src/pages/part/CategoryDetail.tsx:305
#: src/pages/part/CategoryDetail.tsx:306
#: src/pages/purchasing/PurchasingIndex.tsx:115
#: src/pages/purchasing/PurchasingIndex.tsx:142
#: src/pages/purchasing/PurchasingIndex.tsx:165
@ -7982,7 +7990,7 @@ msgstr ""
#~ msgid "Basic user"
#~ msgstr "Basic user"
#: src/pages/part/CategoryDetail.tsx:105
#: src/pages/part/CategoryDetail.tsx:106
#: src/pages/stock/LocationDetail.tsx:129
#: src/tables/ColumnRenderers.tsx:336
#: src/tables/settings/ErrorTable.tsx:63
@ -7990,27 +7998,27 @@ msgstr ""
msgid "Path"
msgstr "Chemin d'accès"
#: src/pages/part/CategoryDetail.tsx:121
#: src/pages/part/CategoryDetail.tsx:122
msgid "Parent Category"
msgstr "Catégorie parente"
#: src/pages/part/CategoryDetail.tsx:144
#: src/pages/part/CategoryDetail.tsx:278
#: src/pages/part/CategoryDetail.tsx:145
#: src/pages/part/CategoryDetail.tsx:279
msgid "Subcategories"
msgstr "Sous-catégories"
#: src/pages/part/CategoryDetail.tsx:151
#: src/pages/part/CategoryDetail.tsx:152
#: src/pages/stock/LocationDetail.tsx:169
#: src/tables/part/PartCategoryTable.tsx:87
#: src/tables/stock/StockLocationTable.tsx:43
msgid "Structural"
msgstr "Structure"
#: src/pages/part/CategoryDetail.tsx:157
#: src/pages/part/CategoryDetail.tsx:158
msgid "Parent default location"
msgstr "Emplacement par défaut du parent"
#: src/pages/part/CategoryDetail.tsx:164
#: src/pages/part/CategoryDetail.tsx:165
msgid "Default location"
msgstr "Emplacement par défaut"
@ -8018,48 +8026,48 @@ msgstr "Emplacement par défaut"
#~ msgid "Top level part category"
#~ msgstr "Top level part category"
#: src/pages/part/CategoryDetail.tsx:181
#: src/pages/part/CategoryDetail.tsx:249
#: src/pages/part/CategoryDetail.tsx:182
#: src/pages/part/CategoryDetail.tsx:250
#: src/tables/part/PartCategoryTable.tsx:121
msgid "Edit Part Category"
msgstr "Modifier la catégorie"
#: src/pages/part/CategoryDetail.tsx:190
#: src/pages/part/CategoryDetail.tsx:191
msgid "Move items to parent category"
msgstr "Déplacer les articles dans la catégorie parent"
#: src/pages/part/CategoryDetail.tsx:194
#: src/pages/part/CategoryDetail.tsx:195
#: src/pages/stock/LocationDetail.tsx:316
msgid "Delete items"
msgstr "Supprimer lélément"
#: src/pages/part/CategoryDetail.tsx:202
#: src/pages/part/CategoryDetail.tsx:254
#: src/pages/part/CategoryDetail.tsx:203
#: src/pages/part/CategoryDetail.tsx:255
msgid "Delete Part Category"
msgstr "Supprimer la catégorie"
#: src/pages/part/CategoryDetail.tsx:205
#: src/pages/part/CategoryDetail.tsx:206
msgid "Parts Action"
msgstr "Action sur les pièces"
#: src/pages/part/CategoryDetail.tsx:206
#: src/pages/part/CategoryDetail.tsx:207
msgid "Action for parts in this category"
msgstr "Action pour les pièces de cette catégorie"
#: src/pages/part/CategoryDetail.tsx:212
#: src/pages/part/CategoryDetail.tsx:213
msgid "Child Categories Action"
msgstr "Action sur les catégories enfants"
#: src/pages/part/CategoryDetail.tsx:213
#: src/pages/part/CategoryDetail.tsx:214
msgid "Action for child categories in this category"
msgstr "Action pour les sous-catégories de cette catégorie"
#: src/pages/part/CategoryDetail.tsx:245
#: src/pages/part/CategoryDetail.tsx:246
#: src/tables/part/PartCategoryTable.tsx:142
msgid "Category Actions"
msgstr "Paramètres de Catégorie"
#: src/pages/part/CategoryDetail.tsx:271
#: src/pages/part/CategoryDetail.tsx:272
msgid "Category Details"
msgstr "Détails de la catégorie"
@ -10030,7 +10038,7 @@ msgid "Are you sure you want to delete the selected items?"
msgstr "Êtes-vous sûr de vouloir supprimer les éléments sélectionnés ?"
#: src/tables/InvenTreeTableHeader.tsx:113
#: src/tables/plugin/PluginListTable.tsx:320
#: src/tables/plugin/PluginListTable.tsx:322
msgid "This action cannot be undone"
msgstr "Cette action ne peut pas être annulée"
@ -11065,7 +11073,7 @@ msgid "Show enabled templates"
msgstr ""
#: src/tables/general/ParameterTemplateTable.tsx:148
#: src/tables/settings/ImportSessionTable.tsx:112
#: src/tables/settings/ImportSessionTable.tsx:123
#: src/tables/settings/TemplateTable.tsx:414
msgid "Model Type"
msgstr "Type de modèle"
@ -11402,16 +11410,16 @@ msgstr "Définir la catégorie parentale pour les éléments sélectionnés"
msgid "Add Part Category"
msgstr "Ajouter une catégorie de pièces"
#: src/tables/part/PartCategoryTemplateTable.tsx:49
#: src/tables/part/PartCategoryTemplateTable.tsx:143
#: src/tables/part/PartCategoryTemplateTable.tsx:56
#: src/tables/part/PartCategoryTemplateTable.tsx:152
msgid "Add Category Parameter"
msgstr "Ajouter un paramètre de catégorie"
#: src/tables/part/PartCategoryTemplateTable.tsx:57
#: src/tables/part/PartCategoryTemplateTable.tsx:65
msgid "Edit Category Parameter"
msgstr "Modifier les paramètres de la catégorie"
#: src/tables/part/PartCategoryTemplateTable.tsx:65
#: src/tables/part/PartCategoryTemplateTable.tsx:74
msgid "Delete Category Parameter"
msgstr "Supprimer un paramètre de catégorie"
@ -11419,6 +11427,14 @@ msgstr "Supprimer un paramètre de catégorie"
#~ msgid "[{0}]"
#~ msgstr "[{0}]"
#: src/tables/part/PartCategoryTemplateTable.tsx:167
msgid "Part Category Parameters Templates"
msgstr ""
#: src/tables/part/PartCategoryTemplateTable.tsx:170
msgid "Parts which are created within this category will inherit the default values specified here."
msgstr ""
#: src/tables/part/PartParameterTable.tsx:148
#~ msgid "New Part Parameter"
#~ msgstr "New Part Parameter"
@ -11838,8 +11854,8 @@ msgstr "Extension"
#~ msgid "An error occurred while fetching plugin details"
#~ msgstr "An error occurred while fetching plugin details"
#: src/tables/plugin/PluginListTable.tsx:106
#: src/tables/plugin/PluginListTable.tsx:430
#: src/tables/plugin/PluginListTable.tsx:108
#: src/tables/plugin/PluginListTable.tsx:432
msgid "Mandatory"
msgstr "Obligatoire"
@ -11847,7 +11863,7 @@ msgstr "Obligatoire"
#~ msgid "Plugin with id {id} not found"
#~ msgstr "Plugin with id {id} not found"
#: src/tables/plugin/PluginListTable.tsx:120
#: src/tables/plugin/PluginListTable.tsx:122
msgid "Description not available"
msgstr "Description non disponible"
@ -11869,11 +11885,11 @@ msgstr "Description non disponible"
#~ msgid "Reload"
#~ msgstr "Reload"
#: src/tables/plugin/PluginListTable.tsx:159
#: src/tables/plugin/PluginListTable.tsx:161
msgid "Confirm plugin activation"
msgstr "Confirmer l'activation du plugin"
#: src/tables/plugin/PluginListTable.tsx:160
#: src/tables/plugin/PluginListTable.tsx:162
msgid "Confirm plugin deactivation"
msgstr "Confirmer la désactivation du plugin"
@ -11881,15 +11897,15 @@ msgstr "Confirmer la désactivation du plugin"
#~ msgid "Package information"
#~ msgstr "Package information"
#: src/tables/plugin/PluginListTable.tsx:165
#: src/tables/plugin/PluginListTable.tsx:167
msgid "The selected plugin will be activated"
msgstr "Le plugin sélectionné sera activé"
#: src/tables/plugin/PluginListTable.tsx:166
#: src/tables/plugin/PluginListTable.tsx:168
msgid "The selected plugin will be deactivated"
msgstr "Le plugin sélectionné sera désactivé"
#: src/tables/plugin/PluginListTable.tsx:184
#: src/tables/plugin/PluginListTable.tsx:186
msgid "Deactivate"
msgstr "Désactiver"
@ -11897,44 +11913,44 @@ msgstr "Désactiver"
#~ msgid "Plugin settings"
#~ msgstr "Plugin settings"
#: src/tables/plugin/PluginListTable.tsx:198
#: src/tables/plugin/PluginListTable.tsx:200
msgid "Activate"
msgstr "Activer"
#: src/tables/plugin/PluginListTable.tsx:199
#: src/tables/plugin/PluginListTable.tsx:201
msgid "Activate selected plugin"
msgstr "Activer le plugin sélectionné"
#: src/tables/plugin/PluginListTable.tsx:211
#: src/tables/plugin/PluginListTable.tsx:213
msgid "Update selected plugin"
msgstr "Mettre à jour le plugin sélectionné"
#: src/tables/plugin/PluginListTable.tsx:229
#: src/tables/plugin/PluginListTable.tsx:231
#: src/tables/stock/InstalledItemsTable.tsx:98
msgid "Uninstall"
msgstr "Désinstaller"
#: src/tables/plugin/PluginListTable.tsx:230
#: src/tables/plugin/PluginListTable.tsx:232
msgid "Uninstall selected plugin"
msgstr "Désinstaller le plugin sélectionné"
#: src/tables/plugin/PluginListTable.tsx:248
#: src/tables/plugin/PluginListTable.tsx:250
msgid "Delete selected plugin configuration"
msgstr "Supprimer la configuration du plugin sélectionné"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Activate Plugin"
msgstr "Activer le plugin"
#: src/tables/plugin/PluginListTable.tsx:264
#: src/tables/plugin/PluginListTable.tsx:266
msgid "Deactivate Plugin"
msgstr ""
#: src/tables/plugin/PluginListTable.tsx:271
#: src/tables/plugin/PluginListTable.tsx:273
msgid "The plugin was activated"
msgstr "Le plugin a été activé"
#: src/tables/plugin/PluginListTable.tsx:272
#: src/tables/plugin/PluginListTable.tsx:274
msgid "The plugin was deactivated"
msgstr "Le plugin a été désactivé"
@ -11942,20 +11958,20 @@ msgstr "Le plugin a été désactivé"
#~ msgid "Install plugin"
#~ msgstr "Install plugin"
#: src/tables/plugin/PluginListTable.tsx:285
#: src/tables/plugin/PluginListTable.tsx:377
#: src/tables/plugin/PluginListTable.tsx:287
#: src/tables/plugin/PluginListTable.tsx:379
msgid "Install Plugin"
msgstr "Installer le plugin"
#: src/tables/plugin/PluginListTable.tsx:298
#: src/tables/plugin/PluginListTable.tsx:300
msgid "Install"
msgstr "Installer"
#: src/tables/plugin/PluginListTable.tsx:299
#: src/tables/plugin/PluginListTable.tsx:301
msgid "Plugin installed successfully"
msgstr "Plugin installé avec succès"
#: src/tables/plugin/PluginListTable.tsx:304
#: src/tables/plugin/PluginListTable.tsx:306
msgid "Uninstall Plugin"
msgstr "Désinstaller le plugin"
@ -11963,31 +11979,31 @@ msgstr "Désinstaller le plugin"
#~ msgid "This action cannot be undone."
#~ msgstr "This action cannot be undone."
#: src/tables/plugin/PluginListTable.tsx:316
#: src/tables/plugin/PluginListTable.tsx:318
msgid "Confirm plugin uninstall"
msgstr "Confirmer la désinstallation du plugin"
#: src/tables/plugin/PluginListTable.tsx:319
#: src/tables/plugin/PluginListTable.tsx:321
msgid "The selected plugin will be uninstalled."
msgstr "Le plugin sélectionné sera désinstallé."
#: src/tables/plugin/PluginListTable.tsx:324
#: src/tables/plugin/PluginListTable.tsx:326
msgid "Plugin uninstalled successfully"
msgstr "Plugin désinstallé avec succès"
#: src/tables/plugin/PluginListTable.tsx:332
#: src/tables/plugin/PluginListTable.tsx:334
msgid "Delete Plugin"
msgstr "Supprimer le plugin"
#: src/tables/plugin/PluginListTable.tsx:333
#: src/tables/plugin/PluginListTable.tsx:335
msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?"
msgstr "La suppression de cette configuration de plugin supprimera tous les paramètres et données associés. Êtes-vous sûr de vouloir supprimer ce plugin ?"
#: src/tables/plugin/PluginListTable.tsx:346
#: src/tables/plugin/PluginListTable.tsx:348
msgid "Plugins reloaded"
msgstr "Plugins rechargés"
#: src/tables/plugin/PluginListTable.tsx:347
#: src/tables/plugin/PluginListTable.tsx:349
msgid "Plugins were reloaded successfully"
msgstr "Les plugins ont été rechargés avec succès"
@ -11999,7 +12015,7 @@ msgstr "Les plugins ont été rechargés avec succès"
#~ msgid "The following plugin will be deactivated"
#~ msgstr "The following plugin will be deactivated"
#: src/tables/plugin/PluginListTable.tsx:370
#: src/tables/plugin/PluginListTable.tsx:372
msgid "Reload Plugins"
msgstr "Recharger les plugins"
@ -12015,7 +12031,7 @@ msgstr "Recharger les plugins"
#~ msgid "Plugin updated"
#~ msgstr "Plugin updated"
#: src/tables/plugin/PluginListTable.tsx:393
#: src/tables/plugin/PluginListTable.tsx:395
msgid "Plugin Detail"
msgstr "Détail du plugin"
@ -12023,11 +12039,11 @@ msgstr "Détail du plugin"
#~ msgid "Error updating plugin"
#~ msgstr "Error updating plugin"
#: src/tables/plugin/PluginListTable.tsx:435
#: src/tables/plugin/PluginListTable.tsx:437
msgid "Sample"
msgstr "Exemple"
#: src/tables/plugin/PluginListTable.tsx:440
#: src/tables/plugin/PluginListTable.tsx:442
#: src/tables/stock/StockItemTable.tsx:248
msgid "Installed"
msgstr "Installé"
@ -12660,29 +12676,29 @@ msgstr "Modifier le groupe"
msgid "Add Group"
msgstr "Ajouter un groupe"
#: src/tables/settings/ImportSessionTable.tsx:37
#: src/tables/settings/ImportSessionTable.tsx:41
msgid "Delete Import Session"
msgstr "Supprimer la session d'importation"
#: src/tables/settings/ImportSessionTable.tsx:43
#: src/tables/settings/ImportSessionTable.tsx:130
#: src/tables/settings/ImportSessionTable.tsx:47
#: src/tables/settings/ImportSessionTable.tsx:141
msgid "Create Import Session"
msgstr "Créer une session d'importation"
#: src/tables/settings/ImportSessionTable.tsx:73
#: src/tables/settings/ImportSessionTable.tsx:77
msgid "Uploaded"
msgstr "Envoyé"
#: src/tables/settings/ImportSessionTable.tsx:84
#: src/tables/settings/ImportSessionTable.tsx:88
msgid "Imported Rows"
msgstr "Lignes importées"
#: src/tables/settings/ImportSessionTable.tsx:113
#: src/tables/settings/ImportSessionTable.tsx:124
#: src/tables/settings/TemplateTable.tsx:415
msgid "Filter by target model type"
msgstr "Filtrer par type de modèle cible"
#: src/tables/settings/ImportSessionTable.tsx:119
#: src/tables/settings/ImportSessionTable.tsx:130
msgid "Filter by import session status"
msgstr "Filtrer par statut de session d'importation"

Some files were not shown because too many files have changed in this diff Show More