diff --git a/.gitignore b/.gitignore index f55e48a348..6bbfdaf23d 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,8 @@ local_settings.py *.old # Files used for testing +inventree-demo-dataset/ +inventree-data/ dummy_image.* _tmp.csv inventree/label.pdf diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6db47218cb..cd60026f42 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 diff --git a/InvenTree/InvenTree/exceptions.py b/InvenTree/InvenTree/exceptions.py index ce79449c53..780359d88b 100644 --- a/InvenTree/InvenTree/exceptions.py +++ b/InvenTree/InvenTree/exceptions.py @@ -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, diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index c00d5dc5c5..1e282265c5 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -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) diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 6b28d1e6eb..f9cf41deba 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -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' diff --git a/InvenTree/InvenTree/test_middleware.py b/InvenTree/InvenTree/test_middleware.py index 96748b00f1..5f9eb3b9c4 100644 --- a/InvenTree/InvenTree/test_middleware.py +++ b/InvenTree/InvenTree/test_middleware.py @@ -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) diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index fb9fdf1178..b804123c69 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -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 diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po index 0d745954eb..efa5a99a7c 100644 --- a/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/InvenTree/locale/cs/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 99bfc3d8aa..ab1d6dbea9 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -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?" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index 338723df93..56e0ab60fb 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index 7356523811..8874a5b7cb 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 0db346b467..44b5f1eebf 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po index 7356523811..8874a5b7cb 100644 --- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po index 05273be748..c748d50ac0 100644 --- a/InvenTree/locale/fa/LC_MESSAGES/django.po +++ b/InvenTree/locale/fa/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 549983f8b7..2173510909 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index d912ad55df..03ced3b9ad 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po index 0b13b72c2e..a453cf3530 100644 --- a/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/InvenTree/locale/hu/LC_MESSAGES/django.po @@ -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?" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index b5762a84c3..856aa5afa8 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index 9c3f81ff78..6e75e5322e 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index c95ea96f01..02ee0b0c9b 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index 272d462993..c5c3df2cee 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -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 "선택한 이메일 주소를 정말로 제거하시겠습니까?" diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index c4a625b413..2e9d9150d5 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index bd68543887..25cd8d9cf2 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 39be6697da..839274a44d 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -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?" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index 886ad4c666..06ceb8d031 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po index 7ce6e8c33a..17ca3387e9 100644 --- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index 5f5001471f..b5bf64d483 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -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 "Вы действительно хотите удалить выбранный адрес электронной почты?" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index 0a8488e007..9a794f6d0b 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index 7684922191..5a18f1a623 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index 74c78ecc43..2c7428212e 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index 2d7c42f01b..b61d5f1132 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -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 "" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 2f4d0cf88e..255c1ea010 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -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 "" diff --git a/docker-compose.yml b/docker-compose.yml index 1bb2867523..f9bc6f98b5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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 diff --git a/.env b/docker.dev.env similarity index 92% rename from .env rename to docker.dev.env index 586b0daab3..ac91f59769 100644 --- a/.env +++ b/docker.dev.env @@ -16,5 +16,3 @@ INVENTREE_DB_PASSWORD=pgpassword # Enable plugins? INVENTREE_PLUGINS_ENABLED=True - -COMPOSE_PROJECT_NAME=inventree-development diff --git a/tasks.py b/tasks.py index f131847f5c..5f03c2aade 100644 --- a/tasks.py +++ b/tasks.py @@ -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