2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-02-12 17:27:02 +00:00

Merge remote-tracking branch 'inventree/master'

This commit is contained in:
Oliver Walters
2022-07-31 10:13:59 +10:00
35 changed files with 657 additions and 535 deletions

2
.gitignore vendored
View File

@@ -36,6 +36,8 @@ local_settings.py
*.old
# Files used for testing
inventree-demo-dataset/
inventree-data/
dummy_image.*
_tmp.csv
inventree/label.pdf

View File

@@ -1,8 +1,38 @@
Hi there, thank you for your intrest in contributing!
Please read the contribution guidelines below, before submitting your first pull request to the InvenTree codebase.
## Setup
## Quickstart
Please run `invoke setup-dev` in the root directory of your InvenTree code base to set up your development setup before starting to contribute. This will install and set up pre-commit to run some checks before each commit and help reduce the style errors.
The following commands will get you quickly configure and run a development server, complete with a demo dataset to work with:
### Bare Metal
```bash
git clone https://github.com/inventree/InvenTree.git && cd InvenTree
python3 -m venv env && source env/bin/activate
pip install invoke && invoke
pip install invoke && invoke setup-dev --tests
```
### Docker
```bash
git clone https://github.com/inventree/InvenTree.git && cd InvenTree
docker compose run inventree-dev-server invoke setup-test
docker compose up -d
```
Read the [InvenTree setup documentation](https://inventree.readthedocs.io/en/latest/start/intro/) for a complete installation reference guide.
### Setup Devtools
Run the following command to set up all toolsets for development.
```bash
invoke setup-dev
```
*We recommend you run this command before starting to contribute. This will install and set up `pre-commit` to run some checks before each commit and help reduce the style errors.*
## Branches and Versioning

View File

@@ -25,7 +25,13 @@ def log_error(path):
Arguments:
path: The 'path' (most likely a URL) associated with this error (optional)
"""
kind, info, data = sys.exc_info()
# Check if the eror is on the ignore list
if kind in settings.IGNORRED_ERRORS:
return
Error.objects.create(
kind=kind.__name__,
info=info,

View File

@@ -1,6 +1,7 @@
"""Middleware for InvenTree."""
import logging
import sys
from django.conf import settings
from django.contrib.auth.middleware import PersistentRemoteUserMiddleware
@@ -10,6 +11,7 @@ from django.urls import Resolver404, include, re_path, reverse_lazy
from allauth_2fa.middleware import (AllauthTwoFactorMiddleware,
BaseRequire2FAMiddleware)
from error_report.middleware import ExceptionProcessor
from rest_framework.authtoken.models import Token
from common.models import InvenTreeSetting
@@ -145,3 +147,17 @@ class InvenTreeRemoteUserMiddleware(PersistentRemoteUserMiddleware):
return
return super().process_request(request)
class InvenTreeExceptionProcessor(ExceptionProcessor):
"""Custom exception processor that respects blocked errors."""
def process_exception(self, request, exception):
"""Check if kind is ignored before procesing."""
kind, info, data = sys.exc_info()
# Check if the eror is on the ignore list
if kind in settings.IGNORRED_ERRORS:
return
return super().process_exception(request, exception)

View File

@@ -19,6 +19,7 @@ from pathlib import Path
import django.conf.locale
from django.core.files.storage import default_storage
from django.http import Http404
from django.utils.translation import gettext_lazy as _
import moneyed
@@ -292,11 +293,9 @@ MIDDLEWARE = CONFIG.get('middleware', [
'InvenTree.middleware.AuthRequiredMiddleware',
'InvenTree.middleware.Check2FAMiddleware', # Check if the user should be forced to use MFA
'maintenance_mode.middleware.MaintenanceModeMiddleware',
'InvenTree.middleware.InvenTreeExceptionProcessor', # Error reporting
])
# Error reporting middleware
MIDDLEWARE.append('error_report.middleware.ExceptionProcessor')
AUTHENTICATION_BACKENDS = CONFIG.get('authentication_backends', [
'django.contrib.auth.backends.RemoteUserBackend', # proxy login
'django.contrib.auth.backends.ModelBackend',
@@ -321,7 +320,7 @@ INTERNAL_IPS = [
'127.0.0.1',
]
if DOCKER:
if DOCKER: # pragma: no cover
# Internal IP addresses are different when running under docker
hostname, ___, ips = socket.gethostbyname_ex(socket.gethostname())
INTERNAL_IPS = [ip[: ip.rfind(".")] + ".1" for ip in ips] + ["127.0.0.1", "10.0.2.2"]
@@ -372,7 +371,7 @@ TEMPLATES = [
},
]
if DEBUG_TOOLBAR_ENABLED:
if DEBUG_TOOLBAR_ENABLED: # pragma: no cover
# Note that the APP_DIRS value must be set when using debug_toolbar
# But this will kill template loading for plugins
TEMPLATES[0]['APP_DIRS'] = True
@@ -467,6 +466,10 @@ if db_engine in ['sqlite3', 'postgresql', 'mysql']:
db_name = db_config['NAME']
db_host = db_config.get('HOST', "''")
if 'sqlite' in db_engine:
db_name = str(Path(db_name).resolve())
db_config['NAME'] = db_name
logger.info(f"DB_ENGINE: {db_engine}")
logger.info(f"DB_NAME: {db_name}")
logger.info(f"DB_HOST: {db_host}")
@@ -928,6 +931,11 @@ if SENTRY_ENABLED and SENTRY_DSN: # pragma: no cover
for key, val in inventree_tags.items():
sentry_sdk.set_tag(f'inventree_{key}', val)
# In-database error logging
IGNORRED_ERRORS = [
Http404
]
# Maintenance mode
MAINTENANCE_MODE_RETRY_AFTER = 60
MAINTENANCE_MODE_STATE_BACKEND = 'maintenance_mode.backends.DefaultStorageBackend'

View File

@@ -1,7 +1,12 @@
"""Tests for middleware functions."""
from django.conf import settings
from django.http import Http404
from django.urls import reverse
from error_report.models import Error
from InvenTree.exceptions import log_error
from InvenTree.helpers import InvenTreeTestCase
@@ -58,3 +63,35 @@ class MiddlewareTests(InvenTreeTestCase):
# should still fail without token
self.check_path(reverse('settings.js'), 401)
def test_error_exceptions(self):
"""Test that ignored errors are not logged."""
def check(excpected_nbr=0):
# Check that errors are empty
errors = Error.objects.all()
self.assertEqual(len(errors), excpected_nbr)
# Test normal setup
check()
response = self.client.get(reverse('part-detail', kwargs={'pk': 9999}))
self.assertEqual(response.status_code, 404)
check()
# Test manual logging
try:
raise Http404
except Http404:
log_error('testpath')
# Test setup without ignored errors
settings.IGNORRED_ERRORS = []
response = self.client.get(reverse('part-detail', kwargs={'pk': 9999}))
self.assertEqual(response.status_code, 404)
check(1)
# Test manual logging
try:
raise Http404
except Http404:
log_error('testpath')
check(2)

View File

@@ -13,6 +13,7 @@ import math
import os
import uuid
from datetime import datetime, timedelta
from enum import Enum
from secrets import compare_digest
from django.apps import apps
@@ -1805,9 +1806,8 @@ class ColorTheme(models.Model):
return False
class VerificationMethod:
class VerificationMethod(Enum):
"""Class to hold method references."""
NONE = 0
TOKEN = 1
HMAC = 2

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:21\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -698,11 +698,11 @@ msgstr "Hesla se musí shodovat"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Informace o systému"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:21\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -698,11 +698,11 @@ msgstr "Passwörter stimmen nicht überein"
msgid "Wrong password provided"
msgstr "Falsches Passwort angegeben"
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Systeminformationen"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "Über InvenTree"
@@ -7282,17 +7282,17 @@ msgstr "Gerät"
msgid "Last Activity"
msgstr "Letzte Aktivität"
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr "%(time)s vor (diese Sitzung)"
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr "%(time)s vor"
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr "Möchten Sie die ausgewählte E-Mail-Adresse wirklich entfernen?"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr ""
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-26 01:22+0000\n"
"POT-Creation-Date: 2022-07-27 22:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -26,11 +26,11 @@ msgstr ""
msgid "Error details can be found in the admin panel"
msgstr ""
#: InvenTree/fields.py:99
#: InvenTree/fields.py:108
msgid "Enter date"
msgstr ""
#: InvenTree/fields.py:176 build/serializers.py:384
#: InvenTree/fields.py:185 build/serializers.py:384
#: build/templates/build/sidebar.html:21 company/models.py:523
#: company/templates/company/sidebar.html:25 order/models.py:906
#: order/templates/order/po_sidebar.html:11
@@ -90,76 +90,76 @@ msgstr ""
msgid "You must type the same email each time."
msgstr ""
#: InvenTree/helpers.py:135
#: InvenTree/helpers.py:136
msgid "Connection error"
msgstr ""
#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
#: InvenTree/helpers.py:140 InvenTree/helpers.py:145
msgid "Server responded with invalid status code"
msgstr ""
#: InvenTree/helpers.py:141
#: InvenTree/helpers.py:142
msgid "Exception occurred"
msgstr ""
#: InvenTree/helpers.py:149
#: InvenTree/helpers.py:150
msgid "Server responded with invalid Content-Length value"
msgstr ""
#: InvenTree/helpers.py:152
#: InvenTree/helpers.py:153
msgid "Image size is too large"
msgstr ""
#: InvenTree/helpers.py:164
#: InvenTree/helpers.py:165
msgid "Image download exceeded maximum size"
msgstr ""
#: InvenTree/helpers.py:169
#: InvenTree/helpers.py:170
msgid "Remote server returned empty response"
msgstr ""
#: InvenTree/helpers.py:177
#: InvenTree/helpers.py:178
msgid "Supplied URL is not a valid image file"
msgstr ""
#: InvenTree/helpers.py:520
#: InvenTree/helpers.py:521
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
#: InvenTree/helpers.py:528 order/models.py:320 order/models.py:472
msgid "Invalid quantity provided"
msgstr ""
#: InvenTree/helpers.py:530
#: InvenTree/helpers.py:531
msgid "Empty serial number string"
msgstr ""
#: InvenTree/helpers.py:562
#: InvenTree/helpers.py:563
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
#: InvenTree/helpers.py:565
#: InvenTree/helpers.py:566
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
#: InvenTree/helpers.py:593
#: InvenTree/helpers.py:594
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
#: InvenTree/helpers.py:601
#: InvenTree/helpers.py:602
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
#: InvenTree/helpers.py:607
#: InvenTree/helpers.py:608
msgid "No serial numbers found"
msgstr ""
#: InvenTree/helpers.py:611
#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
@@ -247,34 +247,34 @@ msgstr ""
msgid "Filename must not be empty"
msgstr ""
#: InvenTree/models.py:461
#: InvenTree/models.py:447
msgid "Invalid attachment directory"
msgstr ""
#: InvenTree/models.py:471
#: InvenTree/models.py:457
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
#: InvenTree/models.py:474
#: InvenTree/models.py:460
msgid "Filename missing extension"
msgstr ""
#: InvenTree/models.py:481
#: InvenTree/models.py:467
msgid "Attachment with this filename already exists"
msgstr ""
#: InvenTree/models.py:488
#: InvenTree/models.py:474
msgid "Error renaming file"
msgstr ""
#: InvenTree/models.py:522
#: InvenTree/models.py:508
msgid "Invalid choice"
msgstr ""
#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
#: InvenTree/models.py:526 InvenTree/models.py:527 common/models.py:1846
#: company/models.py:358 label/models.py:101 part/models.py:739
#: part/models.py:2371 plugin/models.py:93 report/models.py:151
#: part/models.py:2371 plugin/models.py:93 report/models.py:152
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
@@ -288,14 +288,14 @@ msgstr ""
msgid "Name"
msgstr ""
#: InvenTree/models.py:547 build/models.py:174
#: InvenTree/models.py:533 build/models.py:174
#: build/templates/build/detail.html:24 company/models.py:282
#: company/models.py:516 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:87 label/models.py:108
#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:507 report/models.py:552
#: part/templates/part/part_base.html:167 report/models.py:165
#: report/models.py:507 report/models.py:551
#: report/templates/report/inventree_build_order_base.html:117
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
@@ -311,182 +311,182 @@ msgstr ""
msgid "Description"
msgstr ""
#: InvenTree/models.py:548
#: InvenTree/models.py:534
msgid "Description (optional)"
msgstr ""
#: InvenTree/models.py:556
#: InvenTree/models.py:542
msgid "parent"
msgstr ""
#: InvenTree/models.py:669
#: InvenTree/models.py:655
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:670
#: InvenTree/models.py:656
msgid "An error has been logged by the server."
msgstr ""
#: InvenTree/serializers.py:53 part/models.py:2692
#: InvenTree/serializers.py:55 part/models.py:2692
msgid "Must be a valid number"
msgstr ""
#: InvenTree/serializers.py:254
#: InvenTree/serializers.py:262
msgid "Filename"
msgstr ""
#: InvenTree/serializers.py:289
#: InvenTree/serializers.py:297
msgid "Invalid value"
msgstr ""
#: InvenTree/serializers.py:311
#: InvenTree/serializers.py:319
msgid "Data File"
msgstr ""
#: InvenTree/serializers.py:312
#: InvenTree/serializers.py:320
msgid "Select data file for upload"
msgstr ""
#: InvenTree/serializers.py:333
#: InvenTree/serializers.py:341
msgid "Unsupported file type"
msgstr ""
#: InvenTree/serializers.py:339
#: InvenTree/serializers.py:347
msgid "File is too large"
msgstr ""
#: InvenTree/serializers.py:360
#: InvenTree/serializers.py:368
msgid "No columns found in file"
msgstr ""
#: InvenTree/serializers.py:363
#: InvenTree/serializers.py:371
msgid "No data rows found in file"
msgstr ""
#: InvenTree/serializers.py:486
#: InvenTree/serializers.py:494
msgid "No data rows provided"
msgstr ""
#: InvenTree/serializers.py:489
#: InvenTree/serializers.py:497
msgid "No data columns supplied"
msgstr ""
#: InvenTree/serializers.py:566
#: InvenTree/serializers.py:574
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
#: InvenTree/serializers.py:575
#: InvenTree/serializers.py:583
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
#: InvenTree/serializers.py:594
#: InvenTree/serializers.py:602
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
#: InvenTree/serializers.py:595
#: InvenTree/serializers.py:603
msgid "URL of remote image file"
msgstr ""
#: InvenTree/serializers.py:609
#: InvenTree/serializers.py:617
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:698
#: InvenTree/settings.py:703
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:699
#: InvenTree/settings.py:704
msgid "German"
msgstr ""
#: InvenTree/settings.py:700
#: InvenTree/settings.py:705
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:701
#: InvenTree/settings.py:706
msgid "English"
msgstr ""
#: InvenTree/settings.py:702
#: InvenTree/settings.py:707
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:708
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:709
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:710
msgid "French"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:711
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:712
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:713
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:714
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:715
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:716
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:717
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:718
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:719
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:720
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:721
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:722
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:723
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:724
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:725
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:726
msgid "Chinese"
msgstr ""
@@ -683,19 +683,19 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:519 templates/InvenTree/settings/user.html:22
#: InvenTree/views.py:518 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
#: InvenTree/views.py:531 templates/InvenTree/settings/user.html:19
#: InvenTree/views.py:530 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
#: InvenTree/views.py:553
#: InvenTree/views.py:552
msgid "Password fields must match"
msgstr ""
#: InvenTree/views.py:562
#: InvenTree/views.py:561
msgid "Wrong password provided"
msgstr ""
@@ -1826,7 +1826,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
#: common/models.py:941 part/models.py:2412 report/models.py:157
#: common/models.py:941 part/models.py:2412 report/models.py:158
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:484
msgid "Template"
@@ -2657,31 +2657,31 @@ msgstr ""
msgid "Items have been received against a purchase order"
msgstr ""
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
#: common/views.py:85 order/templates/order/purchase_order_detail.html:23
#: order/views.py:102 part/views.py:112
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: common/views.py:86 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
#: common/views.py:89
#: common/views.py:87
msgid "Match Items"
msgstr ""
#: common/views.py:422
#: common/views.py:420
msgid "Fields matching failed"
msgstr ""
#: common/views.py:483
#: common/views.py:481
msgid "Parts imported"
msgstr ""
#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: common/views.py:509 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
@@ -3429,7 +3429,7 @@ msgstr ""
msgid "Label template file"
msgstr ""
#: label/models.py:123 report/models.py:253
#: label/models.py:123 report/models.py:254
msgid "Enabled"
msgstr ""
@@ -3453,7 +3453,7 @@ msgstr ""
msgid "Label height, specified in mm"
msgstr ""
#: label/models.py:143 report/models.py:246
#: label/models.py:143 report/models.py:247
msgid "Filename Pattern"
msgstr ""
@@ -3466,7 +3466,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
msgstr ""
#: label/models.py:234 label/models.py:274 label/models.py:302
#: report/models.py:279 report/models.py:410 report/models.py:448
#: report/models.py:280 report/models.py:411 report/models.py:449
msgid "Filters"
msgstr ""
@@ -4395,7 +4395,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
#: report/models.py:170 templates/js/translated/part.js:739
#: report/models.py:171 templates/js/translated/part.js:739
msgid "Revision"
msgstr ""
@@ -5699,35 +5699,35 @@ msgstr ""
msgid "A setting with multiple choices"
msgstr ""
#: plugin/serializers.py:73
#: plugin/serializers.py:72
msgid "Source URL"
msgstr ""
#: plugin/serializers.py:74
#: plugin/serializers.py:73
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
#: plugin/serializers.py:79
#: plugin/serializers.py:78
msgid "Package Name"
msgstr ""
#: plugin/serializers.py:80
#: plugin/serializers.py:79
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
#: plugin/serializers.py:83
#: plugin/serializers.py:82
msgid "Confirm plugin installation"
msgstr ""
#: plugin/serializers.py:84
#: plugin/serializers.py:83
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
#: plugin/serializers.py:104
#: plugin/serializers.py:103
msgid "Installation not confirmed"
msgstr ""
#: plugin/serializers.py:106
#: plugin/serializers.py:105
msgid "Either packagename of URL must be provided"
msgstr ""
@@ -5744,63 +5744,63 @@ msgstr ""
msgid "Test report"
msgstr ""
#: report/models.py:152
#: report/models.py:153
msgid "Template name"
msgstr ""
#: report/models.py:158
#: report/models.py:159
msgid "Report template file"
msgstr ""
#: report/models.py:165
#: report/models.py:166
msgid "Report template description"
msgstr ""
#: report/models.py:171
#: report/models.py:172
msgid "Report revision number (auto-increments)"
msgstr ""
#: report/models.py:247
#: report/models.py:248
msgid "Pattern for generating report filenames"
msgstr ""
#: report/models.py:254
#: report/models.py:255
msgid "Report template is enabled"
msgstr ""
#: report/models.py:280
#: report/models.py:281
msgid "StockItem query filters (comma-separated list of key=value pairs)"
msgstr ""
#: report/models.py:288
#: report/models.py:289
msgid "Include Installed Tests"
msgstr ""
#: report/models.py:289
#: report/models.py:290
msgid "Include test results for stock items installed inside assembled item"
msgstr ""
#: report/models.py:336
#: report/models.py:337
msgid "Build Filters"
msgstr ""
#: report/models.py:337
#: report/models.py:338
msgid "Build query filters (comma-separated list of key=value pairs"
msgstr ""
#: report/models.py:376
#: report/models.py:377
msgid "Part Filters"
msgstr ""
#: report/models.py:377
#: report/models.py:378
msgid "Part query filters (comma-separated list of key=value pairs"
msgstr ""
#: report/models.py:411
#: report/models.py:412
msgid "Purchase order query filters"
msgstr ""
#: report/models.py:449
#: report/models.py:450
msgid "Sales order query filters"
msgstr ""
@@ -5816,15 +5816,15 @@ msgstr ""
msgid "Snippet file description"
msgstr ""
#: report/models.py:545
#: report/models.py:544
msgid "Asset"
msgstr ""
#: report/models.py:546
#: report/models.py:545
msgid "Report asset file"
msgstr ""
#: report/models.py:553
#: report/models.py:552
msgid "Asset file description"
msgstr ""
@@ -7283,17 +7283,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr ""
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-26 01:22+0000\n"
"POT-Creation-Date: 2022-07-27 22:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -26,11 +26,11 @@ msgstr ""
msgid "Error details can be found in the admin panel"
msgstr ""
#: InvenTree/fields.py:99
#: InvenTree/fields.py:108
msgid "Enter date"
msgstr ""
#: InvenTree/fields.py:176 build/serializers.py:384
#: InvenTree/fields.py:185 build/serializers.py:384
#: build/templates/build/sidebar.html:21 company/models.py:523
#: company/templates/company/sidebar.html:25 order/models.py:906
#: order/templates/order/po_sidebar.html:11
@@ -90,76 +90,76 @@ msgstr ""
msgid "You must type the same email each time."
msgstr ""
#: InvenTree/helpers.py:135
#: InvenTree/helpers.py:136
msgid "Connection error"
msgstr ""
#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
#: InvenTree/helpers.py:140 InvenTree/helpers.py:145
msgid "Server responded with invalid status code"
msgstr ""
#: InvenTree/helpers.py:141
#: InvenTree/helpers.py:142
msgid "Exception occurred"
msgstr ""
#: InvenTree/helpers.py:149
#: InvenTree/helpers.py:150
msgid "Server responded with invalid Content-Length value"
msgstr ""
#: InvenTree/helpers.py:152
#: InvenTree/helpers.py:153
msgid "Image size is too large"
msgstr ""
#: InvenTree/helpers.py:164
#: InvenTree/helpers.py:165
msgid "Image download exceeded maximum size"
msgstr ""
#: InvenTree/helpers.py:169
#: InvenTree/helpers.py:170
msgid "Remote server returned empty response"
msgstr ""
#: InvenTree/helpers.py:177
#: InvenTree/helpers.py:178
msgid "Supplied URL is not a valid image file"
msgstr ""
#: InvenTree/helpers.py:520
#: InvenTree/helpers.py:521
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
#: InvenTree/helpers.py:528 order/models.py:320 order/models.py:472
msgid "Invalid quantity provided"
msgstr ""
#: InvenTree/helpers.py:530
#: InvenTree/helpers.py:531
msgid "Empty serial number string"
msgstr ""
#: InvenTree/helpers.py:562
#: InvenTree/helpers.py:563
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
#: InvenTree/helpers.py:565
#: InvenTree/helpers.py:566
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
#: InvenTree/helpers.py:593
#: InvenTree/helpers.py:594
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
#: InvenTree/helpers.py:601
#: InvenTree/helpers.py:602
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
#: InvenTree/helpers.py:607
#: InvenTree/helpers.py:608
msgid "No serial numbers found"
msgstr ""
#: InvenTree/helpers.py:611
#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
@@ -247,34 +247,34 @@ msgstr ""
msgid "Filename must not be empty"
msgstr ""
#: InvenTree/models.py:461
#: InvenTree/models.py:447
msgid "Invalid attachment directory"
msgstr ""
#: InvenTree/models.py:471
#: InvenTree/models.py:457
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
#: InvenTree/models.py:474
#: InvenTree/models.py:460
msgid "Filename missing extension"
msgstr ""
#: InvenTree/models.py:481
#: InvenTree/models.py:467
msgid "Attachment with this filename already exists"
msgstr ""
#: InvenTree/models.py:488
#: InvenTree/models.py:474
msgid "Error renaming file"
msgstr ""
#: InvenTree/models.py:522
#: InvenTree/models.py:508
msgid "Invalid choice"
msgstr ""
#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
#: InvenTree/models.py:526 InvenTree/models.py:527 common/models.py:1846
#: company/models.py:358 label/models.py:101 part/models.py:739
#: part/models.py:2371 plugin/models.py:93 report/models.py:151
#: part/models.py:2371 plugin/models.py:93 report/models.py:152
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
@@ -288,14 +288,14 @@ msgstr ""
msgid "Name"
msgstr ""
#: InvenTree/models.py:547 build/models.py:174
#: InvenTree/models.py:533 build/models.py:174
#: build/templates/build/detail.html:24 company/models.py:282
#: company/models.py:516 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:87 label/models.py:108
#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:507 report/models.py:552
#: part/templates/part/part_base.html:167 report/models.py:165
#: report/models.py:507 report/models.py:551
#: report/templates/report/inventree_build_order_base.html:117
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
@@ -311,182 +311,182 @@ msgstr ""
msgid "Description"
msgstr ""
#: InvenTree/models.py:548
#: InvenTree/models.py:534
msgid "Description (optional)"
msgstr ""
#: InvenTree/models.py:556
#: InvenTree/models.py:542
msgid "parent"
msgstr ""
#: InvenTree/models.py:669
#: InvenTree/models.py:655
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:670
#: InvenTree/models.py:656
msgid "An error has been logged by the server."
msgstr ""
#: InvenTree/serializers.py:53 part/models.py:2692
#: InvenTree/serializers.py:55 part/models.py:2692
msgid "Must be a valid number"
msgstr ""
#: InvenTree/serializers.py:254
#: InvenTree/serializers.py:262
msgid "Filename"
msgstr ""
#: InvenTree/serializers.py:289
#: InvenTree/serializers.py:297
msgid "Invalid value"
msgstr ""
#: InvenTree/serializers.py:311
#: InvenTree/serializers.py:319
msgid "Data File"
msgstr ""
#: InvenTree/serializers.py:312
#: InvenTree/serializers.py:320
msgid "Select data file for upload"
msgstr ""
#: InvenTree/serializers.py:333
#: InvenTree/serializers.py:341
msgid "Unsupported file type"
msgstr ""
#: InvenTree/serializers.py:339
#: InvenTree/serializers.py:347
msgid "File is too large"
msgstr ""
#: InvenTree/serializers.py:360
#: InvenTree/serializers.py:368
msgid "No columns found in file"
msgstr ""
#: InvenTree/serializers.py:363
#: InvenTree/serializers.py:371
msgid "No data rows found in file"
msgstr ""
#: InvenTree/serializers.py:486
#: InvenTree/serializers.py:494
msgid "No data rows provided"
msgstr ""
#: InvenTree/serializers.py:489
#: InvenTree/serializers.py:497
msgid "No data columns supplied"
msgstr ""
#: InvenTree/serializers.py:566
#: InvenTree/serializers.py:574
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
#: InvenTree/serializers.py:575
#: InvenTree/serializers.py:583
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
#: InvenTree/serializers.py:594
#: InvenTree/serializers.py:602
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
#: InvenTree/serializers.py:595
#: InvenTree/serializers.py:603
msgid "URL of remote image file"
msgstr ""
#: InvenTree/serializers.py:609
#: InvenTree/serializers.py:617
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:698
#: InvenTree/settings.py:703
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:699
#: InvenTree/settings.py:704
msgid "German"
msgstr ""
#: InvenTree/settings.py:700
#: InvenTree/settings.py:705
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:701
#: InvenTree/settings.py:706
msgid "English"
msgstr ""
#: InvenTree/settings.py:702
#: InvenTree/settings.py:707
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:708
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:709
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:710
msgid "French"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:711
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:712
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:713
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:714
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:715
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:716
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:717
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:718
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:719
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:720
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:721
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:722
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:723
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:724
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:725
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:726
msgid "Chinese"
msgstr ""
@@ -683,19 +683,19 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:519 templates/InvenTree/settings/user.html:22
#: InvenTree/views.py:518 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
#: InvenTree/views.py:531 templates/InvenTree/settings/user.html:19
#: InvenTree/views.py:530 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
#: InvenTree/views.py:553
#: InvenTree/views.py:552
msgid "Password fields must match"
msgstr ""
#: InvenTree/views.py:562
#: InvenTree/views.py:561
msgid "Wrong password provided"
msgstr ""
@@ -1826,7 +1826,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
#: common/models.py:941 part/models.py:2412 report/models.py:157
#: common/models.py:941 part/models.py:2412 report/models.py:158
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:484
msgid "Template"
@@ -2657,31 +2657,31 @@ msgstr ""
msgid "Items have been received against a purchase order"
msgstr ""
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
#: common/views.py:85 order/templates/order/purchase_order_detail.html:23
#: order/views.py:102 part/views.py:112
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: common/views.py:86 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
#: common/views.py:89
#: common/views.py:87
msgid "Match Items"
msgstr ""
#: common/views.py:422
#: common/views.py:420
msgid "Fields matching failed"
msgstr ""
#: common/views.py:483
#: common/views.py:481
msgid "Parts imported"
msgstr ""
#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: common/views.py:509 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
@@ -3429,7 +3429,7 @@ msgstr ""
msgid "Label template file"
msgstr ""
#: label/models.py:123 report/models.py:253
#: label/models.py:123 report/models.py:254
msgid "Enabled"
msgstr ""
@@ -3453,7 +3453,7 @@ msgstr ""
msgid "Label height, specified in mm"
msgstr ""
#: label/models.py:143 report/models.py:246
#: label/models.py:143 report/models.py:247
msgid "Filename Pattern"
msgstr ""
@@ -3466,7 +3466,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
msgstr ""
#: label/models.py:234 label/models.py:274 label/models.py:302
#: report/models.py:279 report/models.py:410 report/models.py:448
#: report/models.py:280 report/models.py:411 report/models.py:449
msgid "Filters"
msgstr ""
@@ -4395,7 +4395,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
#: report/models.py:170 templates/js/translated/part.js:739
#: report/models.py:171 templates/js/translated/part.js:739
msgid "Revision"
msgstr ""
@@ -5699,35 +5699,35 @@ msgstr ""
msgid "A setting with multiple choices"
msgstr ""
#: plugin/serializers.py:73
#: plugin/serializers.py:72
msgid "Source URL"
msgstr ""
#: plugin/serializers.py:74
#: plugin/serializers.py:73
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
#: plugin/serializers.py:79
#: plugin/serializers.py:78
msgid "Package Name"
msgstr ""
#: plugin/serializers.py:80
#: plugin/serializers.py:79
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
#: plugin/serializers.py:83
#: plugin/serializers.py:82
msgid "Confirm plugin installation"
msgstr ""
#: plugin/serializers.py:84
#: plugin/serializers.py:83
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
#: plugin/serializers.py:104
#: plugin/serializers.py:103
msgid "Installation not confirmed"
msgstr ""
#: plugin/serializers.py:106
#: plugin/serializers.py:105
msgid "Either packagename of URL must be provided"
msgstr ""
@@ -5744,63 +5744,63 @@ msgstr ""
msgid "Test report"
msgstr ""
#: report/models.py:152
#: report/models.py:153
msgid "Template name"
msgstr ""
#: report/models.py:158
#: report/models.py:159
msgid "Report template file"
msgstr ""
#: report/models.py:165
#: report/models.py:166
msgid "Report template description"
msgstr ""
#: report/models.py:171
#: report/models.py:172
msgid "Report revision number (auto-increments)"
msgstr ""
#: report/models.py:247
#: report/models.py:248
msgid "Pattern for generating report filenames"
msgstr ""
#: report/models.py:254
#: report/models.py:255
msgid "Report template is enabled"
msgstr ""
#: report/models.py:280
#: report/models.py:281
msgid "StockItem query filters (comma-separated list of key=value pairs)"
msgstr ""
#: report/models.py:288
#: report/models.py:289
msgid "Include Installed Tests"
msgstr ""
#: report/models.py:289
#: report/models.py:290
msgid "Include test results for stock items installed inside assembled item"
msgstr ""
#: report/models.py:336
#: report/models.py:337
msgid "Build Filters"
msgstr ""
#: report/models.py:337
#: report/models.py:338
msgid "Build query filters (comma-separated list of key=value pairs"
msgstr ""
#: report/models.py:376
#: report/models.py:377
msgid "Part Filters"
msgstr ""
#: report/models.py:377
#: report/models.py:378
msgid "Part query filters (comma-separated list of key=value pairs"
msgstr ""
#: report/models.py:411
#: report/models.py:412
msgid "Purchase order query filters"
msgstr ""
#: report/models.py:449
#: report/models.py:450
msgid "Sales order query filters"
msgstr ""
@@ -5816,15 +5816,15 @@ msgstr ""
msgid "Snippet file description"
msgstr ""
#: report/models.py:545
#: report/models.py:544
msgid "Asset"
msgstr ""
#: report/models.py:546
#: report/models.py:545
msgid "Report asset file"
msgstr ""
#: report/models.py:553
#: report/models.py:552
msgid "Asset file description"
msgstr ""
@@ -7283,17 +7283,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr ""
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -698,11 +698,11 @@ msgstr "Les mots de passe doivent correspondre"
msgid "Wrong password provided"
msgstr "Mot de passe incorrect"
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Informations système"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "À propos d'InvenTree"
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -698,11 +698,11 @@ msgstr "הסיסמאות מוכרחות להיות תואמות"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "מידע אודות המערכת"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -698,11 +698,11 @@ msgstr "A jelszavaknak egyeznie kell"
msgid "Wrong password provided"
msgstr "Rossz jelszó lett megadva"
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Rendszerinformáció"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "Verzió információk"
@@ -7283,17 +7283,17 @@ msgstr "Eszköz"
msgid "Last Activity"
msgstr "Legutóbbi tevékenységek"
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr "%(time)s óta (ez a munkamenet)"
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr "%(time)s óta"
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr "Biztosan törölni szeretnéd a kiválasztott email címet?"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr ""
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -698,11 +698,11 @@ msgstr "Le password devono coincidere"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Informazioni sistema"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "Informazioni Su InvenTree"
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "システム情報"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -698,11 +698,11 @@ msgstr "비밀번호가 일치해야 합니다"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "시스템 정보"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr "마지막 활동"
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr "선택한 이메일 주소를 정말로 제거하시겠습니까?"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -698,11 +698,11 @@ msgstr "Wachtwoordvelden komen niet overeen"
msgid "Wrong password provided"
msgstr "Onjuist wachtwoord opgegeven"
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Systeeminformatie"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "Over InvenTree"
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -698,11 +698,11 @@ msgstr "Passordfeltene må samsvare"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Systeminformasjon"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -698,11 +698,11 @@ msgstr "Hasła muszą być zgodne"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Informacja systemowa"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "O InvenTree"
@@ -7282,17 +7282,17 @@ msgstr "Urządzenie"
msgid "Last Activity"
msgstr "Ostatnia aktywność"
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr "%(time)s temu (ta sesja)"
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr "%(time)s temu"
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr "Czy na pewno chcesz usunąć wybrany adres e-mail?"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr ""
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-26 01:22+0000\n"
"POT-Creation-Date: 2022-07-27 22:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -26,11 +26,11 @@ msgstr ""
msgid "Error details can be found in the admin panel"
msgstr ""
#: InvenTree/fields.py:99
#: InvenTree/fields.py:108
msgid "Enter date"
msgstr ""
#: InvenTree/fields.py:176 build/serializers.py:384
#: InvenTree/fields.py:185 build/serializers.py:384
#: build/templates/build/sidebar.html:21 company/models.py:523
#: company/templates/company/sidebar.html:25 order/models.py:906
#: order/templates/order/po_sidebar.html:11
@@ -90,76 +90,76 @@ msgstr ""
msgid "You must type the same email each time."
msgstr ""
#: InvenTree/helpers.py:135
#: InvenTree/helpers.py:136
msgid "Connection error"
msgstr ""
#: InvenTree/helpers.py:139 InvenTree/helpers.py:144
#: InvenTree/helpers.py:140 InvenTree/helpers.py:145
msgid "Server responded with invalid status code"
msgstr ""
#: InvenTree/helpers.py:141
#: InvenTree/helpers.py:142
msgid "Exception occurred"
msgstr ""
#: InvenTree/helpers.py:149
#: InvenTree/helpers.py:150
msgid "Server responded with invalid Content-Length value"
msgstr ""
#: InvenTree/helpers.py:152
#: InvenTree/helpers.py:153
msgid "Image size is too large"
msgstr ""
#: InvenTree/helpers.py:164
#: InvenTree/helpers.py:165
msgid "Image download exceeded maximum size"
msgstr ""
#: InvenTree/helpers.py:169
#: InvenTree/helpers.py:170
msgid "Remote server returned empty response"
msgstr ""
#: InvenTree/helpers.py:177
#: InvenTree/helpers.py:178
msgid "Supplied URL is not a valid image file"
msgstr ""
#: InvenTree/helpers.py:520
#: InvenTree/helpers.py:521
#, python-brace-format
msgid "Duplicate serial: {sn}"
msgstr ""
#: InvenTree/helpers.py:527 order/models.py:320 order/models.py:472
#: InvenTree/helpers.py:528 order/models.py:320 order/models.py:472
msgid "Invalid quantity provided"
msgstr ""
#: InvenTree/helpers.py:530
#: InvenTree/helpers.py:531
msgid "Empty serial number string"
msgstr ""
#: InvenTree/helpers.py:562
#: InvenTree/helpers.py:563
#, python-brace-format
msgid "Invalid group range: {g}"
msgstr ""
#: InvenTree/helpers.py:565
#: InvenTree/helpers.py:566
#, python-brace-format
msgid "Invalid group: {g}"
msgstr ""
#: InvenTree/helpers.py:593
#: InvenTree/helpers.py:594
#, python-brace-format
msgid "Invalid group sequence: {g}"
msgstr ""
#: InvenTree/helpers.py:601
#: InvenTree/helpers.py:602
#, python-brace-format
msgid "Invalid/no group {group}"
msgstr ""
#: InvenTree/helpers.py:607
#: InvenTree/helpers.py:608
msgid "No serial numbers found"
msgstr ""
#: InvenTree/helpers.py:611
#: InvenTree/helpers.py:612
#, python-brace-format
msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
msgstr ""
@@ -247,34 +247,34 @@ msgstr ""
msgid "Filename must not be empty"
msgstr ""
#: InvenTree/models.py:461
#: InvenTree/models.py:447
msgid "Invalid attachment directory"
msgstr ""
#: InvenTree/models.py:471
#: InvenTree/models.py:457
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
#: InvenTree/models.py:474
#: InvenTree/models.py:460
msgid "Filename missing extension"
msgstr ""
#: InvenTree/models.py:481
#: InvenTree/models.py:467
msgid "Attachment with this filename already exists"
msgstr ""
#: InvenTree/models.py:488
#: InvenTree/models.py:474
msgid "Error renaming file"
msgstr ""
#: InvenTree/models.py:522
#: InvenTree/models.py:508
msgid "Invalid choice"
msgstr ""
#: InvenTree/models.py:540 InvenTree/models.py:541 common/models.py:1846
#: InvenTree/models.py:526 InvenTree/models.py:527 common/models.py:1846
#: company/models.py:358 label/models.py:101 part/models.py:739
#: part/models.py:2371 plugin/models.py:93 report/models.py:151
#: part/models.py:2371 plugin/models.py:93 report/models.py:152
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin.html:132
@@ -288,14 +288,14 @@ msgstr ""
msgid "Name"
msgstr ""
#: InvenTree/models.py:547 build/models.py:174
#: InvenTree/models.py:533 build/models.py:174
#: build/templates/build/detail.html:24 company/models.py:282
#: company/models.py:516 company/templates/company/company_base.html:71
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:87 label/models.py:108
#: order/models.py:82 part/models.py:762 part/templates/part/category.html:74
#: part/templates/part/part_base.html:167 report/models.py:164
#: report/models.py:507 report/models.py:552
#: part/templates/part/part_base.html:167 report/models.py:165
#: report/models.py:507 report/models.py:551
#: report/templates/report/inventree_build_order_base.html:117
#: stock/templates/stock/location.html:103
#: templates/InvenTree/settings/plugin_settings.html:33
@@ -311,182 +311,182 @@ msgstr ""
msgid "Description"
msgstr ""
#: InvenTree/models.py:548
#: InvenTree/models.py:534
msgid "Description (optional)"
msgstr ""
#: InvenTree/models.py:556
#: InvenTree/models.py:542
msgid "parent"
msgstr ""
#: InvenTree/models.py:669
#: InvenTree/models.py:655
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:670
#: InvenTree/models.py:656
msgid "An error has been logged by the server."
msgstr ""
#: InvenTree/serializers.py:53 part/models.py:2692
#: InvenTree/serializers.py:55 part/models.py:2692
msgid "Must be a valid number"
msgstr ""
#: InvenTree/serializers.py:254
#: InvenTree/serializers.py:262
msgid "Filename"
msgstr ""
#: InvenTree/serializers.py:289
#: InvenTree/serializers.py:297
msgid "Invalid value"
msgstr ""
#: InvenTree/serializers.py:311
#: InvenTree/serializers.py:319
msgid "Data File"
msgstr ""
#: InvenTree/serializers.py:312
#: InvenTree/serializers.py:320
msgid "Select data file for upload"
msgstr ""
#: InvenTree/serializers.py:333
#: InvenTree/serializers.py:341
msgid "Unsupported file type"
msgstr ""
#: InvenTree/serializers.py:339
#: InvenTree/serializers.py:347
msgid "File is too large"
msgstr ""
#: InvenTree/serializers.py:360
#: InvenTree/serializers.py:368
msgid "No columns found in file"
msgstr ""
#: InvenTree/serializers.py:363
#: InvenTree/serializers.py:371
msgid "No data rows found in file"
msgstr ""
#: InvenTree/serializers.py:486
#: InvenTree/serializers.py:494
msgid "No data rows provided"
msgstr ""
#: InvenTree/serializers.py:489
#: InvenTree/serializers.py:497
msgid "No data columns supplied"
msgstr ""
#: InvenTree/serializers.py:566
#: InvenTree/serializers.py:574
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
#: InvenTree/serializers.py:575
#: InvenTree/serializers.py:583
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
#: InvenTree/serializers.py:594
#: InvenTree/serializers.py:602
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
msgstr ""
#: InvenTree/serializers.py:595
#: InvenTree/serializers.py:603
msgid "URL of remote image file"
msgstr ""
#: InvenTree/serializers.py:609
#: InvenTree/serializers.py:617
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:698
#: InvenTree/settings.py:703
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:699
#: InvenTree/settings.py:704
msgid "German"
msgstr ""
#: InvenTree/settings.py:700
#: InvenTree/settings.py:705
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:701
#: InvenTree/settings.py:706
msgid "English"
msgstr ""
#: InvenTree/settings.py:702
#: InvenTree/settings.py:707
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:708
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:709
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:710
msgid "French"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:711
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:712
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:713
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:714
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:715
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:716
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:717
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:718
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:719
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:720
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:721
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:722
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:723
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:724
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:725
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:726
msgid "Chinese"
msgstr ""
@@ -683,19 +683,19 @@ msgstr ""
msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:519 templates/InvenTree/settings/user.html:22
#: InvenTree/views.py:518 templates/InvenTree/settings/user.html:22
msgid "Edit User Information"
msgstr ""
#: InvenTree/views.py:531 templates/InvenTree/settings/user.html:19
#: InvenTree/views.py:530 templates/InvenTree/settings/user.html:19
msgid "Set Password"
msgstr ""
#: InvenTree/views.py:553
#: InvenTree/views.py:552
msgid "Password fields must match"
msgstr ""
#: InvenTree/views.py:562
#: InvenTree/views.py:561
msgid "Wrong password provided"
msgstr ""
@@ -1826,7 +1826,7 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
#: common/models.py:941 part/models.py:2412 report/models.py:157
#: common/models.py:941 part/models.py:2412 report/models.py:158
#: templates/js/translated/table_filters.js:38
#: templates/js/translated/table_filters.js:484
msgid "Template"
@@ -2657,31 +2657,31 @@ msgstr ""
msgid "Items have been received against a purchase order"
msgstr ""
#: common/views.py:87 order/templates/order/purchase_order_detail.html:23
#: common/views.py:85 order/templates/order/purchase_order_detail.html:23
#: order/views.py:102 part/views.py:112
#: templates/patterns/wizard/upload.html:37
msgid "Upload File"
msgstr ""
#: common/views.py:88 order/views.py:103
#: common/views.py:86 order/views.py:103
#: part/templates/part/import_wizard/ajax_match_fields.html:45
#: part/views.py:113 templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
#: common/views.py:89
#: common/views.py:87
msgid "Match Items"
msgstr ""
#: common/views.py:422
#: common/views.py:420
msgid "Fields matching failed"
msgstr ""
#: common/views.py:483
#: common/views.py:481
msgid "Parts imported"
msgstr ""
#: common/views.py:511 order/templates/order/order_wizard/match_parts.html:19
#: common/views.py:509 order/templates/order/order_wizard/match_parts.html:19
#: part/templates/part/import_wizard/match_references.html:19
#: templates/patterns/wizard/match_fields.html:26
#: templates/patterns/wizard/upload.html:35
@@ -3429,7 +3429,7 @@ msgstr ""
msgid "Label template file"
msgstr ""
#: label/models.py:123 report/models.py:253
#: label/models.py:123 report/models.py:254
msgid "Enabled"
msgstr ""
@@ -3453,7 +3453,7 @@ msgstr ""
msgid "Label height, specified in mm"
msgstr ""
#: label/models.py:143 report/models.py:246
#: label/models.py:143 report/models.py:247
msgid "Filename Pattern"
msgstr ""
@@ -3466,7 +3466,7 @@ msgid "Query filters (comma-separated list of key=value pairs),"
msgstr ""
#: label/models.py:234 label/models.py:274 label/models.py:302
#: report/models.py:279 report/models.py:410 report/models.py:448
#: report/models.py:280 report/models.py:411 report/models.py:449
msgid "Filters"
msgstr ""
@@ -4395,7 +4395,7 @@ msgid "Part revision or version number"
msgstr ""
#: part/models.py:790 part/templates/part/part_base.html:273
#: report/models.py:170 templates/js/translated/part.js:739
#: report/models.py:171 templates/js/translated/part.js:739
msgid "Revision"
msgstr ""
@@ -5699,35 +5699,35 @@ msgstr ""
msgid "A setting with multiple choices"
msgstr ""
#: plugin/serializers.py:73
#: plugin/serializers.py:72
msgid "Source URL"
msgstr ""
#: plugin/serializers.py:74
#: plugin/serializers.py:73
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
#: plugin/serializers.py:79
#: plugin/serializers.py:78
msgid "Package Name"
msgstr ""
#: plugin/serializers.py:80
#: plugin/serializers.py:79
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
#: plugin/serializers.py:83
#: plugin/serializers.py:82
msgid "Confirm plugin installation"
msgstr ""
#: plugin/serializers.py:84
#: plugin/serializers.py:83
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
#: plugin/serializers.py:104
#: plugin/serializers.py:103
msgid "Installation not confirmed"
msgstr ""
#: plugin/serializers.py:106
#: plugin/serializers.py:105
msgid "Either packagename of URL must be provided"
msgstr ""
@@ -5744,63 +5744,63 @@ msgstr ""
msgid "Test report"
msgstr ""
#: report/models.py:152
#: report/models.py:153
msgid "Template name"
msgstr ""
#: report/models.py:158
#: report/models.py:159
msgid "Report template file"
msgstr ""
#: report/models.py:165
#: report/models.py:166
msgid "Report template description"
msgstr ""
#: report/models.py:171
#: report/models.py:172
msgid "Report revision number (auto-increments)"
msgstr ""
#: report/models.py:247
#: report/models.py:248
msgid "Pattern for generating report filenames"
msgstr ""
#: report/models.py:254
#: report/models.py:255
msgid "Report template is enabled"
msgstr ""
#: report/models.py:280
#: report/models.py:281
msgid "StockItem query filters (comma-separated list of key=value pairs)"
msgstr ""
#: report/models.py:288
#: report/models.py:289
msgid "Include Installed Tests"
msgstr ""
#: report/models.py:289
#: report/models.py:290
msgid "Include test results for stock items installed inside assembled item"
msgstr ""
#: report/models.py:336
#: report/models.py:337
msgid "Build Filters"
msgstr ""
#: report/models.py:337
#: report/models.py:338
msgid "Build query filters (comma-separated list of key=value pairs"
msgstr ""
#: report/models.py:376
#: report/models.py:377
msgid "Part Filters"
msgstr ""
#: report/models.py:377
#: report/models.py:378
msgid "Part query filters (comma-separated list of key=value pairs"
msgstr ""
#: report/models.py:411
#: report/models.py:412
msgid "Purchase order query filters"
msgstr ""
#: report/models.py:449
#: report/models.py:450
msgid "Sales order query filters"
msgstr ""
@@ -5816,15 +5816,15 @@ msgstr ""
msgid "Snippet file description"
msgstr ""
#: report/models.py:545
#: report/models.py:544
msgid "Asset"
msgstr ""
#: report/models.py:546
#: report/models.py:545
msgid "Report asset file"
msgstr ""
#: report/models.py:553
#: report/models.py:552
msgid "Asset file description"
msgstr ""
@@ -7283,17 +7283,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -698,11 +698,11 @@ msgstr "Пароли должны совпадать"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Информация о системе"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr "Вы действительно хотите удалить выбранный адрес электронной почты?"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -698,11 +698,11 @@ msgstr "Lösenorden måste matcha"
msgid "Wrong password provided"
msgstr "Felaktigt lösenord angivet"
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Systeminformation"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "Om InvenTree"
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:21\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr ""
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr ""
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -698,11 +698,11 @@ msgstr "Parola alanları eşleşmelidir"
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Sistem Bilgisi"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "InvenTree Hakkında"
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -698,11 +698,11 @@ msgstr ""
msgid "Wrong password provided"
msgstr ""
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "Thông tin hệ thống"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "Giới thiệu"
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-27 00:43+0000\n"
"PO-Revision-Date: 2022-07-27 02:18\n"
"POT-Creation-Date: 2022-07-27 07:45+0000\n"
"PO-Revision-Date: 2022-07-28 02:20\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -698,11 +698,11 @@ msgstr "密码字段必须相匹配。"
msgid "Wrong password provided"
msgstr "密码错误"
#: InvenTree/views.py:750 templates/navbar.html:152
#: InvenTree/views.py:751 templates/navbar.html:152
msgid "System Information"
msgstr "系统信息"
#: InvenTree/views.py:757 templates/navbar.html:163
#: InvenTree/views.py:758 templates/navbar.html:163
msgid "About InvenTree"
msgstr "关于 InventTree"
@@ -7282,17 +7282,17 @@ msgstr ""
msgid "Last Activity"
msgstr ""
#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user.html:258
#, python-format
msgid "%(time)s ago (this session)"
msgstr ""
#: templates/InvenTree/settings/user.html:256
#: templates/InvenTree/settings/user.html:260
#, python-format
msgid "%(time)s ago"
msgstr ""
#: templates/InvenTree/settings/user.html:268
#: templates/InvenTree/settings/user.html:272
msgid "Do you really want to remove the selected email address?"
msgstr ""

View File

@@ -23,12 +23,12 @@ services:
container_name: inventree-dev-db
image: postgres:13
expose:
- ${INVENTREE_DB_PORT:-5432}/tcp
- 5432/tcp
environment:
- PGDATA=/var/lib/postgresql/data/pgdb
- POSTGRES_USER=${INVENTREE_DB_USER:?You must provide the 'INVENTREE_DB_USER' variable in the .env file}
- POSTGRES_PASSWORD=${INVENTREE_DB_PASSWORD:?You must provide the 'INVENTREE_DB_PASSWORD' variable in the .env file}
- POSTGRES_DB=${INVENTREE_DB_NAME:?You must provide the 'INVENTREE_DB_NAME' variable in the .env file}
- POSTGRES_USER=pguser
- POSTGRES_PASSWORD=pgpassword
- POSTGRES_DB=inventree
volumes:
# Map 'data' volume such that postgres database is stored externally
- ./data:/var/lib/postgresql/data
@@ -52,7 +52,7 @@ services:
# Mount local source directory to /home/inventree
- ./:/home/inventree
env_file:
- .env
- docker.dev.env
restart: unless-stopped
# Background worker process handles long-running or periodic tasks
@@ -66,5 +66,5 @@ services:
# Mount local source directory to /home/inventree
- ./:/home/inventree
env_file:
- .env
- docker.dev.env
restart: unless-stopped

View File

@@ -16,5 +16,3 @@ INVENTREE_DB_PASSWORD=pgpassword
# Enable plugins?
INVENTREE_PLUGINS_ENABLED=True
COMPOSE_PROJECT_NAME=inventree-development

View File

@@ -110,8 +110,8 @@ def install(c):
c.run('pip3 install --no-cache-dir --disable-pip-version-check -U -r requirements.txt')
@task
def setup_dev(c):
@task(help={'tests': 'Set up test dataset at the end'})
def setup_dev(c, tests=False):
"""Sets up everything needed for the dev enviroment."""
print("Installing required python packages from 'requirements-dev.txt'")
@@ -119,10 +119,16 @@ def setup_dev(c):
c.run('pip3 install -U -r requirements-dev.txt')
# Install pre-commit hook
print("Installing pre-commit for checks before git commits...")
c.run('pre-commit install')
# Update all the hooks
c.run('pre-commit autoupdate')
print("pre-commit set up is done...")
# Set up test-data if flag is set
if tests:
setup_test(c)
# Setup / maintenance tasks
@@ -512,17 +518,36 @@ def test(c, database=None):
manage(c, 'test', pty=True)
@task(pre=[update])
def setup_test(c):
@task(help={'dev': 'Set up development enviroment at the end'})
def setup_test(c, ignore_update=False, dev=False, path="inventree-demo-dataset"):
"""Setup a testing enviroment."""
if not ignore_update:
update(c)
# Remove old data directory
c.run('rm inventree-data -r')
if os.path.exists(path):
print("Removing old data ...")
c.run(f'rm {path} -r')
# Get test data
c.run('git clone https://github.com/inventree/demo-dataset inventree-data')
print("Cloning demo dataset ...")
c.run(f'git clone https://github.com/inventree/demo-dataset {path} -v')
print("========================================")
# Make sure migrations are done - might have just deleted sqlite database
if not ignore_update:
migrate(c)
# Load data
import_records(c, filename='inventree-data/inventree_data.json', clear=True)
print("Loading data ...")
import_records(c, filename=f'{path}/inventree_data.json', clear=True)
print("Done setting up test enviroment...")
print("========================================")
# Set up development setup if flag is set
if dev:
setup_dev(c)
@task