Merge remote-tracking branch 'inventree/master'

This commit is contained in:
Oliver Walters 2021-04-14 11:08:21 +10:00
commit 4c86593159
22 changed files with 1169 additions and 513 deletions

View File

@ -32,6 +32,7 @@ def health_status(request):
status = { status = {
'django_q_running': InvenTree.status.is_worker_running(), 'django_q_running': InvenTree.status.is_worker_running(),
'email_configured': InvenTree.status.is_email_configured(),
} }
all_healthy = True all_healthy = True

View File

@ -52,6 +52,10 @@ class AuthRequiredMiddleware(object):
if request.path_info.startswith('/static/'): if request.path_info.startswith('/static/'):
authorized = True authorized = True
# Unauthorized users can access the login page
elif request.path_info.startswith('/accounts/'):
authorized = True
elif 'Authorization' in request.headers.keys(): elif 'Authorization' in request.headers.keys():
auth = request.headers['Authorization'].strip() auth = request.headers['Authorization'].strip()

View File

@ -495,6 +495,51 @@ CURRENCIES = CONFIG.get(
# TODO - Allow live web-based backends in the future # TODO - Allow live web-based backends in the future
EXCHANGE_BACKEND = 'InvenTree.exchange.InvenTreeManualExchangeBackend' EXCHANGE_BACKEND = 'InvenTree.exchange.InvenTreeManualExchangeBackend'
# Extract email settings from the config file
email_config = CONFIG.get('email', {})
EMAIL_BACKEND = get_setting(
'django.core.mail.backends.smtp.EmailBackend',
email_config.get('backend', '')
)
# Email backend settings
EMAIL_HOST = get_setting(
'INVENTREE_EMAIL_HOST',
email_config.get('host', '')
)
EMAIL_PORT = get_setting(
'INVENTREE_EMAIL_PORT',
email_config.get('port', 25)
)
EMAIL_HOST_USER = get_setting(
'INVENTREE_EMAIL_USERNAME',
email_config.get('username', ''),
)
EMAIL_HOST_PASSWORD = get_setting(
'INVENTREE_EMAIL_PASSWORD',
email_config.get('password', ''),
)
EMAIL_SUBJECT_PREFIX = '[InvenTree] '
EMAIL_USE_LOCALTIME = False
EMAIL_USE_TLS = get_setting(
'INVENTREE_EMAIL_TLS',
email_config.get('tls', False),
)
EMAIL_USE_SSL = get_setting(
'INVENTREE_EMAIL_SSL',
email_config.get('ssl', False),
)
EMAIL_TIMEOUT = 60
LOCALE_PATHS = ( LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale/'), os.path.join(BASE_DIR, 'locale/'),
) )

View File

@ -11,6 +11,9 @@ from datetime import datetime, timedelta
from django_q.models import Success from django_q.models import Success
from django_q.monitor import Stat from django_q.monitor import Stat
from django.conf import settings
logger = logging.getLogger("inventree") logger = logging.getLogger("inventree")
@ -43,6 +46,30 @@ def is_worker_running(**kwargs):
return results.exists() return results.exists()
def is_email_configured():
"""
Check if email backend is configured.
NOTE: This does not check if the configuration is valid!
"""
configured = True
if not settings.EMAIL_HOST:
logger.warning("EMAIL_HOST is not configured")
configured = False
if not settings.EMAIL_HOST_USER:
logger.warning("EMAIL_HOST_USER is not configured")
configured = False
if not settings.EMAIL_HOST_PASSWORD:
logger.warning("EMAIL_HOST_PASSWORD is not configured")
configured = False
return configured
def check_system_health(**kwargs): def check_system_health(**kwargs):
""" """
Check that the InvenTree system is running OK. Check that the InvenTree system is running OK.
@ -56,6 +83,10 @@ def check_system_health(**kwargs):
result = False result = False
logger.warning(_("Background worker check failed")) logger.warning(_("Background worker check failed"))
if not is_email_configured():
result = False
logger.warning(_("Email backend not configured"))
if not result: if not result:
logger.warning(_("InvenTree system health checks failed")) logger.warning(_("InvenTree system health checks failed"))

View File

@ -51,6 +51,24 @@ def schedule_task(taskname, **kwargs):
pass pass
def offload_task(taskname, *args, **kwargs):
"""
Create an AsyncTask.
This is different to a 'scheduled' task,
in that it only runs once!
"""
try:
from django_q.tasks import AsyncTask
except (AppRegistryNotReady):
logger.warning("Could not offload task - app registry not ready")
return
task = AsyncTask(taskname, *args, **kwargs)
task.run()
def heartbeat(): def heartbeat():
""" """
Simple task which runs at 5 minute intervals, Simple task which runs at 5 minute intervals,
@ -141,3 +159,20 @@ def check_for_updates():
tag, tag,
None None
) )
def send_email(subject, body, recipients, from_email=None):
"""
Send an email with the specified subject and body,
to the specified recipients list.
"""
if type(recipients) == str:
recipients = [recipients]
offload_task(
'django.core.mail.send_mail',
subject, body,
from_email,
recipients,
)

View File

@ -133,7 +133,7 @@ urlpatterns = [
url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^login/?', auth_views.LoginView.as_view(), name='login'), url(r'^login/?', auth_views.LoginView.as_view(), name='login'),
url(r'^logout/', auth_views.LogoutView.as_view(template_name='registration/logout.html'), name='logout'), url(r'^logout/', auth_views.LogoutView.as_view(template_name='registration/logged_out.html'), name='logout'),
url(r'^settings/', include(settings_urls)), url(r'^settings/', include(settings_urls)),
@ -143,6 +143,7 @@ urlpatterns = [
url(r'^admin/error_log/', include('error_report.urls')), url(r'^admin/error_log/', include('error_report.urls')),
url(r'^admin/shell/', include('django_admin_shell.urls')), url(r'^admin/shell/', include('django_admin_shell.urls')),
url(r'^admin/', admin.site.urls, name='inventree-admin'), url(r'^admin/', admin.site.urls, name='inventree-admin'),
url(r'accounts/', include('django.contrib.auth.urls')),
url(r'^index/', IndexView.as_view(), name='index'), url(r'^index/', IndexView.as_view(), name='index'),
url(r'^search/', SearchView.as_view(), name='search'), url(r'^search/', SearchView.as_view(), name='search'),

View File

@ -63,6 +63,31 @@ currencies:
- NZD - NZD
- USD - USD
# Email backend configuration
# Ref: https://docs.djangoproject.com/en/dev/topics/email/
# Available options:
# host: Email server host address
# port: Email port
# username: Account username
# password: Account password
# prefix: Email subject prefix
# tls: Enable TLS support
# ssl: Enable SSL support
# Alternatively, these options can all be set using environment variables,
# with the INVENTREE_EMAIL_ prefix:
# e.g. INVENTREE_EMAIL_HOST / INVENTREE_EMAIL_PORT / INVENTREE_EMAIL_USERNAME
# Refer to the InvenTree documentation for more information
email:
# backend: 'django.core.mail.backends.smtp.EmailBackend'
host: ''
port: 25
username: ''
password: ''
tls: False
ssl: False
# Set debug to False to run in production mode # Set debug to False to run in production mode
# Use the environment variable INVENTREE_DEBUG # Use the environment variable INVENTREE_DEBUG
debug: True debug: True

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-04 20:24+0000\n" "POT-Creation-Date: 2021-04-11 22:07+0000\n"
"PO-Revision-Date: 2021-03-28 17:47+0200\n" "PO-Revision-Date: 2021-03-28 17:47+0200\n"
"Last-Translator: Andreas Kaiser <kaiser.vocote@gmail.com>, Matthias " "Last-Translator: Andreas Kaiser <kaiser.vocote@gmail.com>, Matthias "
"MAIR<matmair@live.de>\n" "MAIR<matmair@live.de>\n"
@ -18,15 +18,15 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.4.2\n" "X-Generator: Poedit 2.4.2\n"
#: InvenTree/api.py:62 #: InvenTree/api.py:64
msgid "API endpoint not found" msgid "API endpoint not found"
msgstr "API-Endpunkt nicht gefunden" msgstr "API-Endpunkt nicht gefunden"
#: InvenTree/api.py:108 #: InvenTree/api.py:110
msgid "No action specified" msgid "No action specified"
msgstr "Keine Aktion angegeben" msgstr "Keine Aktion angegeben"
#: InvenTree/api.py:122 #: InvenTree/api.py:124
msgid "No matching action found" msgid "No matching action found"
msgstr "Keine passende Aktion gefunden" msgstr "Keine passende Aktion gefunden"
@ -126,7 +126,7 @@ msgstr "Datei-Kommentar"
#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1888 #: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1888
#: report/templates/report/inventree_test_report_base.html:91 #: report/templates/report/inventree_test_report_base.html:91
#: templates/js/stock.js:960 #: templates/js/stock.js:964
msgid "User" msgid "User"
msgstr "Benutzer" msgstr "Benutzer"
@ -142,7 +142,7 @@ msgid "Name"
msgstr "Name" msgstr "Name"
#: InvenTree/models.py:114 build/models.py:134 #: InvenTree/models.py:114 build/models.py:134
#: build/templates/build/detail.html:21 company/models.py:361 #: build/templates/build/detail.html:21 company/models.py:365
#: company/templates/company/detail.html:26 #: company/templates/company/detail.html:26
#: company/templates/company/supplier_part_base.html:70 #: company/templates/company/supplier_part_base.html:70
#: company/templates/company/supplier_part_detail.html:31 label/models.py:108 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
@ -157,8 +157,8 @@ msgstr "Name"
#: templates/js/build.js:677 templates/js/build.js:944 #: templates/js/build.js:677 templates/js/build.js:944
#: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/company.js:56 templates/js/order.js:183
#: templates/js/order.js:280 templates/js/part.js:168 templates/js/part.js:251 #: templates/js/order.js:280 templates/js/part.js:168 templates/js/part.js:251
#: templates/js/part.js:370 templates/js/part.js:566 templates/js/stock.js:552 #: templates/js/part.js:370 templates/js/part.js:566 templates/js/stock.js:554
#: templates/js/stock.js:934 #: templates/js/stock.js:938
msgid "Description" msgid "Description"
msgstr "Beschreibung" msgstr "Beschreibung"
@ -170,31 +170,31 @@ msgstr "Beschreibung (optional)"
msgid "parent" msgid "parent"
msgstr "Eltern" msgstr "Eltern"
#: InvenTree/settings.py:430 #: InvenTree/settings.py:480
msgid "English" msgid "English"
msgstr "Englisch" msgstr "Englisch"
#: InvenTree/settings.py:431 #: InvenTree/settings.py:481
msgid "French" msgid "French"
msgstr "Französisch" msgstr "Französisch"
#: InvenTree/settings.py:432 #: InvenTree/settings.py:482
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
#: InvenTree/settings.py:433 #: InvenTree/settings.py:483
msgid "Polish" msgid "Polish"
msgstr "Polnisch" msgstr "Polnisch"
#: InvenTree/settings.py:434 #: InvenTree/settings.py:484
msgid "Turkish" msgid "Turkish"
msgstr "Türkisch" msgstr "Türkisch"
#: InvenTree/status.py:24 #: InvenTree/status.py:57
msgid "Celery worker check failed" msgid "Background worker check failed"
msgstr "Celery Worker Check fehlgeschlagen" msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen"
#: InvenTree/status.py:27 #: InvenTree/status.py:60
msgid "InvenTree system health checks failed" msgid "InvenTree system health checks failed"
msgstr "InvenTree Status-Überprüfung fehlgeschlagen" msgstr "InvenTree Status-Überprüfung fehlgeschlagen"
@ -310,7 +310,7 @@ msgstr "Passwort eingeben"
msgid "Password fields must match" msgid "Password fields must match"
msgstr "Passwörter stimmen nicht überein" msgstr "Passwörter stimmen nicht überein"
#: InvenTree/views.py:887 templates/navbar.html:83 #: InvenTree/views.py:887 templates/navbar.html:85
msgid "System Information" msgid "System Information"
msgstr "Systeminformationen" msgstr "Systeminformationen"
@ -406,7 +406,7 @@ msgstr "Zieldatum für Bauauftrag-Fertigstellung."
#: stock/templates/stock/item_base.html:240 #: stock/templates/stock/item_base.html:240
#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364
#: templates/js/bom.js:205 templates/js/build.js:420 templates/js/build.js:954 #: templates/js/bom.js:205 templates/js/build.js:420 templates/js/build.js:954
#: templates/js/stock.js:952 templates/js/stock.js:1190 #: templates/js/stock.js:956 templates/js/stock.js:1194
msgid "Quantity" msgid "Quantity"
msgstr "Anzahl" msgstr "Anzahl"
@ -452,7 +452,7 @@ msgstr "Bauauftrag als vollständig markieren"
#: stock/templates/stock/stock_adjust.html:17 #: stock/templates/stock/stock_adjust.html:17
#: templates/InvenTree/search.html:244 templates/js/barcode.js:363 #: templates/InvenTree/search.html:244 templates/js/barcode.js:363
#: templates/js/barcode.js:531 templates/js/build.js:434 #: templates/js/barcode.js:531 templates/js/build.js:434
#: templates/js/stock.js:637 #: templates/js/stock.js:641
msgid "Location" msgid "Location"
msgstr "Lagerort" msgstr "Lagerort"
@ -495,7 +495,7 @@ msgstr "Bauauftrag"
#: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12
#: order/templates/order/so_navbar.html:19 #: order/templates/order/so_navbar.html:19
#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:181 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:182
#: templates/InvenTree/search.html:169 #: templates/InvenTree/search.html:169
#: templates/InvenTree/settings/tabs.html:31 users/models.py:41 #: templates/InvenTree/settings/tabs.html:31 users/models.py:41
msgid "Build Orders" msgid "Build Orders"
@ -529,7 +529,7 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: build/models.py:152 build/templates/build/auto_allocate.html:16 #: build/models.py:152 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:86 #: build/templates/build/build_base.html:86
#: build/templates/build/detail.html:26 company/models.py:535 #: build/templates/build/detail.html:26 company/models.py:539
#: order/models.py:637 order/models.py:669 #: order/models.py:637 order/models.py:669
#: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:30
#: order/templates/order/purchase_order_detail.html:156 #: order/templates/order/purchase_order_detail.html:156
@ -548,8 +548,8 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: templates/js/barcode.js:362 templates/js/bom.js:163 #: templates/js/barcode.js:362 templates/js/bom.js:163
#: templates/js/build.js:681 templates/js/build.js:921 #: templates/js/build.js:681 templates/js/build.js:921
#: templates/js/company.js:138 templates/js/part.js:232 #: templates/js/company.js:138 templates/js/part.js:232
#: templates/js/part.js:337 templates/js/stock.js:524 #: templates/js/part.js:337 templates/js/stock.js:523
#: templates/js/stock.js:1262 #: templates/js/stock.js:1266
msgid "Part" msgid "Part"
msgstr "Teil" msgstr "Teil"
@ -667,7 +667,7 @@ msgid "Link to external URL"
msgstr "Link zu einer externen URL" msgstr "Link zu einer externen URL"
#: build/models.py:261 build/templates/build/navbar.html:59 #: build/models.py:261 build/templates/build/navbar.html:59
#: company/models.py:129 company/models.py:368 #: company/models.py:133 company/models.py:372
#: company/templates/company/navbar.html:59 #: company/templates/company/navbar.html:59
#: company/templates/company/navbar.html:62 order/models.py:123 #: company/templates/company/navbar.html:62 order/models.py:123
#: order/models.py:597 order/templates/order/po_navbar.html:29 #: order/models.py:597 order/templates/order/po_navbar.html:29
@ -681,7 +681,7 @@ msgstr "Link zu einer externen URL"
#: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377
#: stock/models.py:496 stock/models.py:1555 stock/models.py:1665 #: stock/models.py:496 stock/models.py:1555 stock/models.py:1665
#: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37
#: templates/js/bom.js:329 templates/js/stock.js:128 templates/js/stock.js:667 #: templates/js/bom.js:329 templates/js/stock.js:128 templates/js/stock.js:671
msgid "Notes" msgid "Notes"
msgstr "Notizen" msgstr "Notizen"
@ -757,7 +757,7 @@ msgstr "Bauauftrag starten um Teile zuzuweisen"
#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/item_base.html:89
#: stock/templates/stock/item_base.html:324 #: stock/templates/stock/item_base.html:324
#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:771 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:771
#: templates/js/stock.js:923 templates/js/stock.js:1181 #: templates/js/stock.js:927 templates/js/stock.js:1185
msgid "Stock Item" msgid "Stock Item"
msgstr "BestandsObjekt" msgstr "BestandsObjekt"
@ -919,7 +919,7 @@ msgstr "Bau-Status"
#: stock/templates/stock/item_base.html:376 templates/InvenTree/search.html:236 #: stock/templates/stock/item_base.html:376 templates/InvenTree/search.html:236
#: templates/js/barcode.js:119 templates/js/build.js:710 #: templates/js/barcode.js:119 templates/js/build.js:710
#: templates/js/order.js:187 templates/js/order.js:285 #: templates/js/order.js:187 templates/js/order.js:285
#: templates/js/stock.js:624 templates/js/stock.js:1198 #: templates/js/stock.js:628 templates/js/stock.js:1202
msgid "Status" msgid "Status"
msgstr "Status" msgstr "Status"
@ -1056,8 +1056,8 @@ msgid "Destination location not specified"
msgstr "Ziel-Lagerort nicht angegeben" msgstr "Ziel-Lagerort nicht angegeben"
#: build/templates/build/detail.html:70 #: build/templates/build/detail.html:70
#: stock/templates/stock/item_base.html:288 templates/js/stock.js:632 #: stock/templates/stock/item_base.html:288 templates/js/stock.js:636
#: templates/js/stock.js:1205 templates/js/table_filters.js:85 #: templates/js/stock.js:1209 templates/js/table_filters.js:85
#: templates/js/table_filters.js:179 #: templates/js/table_filters.js:179
msgid "Batch" msgid "Batch"
msgstr "Los" msgstr "Los"
@ -1323,7 +1323,7 @@ msgstr "InvenTree Instanzname"
msgid "String descriptor for the server instance" msgid "String descriptor for the server instance"
msgstr "Kurze Beschreibung der Instanz" msgstr "Kurze Beschreibung der Instanz"
#: common/models.py:62 company/models.py:96 company/models.py:97 #: common/models.py:62 company/models.py:95 company/models.py:96
msgid "Company name" msgid "Company name"
msgstr "Firmenname" msgstr "Firmenname"
@ -1675,12 +1675,12 @@ msgstr "Angegebener Wert nicht erlaubt"
msgid "Supplied value must be a boolean" msgid "Supplied value must be a boolean"
msgstr "Angegebener Wert muss ein Wahrheitswert sein" msgstr "Angegebener Wert muss ein Wahrheitswert sein"
#: company/forms.py:37 company/models.py:139 #: company/forms.py:37 company/models.py:143
#: company/templates/company/detail.html:40 #: company/templates/company/detail.html:40
msgid "Currency" msgid "Currency"
msgstr "Währung" msgstr "Währung"
#: company/forms.py:38 company/models.py:141 #: company/forms.py:38 company/models.py:145
msgid "Default currency used for this company" msgid "Default currency used for this company"
msgstr "Standard-Währung für diese Firma" msgstr "Standard-Währung für diese Firma"
@ -1700,104 +1700,104 @@ msgstr "Einzelpreis"
msgid "Single quantity price" msgid "Single quantity price"
msgstr "Preis für eine Einheit" msgstr "Preis für eine Einheit"
#: company/models.py:99 #: company/models.py:100
msgid "Company description" msgid "Company description"
msgstr "Firmenbeschreibung" msgstr "Firmenbeschreibung"
#: company/models.py:99 #: company/models.py:101
msgid "Description of the company" msgid "Description of the company"
msgstr "Firmenbeschreibung" msgstr "Firmenbeschreibung"
#: company/models.py:101 company/templates/company/company_base.html:70 #: company/models.py:105 company/templates/company/company_base.html:70
#: company/templates/company/detail.html:31 templates/js/company.js:60 #: company/templates/company/detail.html:31 templates/js/company.js:60
msgid "Website" msgid "Website"
msgstr "Website" msgstr "Website"
#: company/models.py:101 #: company/models.py:105
msgid "Company website URL" msgid "Company website URL"
msgstr "Firmenwebsite Adresse/URL" msgstr "Firmenwebsite Adresse/URL"
#: company/models.py:104 company/templates/company/company_base.html:77 #: company/models.py:108 company/templates/company/company_base.html:77
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
#: company/models.py:105 #: company/models.py:109
msgid "Company address" msgid "Company address"
msgstr "Firmenadresse" msgstr "Firmenadresse"
#: company/models.py:108 #: company/models.py:112
msgid "Phone number" msgid "Phone number"
msgstr "Kontakt-Tel." msgstr "Kontakt-Tel."
#: company/models.py:109 #: company/models.py:113
msgid "Contact phone number" msgid "Contact phone number"
msgstr "Kontakt-Telefon" msgstr "Kontakt-Telefon"
#: company/models.py:112 company/templates/company/company_base.html:91 #: company/models.py:116 company/templates/company/company_base.html:91
msgid "Email" msgid "Email"
msgstr "Email" msgstr "Email"
#: company/models.py:112 #: company/models.py:116
msgid "Contact email address" msgid "Contact email address"
msgstr "Kontakt-Email" msgstr "Kontakt-Email"
#: company/models.py:115 company/templates/company/company_base.html:98 #: company/models.py:119 company/templates/company/company_base.html:98
msgid "Contact" msgid "Contact"
msgstr "Kontakt" msgstr "Kontakt"
#: company/models.py:116 #: company/models.py:120
msgid "Point of contact" msgid "Point of contact"
msgstr "Anlaufstelle" msgstr "Anlaufstelle"
#: company/models.py:118 company/models.py:355 order/models.py:103 #: company/models.py:122 company/models.py:359 order/models.py:103
#: part/models.py:743 #: part/models.py:743
#: report/templates/report/inventree_build_order_base.html:165 #: report/templates/report/inventree_build_order_base.html:165
#: stock/models.py:1557 templates/js/company.js:208 templates/js/part.js:430 #: stock/models.py:1557 templates/js/company.js:208 templates/js/part.js:430
msgid "Link" msgid "Link"
msgstr "Link" msgstr "Link"
#: company/models.py:118 #: company/models.py:122
msgid "Link to external company information" msgid "Link to external company information"
msgstr "Link auf externe Firmeninformation" msgstr "Link auf externe Firmeninformation"
#: company/models.py:126 part/models.py:753 #: company/models.py:130 part/models.py:753
msgid "Image" msgid "Image"
msgstr "Bild" msgstr "Bild"
#: company/models.py:131 #: company/models.py:135
msgid "is customer" msgid "is customer"
msgstr "ist Kunde" msgstr "ist Kunde"
#: company/models.py:131 #: company/models.py:135
msgid "Do you sell items to this company?" msgid "Do you sell items to this company?"
msgstr "Verkaufen Sie Teile an diese Firma?" msgstr "Verkaufen Sie Teile an diese Firma?"
#: company/models.py:133 #: company/models.py:137
msgid "is supplier" msgid "is supplier"
msgstr "ist Zulieferer" msgstr "ist Zulieferer"
#: company/models.py:133 #: company/models.py:137
msgid "Do you purchase items from this company?" msgid "Do you purchase items from this company?"
msgstr "Kaufen Sie Teile von dieser Firma?" msgstr "Kaufen Sie Teile von dieser Firma?"
#: company/models.py:135 #: company/models.py:139
msgid "is manufacturer" msgid "is manufacturer"
msgstr "ist Hersteller" msgstr "ist Hersteller"
#: company/models.py:135 #: company/models.py:139
msgid "Does this company manufacture parts?" msgid "Does this company manufacture parts?"
msgstr "Produziert diese Firma Teile?" msgstr "Produziert diese Firma Teile?"
#: company/models.py:315 stock/models.py:371 #: company/models.py:319 stock/models.py:371
#: stock/templates/stock/item_base.html:220 #: stock/templates/stock/item_base.html:220
msgid "Base Part" msgid "Base Part"
msgstr "Basisteil" msgstr "Basisteil"
#: company/models.py:319 order/views.py:1372 #: company/models.py:323 order/views.py:1372
msgid "Select part" msgid "Select part"
msgstr "Teil auswählen" msgstr "Teil auswählen"
#: company/models.py:325 company/templates/company/detail.html:60 #: company/models.py:329 company/templates/company/detail.html:60
#: company/templates/company/supplier_part_base.html:83 #: company/templates/company/supplier_part_base.html:83
#: company/templates/company/supplier_part_detail.html:25 order/models.py:190 #: company/templates/company/supplier_part_detail.html:25 order/models.py:190
#: order/templates/order/order_base.html:92 #: order/templates/order/order_base.html:92
@ -1807,80 +1807,80 @@ msgstr "Teil auswählen"
msgid "Supplier" msgid "Supplier"
msgstr "Zulieferer" msgstr "Zulieferer"
#: company/models.py:326 #: company/models.py:330
msgid "Select supplier" msgid "Select supplier"
msgstr "Zulieferer auswählen" msgstr "Zulieferer auswählen"
#: company/models.py:331 company/templates/company/supplier_part_base.html:87 #: company/models.py:335 company/templates/company/supplier_part_base.html:87
#: company/templates/company/supplier_part_detail.html:26 #: company/templates/company/supplier_part_detail.html:26
#: order/templates/order/purchase_order_detail.html:174 part/bom.py:171 #: order/templates/order/purchase_order_detail.html:174 part/bom.py:171
msgid "SKU" msgid "SKU"
msgstr "SKU (Lagerbestandseinheit)" msgstr "SKU (Lagerbestandseinheit)"
#: company/models.py:332 #: company/models.py:336
msgid "Supplier stock keeping unit" msgid "Supplier stock keeping unit"
msgstr "Lagerbestandseinheit (SKU) des Zulieferers" msgstr "Lagerbestandseinheit (SKU) des Zulieferers"
#: company/models.py:342 company/templates/company/detail.html:55 #: company/models.py:346 company/templates/company/detail.html:55
#: company/templates/company/supplier_part_base.html:93 #: company/templates/company/supplier_part_base.html:93
#: company/templates/company/supplier_part_detail.html:34 part/bom.py:172 #: company/templates/company/supplier_part_detail.html:34 part/bom.py:172
#: templates/js/company.js:44 templates/js/company.js:188 #: templates/js/company.js:44 templates/js/company.js:188
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Hersteller" msgstr "Hersteller"
#: company/models.py:343 #: company/models.py:347
msgid "Select manufacturer" msgid "Select manufacturer"
msgstr "Hersteller auswählen" msgstr "Hersteller auswählen"
#: company/models.py:349 company/templates/company/supplier_part_base.html:99 #: company/models.py:353 company/templates/company/supplier_part_base.html:99
#: company/templates/company/supplier_part_detail.html:35 #: company/templates/company/supplier_part_detail.html:35
#: order/templates/order/purchase_order_detail.html:183 part/bom.py:173 #: order/templates/order/purchase_order_detail.html:183 part/bom.py:173
#: templates/js/company.js:204 #: templates/js/company.js:204
msgid "MPN" msgid "MPN"
msgstr "MPN" msgstr "MPN"
#: company/models.py:350 #: company/models.py:354
msgid "Manufacturer part number" msgid "Manufacturer part number"
msgstr "Hersteller-Teilenummer" msgstr "Hersteller-Teilenummer"
#: company/models.py:356 #: company/models.py:360
msgid "URL for external supplier part link" msgid "URL for external supplier part link"
msgstr "Teil-URL des Zulieferers" msgstr "Teil-URL des Zulieferers"
#: company/models.py:362 #: company/models.py:366
msgid "Supplier part description" msgid "Supplier part description"
msgstr "Zuliefererbeschreibung des Teils" msgstr "Zuliefererbeschreibung des Teils"
#: company/models.py:367 company/templates/company/supplier_part_base.html:113 #: company/models.py:371 company/templates/company/supplier_part_base.html:113
#: company/templates/company/supplier_part_detail.html:38 part/models.py:2170 #: company/templates/company/supplier_part_detail.html:38 part/models.py:2170
#: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93 #: report/templates/report/inventree_so_report.html:93
msgid "Note" msgid "Note"
msgstr "Notiz" msgstr "Notiz"
#: company/models.py:371 #: company/models.py:375
msgid "base cost" msgid "base cost"
msgstr "Basiskosten" msgstr "Basiskosten"
#: company/models.py:371 #: company/models.py:375
msgid "Minimum charge (e.g. stocking fee)" msgid "Minimum charge (e.g. stocking fee)"
msgstr "Mindestpreis" msgstr "Mindestpreis"
#: company/models.py:373 company/templates/company/supplier_part_base.html:106 #: company/models.py:377 company/templates/company/supplier_part_base.html:106
#: stock/models.py:395 stock/templates/stock/item_base.html:295 #: stock/models.py:395 stock/templates/stock/item_base.html:295
#: templates/js/stock.js:663 #: templates/js/stock.js:667
msgid "Packaging" msgid "Packaging"
msgstr "Verpackungen" msgstr "Verpackungen"
#: company/models.py:373 #: company/models.py:377
msgid "Part packaging" msgid "Part packaging"
msgstr "Teile-Verpackungen" msgstr "Teile-Verpackungen"
#: company/models.py:375 #: company/models.py:379
msgid "multiple" msgid "multiple"
msgstr "Vielfache" msgstr "Vielfache"
#: company/models.py:375 #: company/models.py:379
msgid "Order multiple" msgid "Order multiple"
msgstr "Mehrere bestellen" msgstr "Mehrere bestellen"
@ -1973,7 +1973,7 @@ msgstr "Neues Zulieferer-Teil anlegen"
#: company/templates/company/detail_part.html:21 #: company/templates/company/detail_part.html:21
#: order/templates/order/purchase_order_detail.html:74 #: order/templates/order/purchase_order_detail.html:74
#: part/templates/part/supplier.html:17 templates/js/stock.js:1082 #: part/templates/part/supplier.html:17 templates/js/stock.js:1086
msgid "New Supplier Part" msgid "New Supplier Part"
msgstr "Neues Zulieferer-Teil" msgstr "Neues Zulieferer-Teil"
@ -1997,7 +1997,7 @@ msgstr "Teile löschen"
#: company/templates/company/detail_part.html:66 #: company/templates/company/detail_part.html:66
#: part/templates/part/bom.html:159 part/templates/part/category.html:118 #: part/templates/part/bom.html:159 part/templates/part/category.html:118
#: templates/js/stock.js:1076 #: templates/js/stock.js:1080
msgid "New Part" msgid "New Part"
msgstr "Neues Teil" msgstr "Neues Teil"
@ -2052,14 +2052,14 @@ msgstr "Zulieferer-Teile"
#: part/templates/part/category_partlist.html:10 #: part/templates/part/category_partlist.html:10
#: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113 #: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113
#: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23 #: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23
#: templates/stats.html:35 templates/stats.html:44 users/models.py:38 #: templates/stats.html:48 templates/stats.html:57 users/models.py:38
msgid "Parts" msgid "Parts"
msgstr "Teile" msgstr "Teile"
#: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33 #: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33
#: stock/templates/stock/location.html:100 #: stock/templates/stock/location.html:100
#: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182 #: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182
#: templates/stats.html:48 templates/stats.html:57 users/models.py:40 #: templates/stats.html:61 templates/stats.html:70 users/models.py:40
msgid "Stock Items" msgid "Stock Items"
msgstr "BestandsObjekte" msgstr "BestandsObjekte"
@ -2071,7 +2071,7 @@ msgstr "BestandsObjekte"
#: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180 #: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180
#: templates/InvenTree/search.html:216 #: templates/InvenTree/search.html:216
#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:172 #: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:172
#: templates/js/part.js:397 templates/js/stock.js:559 templates/navbar.html:26 #: templates/js/part.js:397 templates/js/stock.js:563 templates/navbar.html:26
msgid "Stock" msgid "Stock"
msgstr "Lagerbestand" msgstr "Lagerbestand"
@ -2082,7 +2082,7 @@ msgstr "Lagerbestand"
#: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13 #: order/templates/order/sales_orders.html:13
#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95
#: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:226 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:227
#: templates/InvenTree/search.html:330 #: templates/InvenTree/search.html:330
#: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
#: users/models.py:43 #: users/models.py:43
@ -2094,7 +2094,7 @@ msgstr "Aufträge"
#: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13 #: order/templates/order/purchase_orders.html:13
#: part/templates/part/navbar.html:78 part/templates/part/navbar.html:81 #: part/templates/part/navbar.html:78 part/templates/part/navbar.html:81
#: part/templates/part/orders.html:10 templates/InvenTree/index.html:203 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:204
#: templates/InvenTree/search.html:300 #: templates/InvenTree/search.html:300
#: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
#: users/models.py:42 #: users/models.py:42
@ -2287,7 +2287,7 @@ msgstr "Firma gelöscht"
msgid "Edit Supplier Part" msgid "Edit Supplier Part"
msgstr "Zulieferer-Teil bearbeiten" msgstr "Zulieferer-Teil bearbeiten"
#: company/views.py:378 templates/js/stock.js:1083 #: company/views.py:378 templates/js/stock.js:1087
msgid "Create new Supplier Part" msgid "Create new Supplier Part"
msgstr "Neues Zulieferer-Teil anlegen" msgstr "Neues Zulieferer-Teil anlegen"
@ -2740,8 +2740,8 @@ msgstr "Position hinzufügen"
#: order/templates/order/purchase_order_detail.html:45 #: order/templates/order/purchase_order_detail.html:45
#: order/templates/order/purchase_order_detail.html:125 #: order/templates/order/purchase_order_detail.html:125
#: part/templates/part/category.html:197 part/templates/part/category.html:239 #: part/templates/part/category.html:197 part/templates/part/category.html:239
#: stock/templates/stock/location.html:191 templates/js/stock.js:704 #: stock/templates/stock/location.html:191 templates/js/stock.js:708
#: templates/js/stock.js:1088 #: templates/js/stock.js:1092
msgid "New Location" msgid "New Location"
msgstr "Neuer Lagerort" msgstr "Neuer Lagerort"
@ -3274,7 +3274,7 @@ msgstr "Teil-Kategorie"
#: part/models.py:83 part/templates/part/category.html:19 #: part/models.py:83 part/templates/part/category.html:19
#: part/templates/part/category.html:90 part/templates/part/category.html:141 #: part/templates/part/category.html:90 part/templates/part/category.html:141
#: templates/InvenTree/search.html:126 templates/stats.html:39 #: templates/InvenTree/search.html:126 templates/stats.html:52
#: users/models.py:37 #: users/models.py:37
msgid "Part Categories" msgid "Part Categories"
msgstr "Teil-Kategorien" msgstr "Teil-Kategorien"
@ -3718,7 +3718,7 @@ msgid "All selected BOM items will be deleted"
msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht" msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht"
#: part/templates/part/bom.html:160 part/views.py:584 #: part/templates/part/bom.html:160 part/views.py:584
#: templates/js/stock.js:1077 #: templates/js/stock.js:1081
msgid "Create New Part" msgid "Create New Part"
msgstr "Neues Teil anlegen" msgstr "Neues Teil anlegen"
@ -3887,7 +3887,7 @@ msgid "Export Data"
msgstr "Exportieren" msgstr "Exportieren"
#: part/templates/part/category.html:198 #: part/templates/part/category.html:198
#: stock/templates/stock/location.html:192 templates/js/stock.js:705 #: stock/templates/stock/location.html:192 templates/js/stock.js:709
msgid "Create new location" msgid "Create new location"
msgstr "Neuen Lagerort anlegen" msgstr "Neuen Lagerort anlegen"
@ -4133,7 +4133,7 @@ msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: part/templates/part/params.html:44 part/templates/part/related.html:44 #: part/templates/part/params.html:44 part/templates/part/related.html:44
#: part/templates/part/supplier.html:22 stock/views.py:1002 users/models.py:175 #: part/templates/part/supplier.html:22 stock/views.py:1002 users/models.py:182
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
@ -4678,7 +4678,7 @@ msgid "Result"
msgstr "Ergebnis" msgstr "Ergebnis"
#: report/templates/report/inventree_test_report_base.html:92 #: report/templates/report/inventree_test_report_base.html:92
#: templates/js/order.js:195 templates/js/stock.js:905 #: templates/js/order.js:195 templates/js/stock.js:909
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
@ -4701,7 +4701,7 @@ msgid "Moved {n} parts to {loc}"
msgstr "{n} Teile nach {loc} bewegt" msgstr "{n} Teile nach {loc} bewegt"
#: stock/forms.py:114 stock/forms.py:406 stock/models.py:473 #: stock/forms.py:114 stock/forms.py:406 stock/models.py:473
#: stock/templates/stock/item_base.html:349 templates/js/stock.js:652 #: stock/templates/stock/item_base.html:349 templates/js/stock.js:656
msgid "Expiry Date" msgid "Expiry Date"
msgstr "Ablaufdatum" msgstr "Ablaufdatum"
@ -5146,13 +5146,13 @@ msgid "Remove stock"
msgstr "Bestand entfernen" msgstr "Bestand entfernen"
#: stock/templates/stock/item_base.html:169 #: stock/templates/stock/item_base.html:169
msgid "Transfer stock"
msgstr "Bestand verschieben"
#: stock/templates/stock/item_base.html:172
msgid "Serialize stock" msgid "Serialize stock"
msgstr "Lagerbestand serialisieren" msgstr "Lagerbestand serialisieren"
#: stock/templates/stock/item_base.html:173
msgid "Transfer stock"
msgstr "Bestand verschieben"
#: stock/templates/stock/item_base.html:176 #: stock/templates/stock/item_base.html:176
msgid "Assign to customer" msgid "Assign to customer"
msgstr "zu Kunden zuordnen" msgstr "zu Kunden zuordnen"
@ -5161,7 +5161,7 @@ msgstr "zu Kunden zuordnen"
msgid "Return to stock" msgid "Return to stock"
msgstr "zu Bestand zurückgeben" msgstr "zu Bestand zurückgeben"
#: stock/templates/stock/item_base.html:183 templates/js/stock.js:1218 #: stock/templates/stock/item_base.html:183 templates/js/stock.js:1222
msgid "Uninstall stock item" msgid "Uninstall stock item"
msgstr "BestandsObjekt deinstallieren" msgstr "BestandsObjekt deinstallieren"
@ -5214,7 +5214,7 @@ msgstr "Dieses BestandsObjekt lief ab am"
msgid "This StockItem expires on" msgid "This StockItem expires on"
msgstr "Dieses BestandsObjekt läuft ab am" msgstr "Dieses BestandsObjekt läuft ab am"
#: stock/templates/stock/item_base.html:362 templates/js/stock.js:658 #: stock/templates/stock/item_base.html:362 templates/js/stock.js:662
msgid "Last Updated" msgid "Last Updated"
msgstr "Zuletzt aktualisiert" msgstr "Zuletzt aktualisiert"
@ -5333,7 +5333,7 @@ msgid "Stock Details"
msgstr "Objekt-Details" msgstr "Objekt-Details"
#: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263 #: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263
#: templates/stats.html:52 users/models.py:39 #: templates/stats.html:65 users/models.py:39
msgid "Stock Locations" msgid "Stock Locations"
msgstr "Bestand-Lagerorte" msgstr "Bestand-Lagerorte"
@ -5518,7 +5518,7 @@ msgstr "Entfernen"
msgid "Add Stock Items" msgid "Add Stock Items"
msgstr "BestandsObjekte hinzufügen" msgstr "BestandsObjekte hinzufügen"
#: stock/views.py:1001 users/models.py:171 #: stock/views.py:1001 users/models.py:178
msgid "Add" msgid "Add"
msgstr "Hinzufügen" msgstr "Hinzufügen"
@ -5648,35 +5648,35 @@ msgstr "Stücklisten erwarten Kontrolle"
msgid "Recently Updated" msgid "Recently Updated"
msgstr "kürzlich aktualisiert" msgstr "kürzlich aktualisiert"
#: templates/InvenTree/index.html:143 #: templates/InvenTree/index.html:144
msgid "Expired Stock" msgid "Expired Stock"
msgstr "abgelaufener Bestand" msgstr "abgelaufener Bestand"
#: templates/InvenTree/index.html:144 #: templates/InvenTree/index.html:145
msgid "Stale Stock" msgid "Stale Stock"
msgstr "Lagerbestand überfällig" msgstr "Lagerbestand überfällig"
#: templates/InvenTree/index.html:182 #: templates/InvenTree/index.html:183
msgid "Build Orders In Progress" msgid "Build Orders In Progress"
msgstr "laufende Bauaufträge" msgstr "laufende Bauaufträge"
#: templates/InvenTree/index.html:183 #: templates/InvenTree/index.html:184
msgid "Overdue Build Orders" msgid "Overdue Build Orders"
msgstr "überfällige Bauaufträge" msgstr "überfällige Bauaufträge"
#: templates/InvenTree/index.html:204 #: templates/InvenTree/index.html:205
msgid "Outstanding Purchase Orders" msgid "Outstanding Purchase Orders"
msgstr "ausstehende Bestellungen" msgstr "ausstehende Bestellungen"
#: templates/InvenTree/index.html:205 #: templates/InvenTree/index.html:206
msgid "Overdue Purchase Orders" msgid "Overdue Purchase Orders"
msgstr "überfällige Bestellungen" msgstr "überfällige Bestellungen"
#: templates/InvenTree/index.html:227 #: templates/InvenTree/index.html:228
msgid "Outstanding Sales Orders" msgid "Outstanding Sales Orders"
msgstr "ausstehende Aufträge" msgstr "ausstehende Aufträge"
#: templates/InvenTree/index.html:228 #: templates/InvenTree/index.html:229
msgid "Overdue Sales Orders" msgid "Overdue Sales Orders"
msgstr "überfällige Aufträge" msgstr "überfällige Aufträge"
@ -5688,11 +5688,11 @@ msgstr "Suchergebnisse"
msgid "Enter a search query" msgid "Enter a search query"
msgstr "Eine Sucheanfrage eingeben" msgstr "Eine Sucheanfrage eingeben"
#: templates/InvenTree/search.html:252 templates/js/stock.js:301 #: templates/InvenTree/search.html:252 templates/js/stock.js:300
msgid "Shipped to customer" msgid "Shipped to customer"
msgstr "an Kunde versand" msgstr "an Kunde versand"
#: templates/InvenTree/search.html:255 templates/js/stock.js:311 #: templates/InvenTree/search.html:255 templates/js/stock.js:310
msgid "No stock location set" msgid "No stock location set"
msgstr "Kein Lagerort gesetzt" msgstr "Kein Lagerort gesetzt"
@ -5767,7 +5767,7 @@ msgid "Edit setting"
msgstr "Einstellungen ändern" msgstr "Einstellungen ändern"
#: templates/InvenTree/settings/settings.html:7 #: templates/InvenTree/settings/settings.html:7
#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:76 #: templates/InvenTree/settings/settings.html:13 templates/navbar.html:78
msgid "Settings" msgid "Settings"
msgstr "Einstellungen" msgstr "Einstellungen"
@ -5869,30 +5869,38 @@ msgid "InvenTree Version"
msgstr "InvenTree-Version" msgstr "InvenTree-Version"
#: templates/about.html:26 #: templates/about.html:26
msgid "Up to Date"
msgstr "Aktuell"
#: templates/about.html:28
msgid "Update Available"
msgstr "Aktualisierung verfügbar"
#: templates/about.html:34
msgid "Django Version" msgid "Django Version"
msgstr "Django-Version" msgstr "Django-Version"
#: templates/about.html:30 #: templates/about.html:41
msgid "Commit Hash" msgid "Commit Hash"
msgstr "Commit-Hash" msgstr "Commit-Hash"
#: templates/about.html:34 #: templates/about.html:48
msgid "Commit Date" msgid "Commit Date"
msgstr "Commit-Datum" msgstr "Commit-Datum"
#: templates/about.html:38 #: templates/about.html:53
msgid "InvenTree Documentation" msgid "InvenTree Documentation"
msgstr "InvenTree-Dokumentation" msgstr "InvenTree-Dokumentation"
#: templates/about.html:43 #: templates/about.html:58
msgid "View Code on GitHub" msgid "View Code on GitHub"
msgstr "Code auf GitHub ansehen" msgstr "Code auf GitHub ansehen"
#: templates/about.html:48 #: templates/about.html:63
msgid "Get the App" msgid "Get the App"
msgstr "App herunterladen" msgstr "App herunterladen"
#: templates/about.html:53 #: templates/about.html:68
msgid "Submit Bug Report" msgid "Submit Bug Report"
msgstr "Fehlerbericht senden" msgstr "Fehlerbericht senden"
@ -6092,8 +6100,8 @@ msgstr "Bestand bestellen"
msgid "No builds matching query" msgid "No builds matching query"
msgstr "Keine Bauaufträge passen zur Anfrage" msgstr "Keine Bauaufträge passen zur Anfrage"
#: templates/js/build.js:649 templates/js/part.js:323 templates/js/stock.js:512 #: templates/js/build.js:649 templates/js/part.js:323 templates/js/stock.js:511
#: templates/js/stock.js:1250 #: templates/js/stock.js:1254
msgid "Select" msgid "Select"
msgstr "Auswählen" msgstr "Auswählen"
@ -6446,115 +6454,115 @@ msgstr "Keine Testergebnisse gefunden"
msgid "Test Date" msgid "Test Date"
msgstr "Testdatum" msgstr "Testdatum"
#: templates/js/stock.js:293 #: templates/js/stock.js:292
msgid "In production" msgid "In production"
msgstr "In Arbeit" msgstr "In Arbeit"
#: templates/js/stock.js:297 #: templates/js/stock.js:296
msgid "Installed in Stock Item" msgid "Installed in Stock Item"
msgstr "In BestandsObjekt installiert" msgstr "In BestandsObjekt installiert"
#: templates/js/stock.js:305 #: templates/js/stock.js:304
msgid "Assigned to Sales Order" msgid "Assigned to Sales Order"
msgstr "Auftrag zugewiesen" msgstr "Auftrag zugewiesen"
#: templates/js/stock.js:337 #: templates/js/stock.js:336
msgid "No stock items matching query" msgid "No stock items matching query"
msgstr "Keine zur Anfrage passenden BestandsObjekte" msgstr "Keine zur Anfrage passenden BestandsObjekte"
#: templates/js/stock.js:479 #: templates/js/stock.js:478
msgid "Undefined location" msgid "Undefined location"
msgstr "unbekannter Lagerort" msgstr "unbekannter Lagerort"
#: templates/js/stock.js:575 #: templates/js/stock.js:579
msgid "Stock item is in production" msgid "Stock item is in production"
msgstr "BestandsObjekt wird produziert" msgstr "BestandsObjekt wird produziert"
#: templates/js/stock.js:580 #: templates/js/stock.js:584
msgid "Stock item assigned to sales order" msgid "Stock item assigned to sales order"
msgstr "BestandsObjekt wurde Auftrag zugewiesen" msgstr "BestandsObjekt wurde Auftrag zugewiesen"
#: templates/js/stock.js:583 #: templates/js/stock.js:587
msgid "Stock item assigned to customer" msgid "Stock item assigned to customer"
msgstr "BestandsObjekt wurde Kunden zugewiesen" msgstr "BestandsObjekt wurde Kunden zugewiesen"
#: templates/js/stock.js:587 #: templates/js/stock.js:591
msgid "Stock item has expired" msgid "Stock item has expired"
msgstr "BestandsObjekt ist abgelaufen" msgstr "BestandsObjekt ist abgelaufen"
#: templates/js/stock.js:589 #: templates/js/stock.js:593
msgid "Stock item will expire soon" msgid "Stock item will expire soon"
msgstr "BestandsObjekt läuft demnächst ab" msgstr "BestandsObjekt läuft demnächst ab"
#: templates/js/stock.js:593 #: templates/js/stock.js:597
msgid "Stock item has been allocated" msgid "Stock item has been allocated"
msgstr "BestandsObjekt zugewiesen" msgstr "BestandsObjekt zugewiesen"
#: templates/js/stock.js:597 #: templates/js/stock.js:601
msgid "Stock item has been installed in another item" msgid "Stock item has been installed in another item"
msgstr "BestandsObjekt in anderem Element verbaut" msgstr "BestandsObjekt in anderem Element verbaut"
#: templates/js/stock.js:605 #: templates/js/stock.js:609
msgid "Stock item has been rejected" msgid "Stock item has been rejected"
msgstr "BestandsObjekt abgewiesen" msgstr "BestandsObjekt abgewiesen"
#: templates/js/stock.js:609 #: templates/js/stock.js:613
msgid "Stock item is lost" msgid "Stock item is lost"
msgstr "BestandsObjekt verloren" msgstr "BestandsObjekt verloren"
#: templates/js/stock.js:612 #: templates/js/stock.js:616
msgid "Stock item is destroyed" msgid "Stock item is destroyed"
msgstr "BestandsObjekt zerstört" msgstr "BestandsObjekt zerstört"
#: templates/js/stock.js:616 templates/js/table_filters.js:116 #: templates/js/stock.js:620 templates/js/table_filters.js:116
msgid "Depleted" msgid "Depleted"
msgstr "gelöscht" msgstr "gelöscht"
#: templates/js/stock.js:645 #: templates/js/stock.js:649
msgid "Stocktake" msgid "Stocktake"
msgstr "Inventur" msgstr "Inventur"
#: templates/js/stock.js:821 #: templates/js/stock.js:825
msgid "Stock Status" msgid "Stock Status"
msgstr "Bestandsstatus" msgstr "Bestandsstatus"
#: templates/js/stock.js:836 #: templates/js/stock.js:840
msgid "Set Stock Status" msgid "Set Stock Status"
msgstr "Bestandsstatus setzen" msgstr "Bestandsstatus setzen"
#: templates/js/stock.js:850 #: templates/js/stock.js:854
msgid "Select Status Code" msgid "Select Status Code"
msgstr "Status Code setzen" msgstr "Status Code setzen"
#: templates/js/stock.js:851 #: templates/js/stock.js:855
msgid "Status code must be selected" msgid "Status code must be selected"
msgstr "Status Code muss ausgewählt werden" msgstr "Status Code muss ausgewählt werden"
#: templates/js/stock.js:969 #: templates/js/stock.js:973
msgid "No user information" msgid "No user information"
msgstr "Keine Benutzerinformation" msgstr "Keine Benutzerinformation"
#: templates/js/stock.js:979 #: templates/js/stock.js:983
msgid "Edit tracking entry" msgid "Edit tracking entry"
msgstr "Tracking-Eintrag bearbeiten" msgstr "Tracking-Eintrag bearbeiten"
#: templates/js/stock.js:980 #: templates/js/stock.js:984
msgid "Delete tracking entry" msgid "Delete tracking entry"
msgstr "Tracking-Eintrag löschen" msgstr "Tracking-Eintrag löschen"
#: templates/js/stock.js:1089 #: templates/js/stock.js:1093
msgid "Create New Location" msgid "Create New Location"
msgstr "Neuen Lagerort anlegen" msgstr "Neuen Lagerort anlegen"
#: templates/js/stock.js:1188 #: templates/js/stock.js:1192
msgid "Serial" msgid "Serial"
msgstr "Seriennummer" msgstr "Seriennummer"
#: templates/js/stock.js:1281 templates/js/table_filters.js:149 #: templates/js/stock.js:1285 templates/js/table_filters.js:149
msgid "Installed" msgid "Installed"
msgstr "Installiert" msgstr "Installiert"
#: templates/js/stock.js:1306 #: templates/js/stock.js:1310
msgid "Install item" msgid "Install item"
msgstr "Installiere Objekt" msgstr "Installiere Objekt"
@ -6780,23 +6788,19 @@ msgstr "Verkaufen"
msgid "Scan Barcode" msgid "Scan Barcode"
msgstr "Barcode scannen" msgstr "Barcode scannen"
#: templates/navbar.html:63 #: templates/navbar.html:71 users/models.py:36
msgid "InvenTree server issues detected"
msgstr "InvenTree Server Fehler aufgetreten"
#: templates/navbar.html:69 users/models.py:36
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: templates/navbar.html:71 templates/registration/logout.html:5 #: templates/navbar.html:73 templates/registration/logout.html:5
msgid "Logout" msgid "Logout"
msgstr "Ausloggen" msgstr "Ausloggen"
#: templates/navbar.html:73 templates/registration/login.html:89 #: templates/navbar.html:75 templates/registration/login.html:89
msgid "Login" msgid "Login"
msgstr "Einloggen" msgstr "Einloggen"
#: templates/navbar.html:85 #: templates/navbar.html:94
msgid "About InvenTree" msgid "About InvenTree"
msgstr "Über InvenBaum" msgstr "Über InvenBaum"
@ -6836,18 +6840,30 @@ msgstr "Server"
msgid "Instance Name" msgid "Instance Name"
msgstr "Instanzname" msgstr "Instanzname"
#: templates/stats.html:18 #: templates/stats.html:19
msgid "Server status" msgid "Server status"
msgstr "Serverstatus" msgstr "Serverstatus"
#: templates/stats.html:21 #: templates/stats.html:22
msgid "Healthy" msgid "Healthy"
msgstr "Gesund" msgstr "Gesund"
#: templates/stats.html:23 #: templates/stats.html:24
msgid "Issues detected" msgid "Issues detected"
msgstr "Probleme erkannt" msgstr "Probleme erkannt"
#: templates/stats.html:30
msgid "Background Worker"
msgstr "Hintergrund-Prozess"
#: templates/stats.html:33
msgid "Operational"
msgstr "Betriebsbereit"
#: templates/stats.html:35
msgid "Not running"
msgstr "Läuft nicht"
#: templates/stock_table.html:14 #: templates/stock_table.html:14
msgid "Export Stock Information" msgid "Export Stock Information"
msgstr "Aktuellen Bestand exportieren" msgstr "Aktuellen Bestand exportieren"
@ -6932,38 +6948,41 @@ msgstr "Berechtigungen"
msgid "Important dates" msgid "Important dates"
msgstr "wichtige Daten" msgstr "wichtige Daten"
#: users/models.py:158 #: users/models.py:165
msgid "Permission set" msgid "Permission set"
msgstr "Berechtigung geändert" msgstr "Berechtigung geändert"
#: users/models.py:166 #: users/models.py:173
msgid "Group" msgid "Group"
msgstr "Gruppe" msgstr "Gruppe"
#: users/models.py:169 #: users/models.py:176
msgid "View" msgid "View"
msgstr "Ansicht" msgstr "Ansicht"
#: users/models.py:169 #: users/models.py:176
msgid "Permission to view items" msgid "Permission to view items"
msgstr "Berechtigung Einträge anzuzeigen" msgstr "Berechtigung Einträge anzuzeigen"
#: users/models.py:171 #: users/models.py:178
msgid "Permission to add items" msgid "Permission to add items"
msgstr "Berechtigung Einträge zu erstellen" msgstr "Berechtigung Einträge zu erstellen"
#: users/models.py:173 #: users/models.py:180
msgid "Change" msgid "Change"
msgstr "Ändern" msgstr "Ändern"
#: users/models.py:173 #: users/models.py:180
msgid "Permissions to edit items" msgid "Permissions to edit items"
msgstr "Berechtigungen Einträge zu ändern" msgstr "Berechtigungen Einträge zu ändern"
#: users/models.py:175 #: users/models.py:182
msgid "Permission to delete items" msgid "Permission to delete items"
msgstr "Berechtigung Einträge zu löschen" msgstr "Berechtigung Einträge zu löschen"
#~ msgid "InvenTree server issues detected"
#~ msgstr "InvenTree Server Fehler aufgetreten"
#, fuzzy #, fuzzy
#~| msgid "Stocktake" #~| msgid "Stocktake"
#~ msgid "take" #~ msgid "take"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-04 20:22+0000\n" "POT-Creation-Date: 2021-04-11 22:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,15 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: InvenTree/api.py:62 #: InvenTree/api.py:64
msgid "API endpoint not found" msgid "API endpoint not found"
msgstr "" msgstr ""
#: InvenTree/api.py:108 #: InvenTree/api.py:110
msgid "No action specified" msgid "No action specified"
msgstr "" msgstr ""
#: InvenTree/api.py:122 #: InvenTree/api.py:124
msgid "No matching action found" msgid "No matching action found"
msgstr "" msgstr ""
@ -124,7 +124,7 @@ msgstr ""
#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1888 #: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1888
#: report/templates/report/inventree_test_report_base.html:91 #: report/templates/report/inventree_test_report_base.html:91
#: templates/js/stock.js:960 #: templates/js/stock.js:964
msgid "User" msgid "User"
msgstr "" msgstr ""
@ -140,7 +140,7 @@ msgid "Name"
msgstr "" msgstr ""
#: InvenTree/models.py:114 build/models.py:134 #: InvenTree/models.py:114 build/models.py:134
#: build/templates/build/detail.html:21 company/models.py:361 #: build/templates/build/detail.html:21 company/models.py:365
#: company/templates/company/detail.html:26 #: company/templates/company/detail.html:26
#: company/templates/company/supplier_part_base.html:70 #: company/templates/company/supplier_part_base.html:70
#: company/templates/company/supplier_part_detail.html:31 label/models.py:108 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
@ -155,8 +155,8 @@ msgstr ""
#: templates/js/build.js:677 templates/js/build.js:944 #: templates/js/build.js:677 templates/js/build.js:944
#: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/company.js:56 templates/js/order.js:183
#: templates/js/order.js:280 templates/js/part.js:168 templates/js/part.js:251 #: templates/js/order.js:280 templates/js/part.js:168 templates/js/part.js:251
#: templates/js/part.js:370 templates/js/part.js:566 templates/js/stock.js:552 #: templates/js/part.js:370 templates/js/part.js:566 templates/js/stock.js:554
#: templates/js/stock.js:934 #: templates/js/stock.js:938
msgid "Description" msgid "Description"
msgstr "" msgstr ""
@ -168,31 +168,31 @@ msgstr ""
msgid "parent" msgid "parent"
msgstr "" msgstr ""
#: InvenTree/settings.py:430 #: InvenTree/settings.py:480
msgid "English" msgid "English"
msgstr "" msgstr ""
#: InvenTree/settings.py:431 #: InvenTree/settings.py:481
msgid "French" msgid "French"
msgstr "" msgstr ""
#: InvenTree/settings.py:432 #: InvenTree/settings.py:482
msgid "German" msgid "German"
msgstr "" msgstr ""
#: InvenTree/settings.py:433 #: InvenTree/settings.py:483
msgid "Polish" msgid "Polish"
msgstr "" msgstr ""
#: InvenTree/settings.py:434 #: InvenTree/settings.py:484
msgid "Turkish" msgid "Turkish"
msgstr "" msgstr ""
#: InvenTree/status.py:24 #: InvenTree/status.py:57
msgid "Celery worker check failed" msgid "Background worker check failed"
msgstr "" msgstr ""
#: InvenTree/status.py:27 #: InvenTree/status.py:60
msgid "InvenTree system health checks failed" msgid "InvenTree system health checks failed"
msgstr "" msgstr ""
@ -308,7 +308,7 @@ msgstr ""
msgid "Password fields must match" msgid "Password fields must match"
msgstr "" msgstr ""
#: InvenTree/views.py:887 templates/navbar.html:83 #: InvenTree/views.py:887 templates/navbar.html:85
msgid "System Information" msgid "System Information"
msgstr "" msgstr ""
@ -404,7 +404,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:240 #: stock/templates/stock/item_base.html:240
#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364
#: templates/js/bom.js:205 templates/js/build.js:420 templates/js/build.js:954 #: templates/js/bom.js:205 templates/js/build.js:420 templates/js/build.js:954
#: templates/js/stock.js:952 templates/js/stock.js:1190 #: templates/js/stock.js:956 templates/js/stock.js:1194
msgid "Quantity" msgid "Quantity"
msgstr "" msgstr ""
@ -450,7 +450,7 @@ msgstr ""
#: stock/templates/stock/stock_adjust.html:17 #: stock/templates/stock/stock_adjust.html:17
#: templates/InvenTree/search.html:244 templates/js/barcode.js:363 #: templates/InvenTree/search.html:244 templates/js/barcode.js:363
#: templates/js/barcode.js:531 templates/js/build.js:434 #: templates/js/barcode.js:531 templates/js/build.js:434
#: templates/js/stock.js:637 #: templates/js/stock.js:641
msgid "Location" msgid "Location"
msgstr "" msgstr ""
@ -493,7 +493,7 @@ msgstr ""
#: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12
#: order/templates/order/so_navbar.html:19 #: order/templates/order/so_navbar.html:19
#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:181 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:182
#: templates/InvenTree/search.html:169 #: templates/InvenTree/search.html:169
#: templates/InvenTree/settings/tabs.html:31 users/models.py:41 #: templates/InvenTree/settings/tabs.html:31 users/models.py:41
msgid "Build Orders" msgid "Build Orders"
@ -527,7 +527,7 @@ msgstr ""
#: build/models.py:152 build/templates/build/auto_allocate.html:16 #: build/models.py:152 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:86 #: build/templates/build/build_base.html:86
#: build/templates/build/detail.html:26 company/models.py:535 #: build/templates/build/detail.html:26 company/models.py:539
#: order/models.py:637 order/models.py:669 #: order/models.py:637 order/models.py:669
#: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:30
#: order/templates/order/purchase_order_detail.html:156 #: order/templates/order/purchase_order_detail.html:156
@ -546,8 +546,8 @@ msgstr ""
#: templates/js/barcode.js:362 templates/js/bom.js:163 #: templates/js/barcode.js:362 templates/js/bom.js:163
#: templates/js/build.js:681 templates/js/build.js:921 #: templates/js/build.js:681 templates/js/build.js:921
#: templates/js/company.js:138 templates/js/part.js:232 #: templates/js/company.js:138 templates/js/part.js:232
#: templates/js/part.js:337 templates/js/stock.js:524 #: templates/js/part.js:337 templates/js/stock.js:523
#: templates/js/stock.js:1262 #: templates/js/stock.js:1266
msgid "Part" msgid "Part"
msgstr "" msgstr ""
@ -663,7 +663,7 @@ msgid "Link to external URL"
msgstr "" msgstr ""
#: build/models.py:261 build/templates/build/navbar.html:59 #: build/models.py:261 build/templates/build/navbar.html:59
#: company/models.py:129 company/models.py:368 #: company/models.py:133 company/models.py:372
#: company/templates/company/navbar.html:59 #: company/templates/company/navbar.html:59
#: company/templates/company/navbar.html:62 order/models.py:123 #: company/templates/company/navbar.html:62 order/models.py:123
#: order/models.py:597 order/templates/order/po_navbar.html:29 #: order/models.py:597 order/templates/order/po_navbar.html:29
@ -677,7 +677,7 @@ msgstr ""
#: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377
#: stock/models.py:496 stock/models.py:1555 stock/models.py:1665 #: stock/models.py:496 stock/models.py:1555 stock/models.py:1665
#: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37
#: templates/js/bom.js:329 templates/js/stock.js:128 templates/js/stock.js:667 #: templates/js/bom.js:329 templates/js/stock.js:128 templates/js/stock.js:671
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
@ -749,7 +749,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/item_base.html:89
#: stock/templates/stock/item_base.html:324 #: stock/templates/stock/item_base.html:324
#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:771 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:771
#: templates/js/stock.js:923 templates/js/stock.js:1181 #: templates/js/stock.js:927 templates/js/stock.js:1185
msgid "Stock Item" msgid "Stock Item"
msgstr "" msgstr ""
@ -908,7 +908,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:376 templates/InvenTree/search.html:236 #: stock/templates/stock/item_base.html:376 templates/InvenTree/search.html:236
#: templates/js/barcode.js:119 templates/js/build.js:710 #: templates/js/barcode.js:119 templates/js/build.js:710
#: templates/js/order.js:187 templates/js/order.js:285 #: templates/js/order.js:187 templates/js/order.js:285
#: templates/js/stock.js:624 templates/js/stock.js:1198 #: templates/js/stock.js:628 templates/js/stock.js:1202
msgid "Status" msgid "Status"
msgstr "" msgstr ""
@ -1042,8 +1042,8 @@ msgid "Destination location not specified"
msgstr "" msgstr ""
#: build/templates/build/detail.html:70 #: build/templates/build/detail.html:70
#: stock/templates/stock/item_base.html:288 templates/js/stock.js:632 #: stock/templates/stock/item_base.html:288 templates/js/stock.js:636
#: templates/js/stock.js:1205 templates/js/table_filters.js:85 #: templates/js/stock.js:1209 templates/js/table_filters.js:85
#: templates/js/table_filters.js:179 #: templates/js/table_filters.js:179
msgid "Batch" msgid "Batch"
msgstr "" msgstr ""
@ -1304,7 +1304,7 @@ msgstr ""
msgid "String descriptor for the server instance" msgid "String descriptor for the server instance"
msgstr "" msgstr ""
#: common/models.py:62 company/models.py:96 company/models.py:97 #: common/models.py:62 company/models.py:95 company/models.py:96
msgid "Company name" msgid "Company name"
msgstr "" msgstr ""
@ -1652,12 +1652,12 @@ msgstr ""
msgid "Supplied value must be a boolean" msgid "Supplied value must be a boolean"
msgstr "" msgstr ""
#: company/forms.py:37 company/models.py:139 #: company/forms.py:37 company/models.py:143
#: company/templates/company/detail.html:40 #: company/templates/company/detail.html:40
msgid "Currency" msgid "Currency"
msgstr "" msgstr ""
#: company/forms.py:38 company/models.py:141 #: company/forms.py:38 company/models.py:145
msgid "Default currency used for this company" msgid "Default currency used for this company"
msgstr "" msgstr ""
@ -1677,104 +1677,104 @@ msgstr ""
msgid "Single quantity price" msgid "Single quantity price"
msgstr "" msgstr ""
#: company/models.py:99 #: company/models.py:100
msgid "Company description" msgid "Company description"
msgstr "" msgstr ""
#: company/models.py:99 #: company/models.py:101
msgid "Description of the company" msgid "Description of the company"
msgstr "" msgstr ""
#: company/models.py:101 company/templates/company/company_base.html:70 #: company/models.py:105 company/templates/company/company_base.html:70
#: company/templates/company/detail.html:31 templates/js/company.js:60 #: company/templates/company/detail.html:31 templates/js/company.js:60
msgid "Website" msgid "Website"
msgstr "" msgstr ""
#: company/models.py:101 #: company/models.py:105
msgid "Company website URL" msgid "Company website URL"
msgstr "" msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:77 #: company/models.py:108 company/templates/company/company_base.html:77
msgid "Address" msgid "Address"
msgstr "" msgstr ""
#: company/models.py:105 #: company/models.py:109
msgid "Company address" msgid "Company address"
msgstr "" msgstr ""
#: company/models.py:108 #: company/models.py:112
msgid "Phone number" msgid "Phone number"
msgstr "" msgstr ""
#: company/models.py:109 #: company/models.py:113
msgid "Contact phone number" msgid "Contact phone number"
msgstr "" msgstr ""
#: company/models.py:112 company/templates/company/company_base.html:91 #: company/models.py:116 company/templates/company/company_base.html:91
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: company/models.py:112 #: company/models.py:116
msgid "Contact email address" msgid "Contact email address"
msgstr "" msgstr ""
#: company/models.py:115 company/templates/company/company_base.html:98 #: company/models.py:119 company/templates/company/company_base.html:98
msgid "Contact" msgid "Contact"
msgstr "" msgstr ""
#: company/models.py:116 #: company/models.py:120
msgid "Point of contact" msgid "Point of contact"
msgstr "" msgstr ""
#: company/models.py:118 company/models.py:355 order/models.py:103 #: company/models.py:122 company/models.py:359 order/models.py:103
#: part/models.py:743 #: part/models.py:743
#: report/templates/report/inventree_build_order_base.html:165 #: report/templates/report/inventree_build_order_base.html:165
#: stock/models.py:1557 templates/js/company.js:208 templates/js/part.js:430 #: stock/models.py:1557 templates/js/company.js:208 templates/js/part.js:430
msgid "Link" msgid "Link"
msgstr "" msgstr ""
#: company/models.py:118 #: company/models.py:122
msgid "Link to external company information" msgid "Link to external company information"
msgstr "" msgstr ""
#: company/models.py:126 part/models.py:753 #: company/models.py:130 part/models.py:753
msgid "Image" msgid "Image"
msgstr "" msgstr ""
#: company/models.py:131 #: company/models.py:135
msgid "is customer" msgid "is customer"
msgstr "" msgstr ""
#: company/models.py:131 #: company/models.py:135
msgid "Do you sell items to this company?" msgid "Do you sell items to this company?"
msgstr "" msgstr ""
#: company/models.py:133 #: company/models.py:137
msgid "is supplier" msgid "is supplier"
msgstr "" msgstr ""
#: company/models.py:133 #: company/models.py:137
msgid "Do you purchase items from this company?" msgid "Do you purchase items from this company?"
msgstr "" msgstr ""
#: company/models.py:135 #: company/models.py:139
msgid "is manufacturer" msgid "is manufacturer"
msgstr "" msgstr ""
#: company/models.py:135 #: company/models.py:139
msgid "Does this company manufacture parts?" msgid "Does this company manufacture parts?"
msgstr "" msgstr ""
#: company/models.py:315 stock/models.py:371 #: company/models.py:319 stock/models.py:371
#: stock/templates/stock/item_base.html:220 #: stock/templates/stock/item_base.html:220
msgid "Base Part" msgid "Base Part"
msgstr "" msgstr ""
#: company/models.py:319 order/views.py:1372 #: company/models.py:323 order/views.py:1372
msgid "Select part" msgid "Select part"
msgstr "" msgstr ""
#: company/models.py:325 company/templates/company/detail.html:60 #: company/models.py:329 company/templates/company/detail.html:60
#: company/templates/company/supplier_part_base.html:83 #: company/templates/company/supplier_part_base.html:83
#: company/templates/company/supplier_part_detail.html:25 order/models.py:190 #: company/templates/company/supplier_part_detail.html:25 order/models.py:190
#: order/templates/order/order_base.html:92 #: order/templates/order/order_base.html:92
@ -1784,80 +1784,80 @@ msgstr ""
msgid "Supplier" msgid "Supplier"
msgstr "" msgstr ""
#: company/models.py:326 #: company/models.py:330
msgid "Select supplier" msgid "Select supplier"
msgstr "" msgstr ""
#: company/models.py:331 company/templates/company/supplier_part_base.html:87 #: company/models.py:335 company/templates/company/supplier_part_base.html:87
#: company/templates/company/supplier_part_detail.html:26 #: company/templates/company/supplier_part_detail.html:26
#: order/templates/order/purchase_order_detail.html:174 part/bom.py:171 #: order/templates/order/purchase_order_detail.html:174 part/bom.py:171
msgid "SKU" msgid "SKU"
msgstr "" msgstr ""
#: company/models.py:332 #: company/models.py:336
msgid "Supplier stock keeping unit" msgid "Supplier stock keeping unit"
msgstr "" msgstr ""
#: company/models.py:342 company/templates/company/detail.html:55 #: company/models.py:346 company/templates/company/detail.html:55
#: company/templates/company/supplier_part_base.html:93 #: company/templates/company/supplier_part_base.html:93
#: company/templates/company/supplier_part_detail.html:34 part/bom.py:172 #: company/templates/company/supplier_part_detail.html:34 part/bom.py:172
#: templates/js/company.js:44 templates/js/company.js:188 #: templates/js/company.js:44 templates/js/company.js:188
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
#: company/models.py:343 #: company/models.py:347
msgid "Select manufacturer" msgid "Select manufacturer"
msgstr "" msgstr ""
#: company/models.py:349 company/templates/company/supplier_part_base.html:99 #: company/models.py:353 company/templates/company/supplier_part_base.html:99
#: company/templates/company/supplier_part_detail.html:35 #: company/templates/company/supplier_part_detail.html:35
#: order/templates/order/purchase_order_detail.html:183 part/bom.py:173 #: order/templates/order/purchase_order_detail.html:183 part/bom.py:173
#: templates/js/company.js:204 #: templates/js/company.js:204
msgid "MPN" msgid "MPN"
msgstr "" msgstr ""
#: company/models.py:350 #: company/models.py:354
msgid "Manufacturer part number" msgid "Manufacturer part number"
msgstr "" msgstr ""
#: company/models.py:356 #: company/models.py:360
msgid "URL for external supplier part link" msgid "URL for external supplier part link"
msgstr "" msgstr ""
#: company/models.py:362 #: company/models.py:366
msgid "Supplier part description" msgid "Supplier part description"
msgstr "" msgstr ""
#: company/models.py:367 company/templates/company/supplier_part_base.html:113 #: company/models.py:371 company/templates/company/supplier_part_base.html:113
#: company/templates/company/supplier_part_detail.html:38 part/models.py:2170 #: company/templates/company/supplier_part_detail.html:38 part/models.py:2170
#: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93 #: report/templates/report/inventree_so_report.html:93
msgid "Note" msgid "Note"
msgstr "" msgstr ""
#: company/models.py:371 #: company/models.py:375
msgid "base cost" msgid "base cost"
msgstr "" msgstr ""
#: company/models.py:371 #: company/models.py:375
msgid "Minimum charge (e.g. stocking fee)" msgid "Minimum charge (e.g. stocking fee)"
msgstr "" msgstr ""
#: company/models.py:373 company/templates/company/supplier_part_base.html:106 #: company/models.py:377 company/templates/company/supplier_part_base.html:106
#: stock/models.py:395 stock/templates/stock/item_base.html:295 #: stock/models.py:395 stock/templates/stock/item_base.html:295
#: templates/js/stock.js:663 #: templates/js/stock.js:667
msgid "Packaging" msgid "Packaging"
msgstr "" msgstr ""
#: company/models.py:373 #: company/models.py:377
msgid "Part packaging" msgid "Part packaging"
msgstr "" msgstr ""
#: company/models.py:375 #: company/models.py:379
msgid "multiple" msgid "multiple"
msgstr "" msgstr ""
#: company/models.py:375 #: company/models.py:379
msgid "Order multiple" msgid "Order multiple"
msgstr "" msgstr ""
@ -1950,7 +1950,7 @@ msgstr ""
#: company/templates/company/detail_part.html:21 #: company/templates/company/detail_part.html:21
#: order/templates/order/purchase_order_detail.html:74 #: order/templates/order/purchase_order_detail.html:74
#: part/templates/part/supplier.html:17 templates/js/stock.js:1082 #: part/templates/part/supplier.html:17 templates/js/stock.js:1086
msgid "New Supplier Part" msgid "New Supplier Part"
msgstr "" msgstr ""
@ -1974,7 +1974,7 @@ msgstr ""
#: company/templates/company/detail_part.html:66 #: company/templates/company/detail_part.html:66
#: part/templates/part/bom.html:159 part/templates/part/category.html:118 #: part/templates/part/bom.html:159 part/templates/part/category.html:118
#: templates/js/stock.js:1076 #: templates/js/stock.js:1080
msgid "New Part" msgid "New Part"
msgstr "" msgstr ""
@ -2029,14 +2029,14 @@ msgstr ""
#: part/templates/part/category_partlist.html:10 #: part/templates/part/category_partlist.html:10
#: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113 #: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113
#: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23 #: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23
#: templates/stats.html:35 templates/stats.html:44 users/models.py:38 #: templates/stats.html:48 templates/stats.html:57 users/models.py:38
msgid "Parts" msgid "Parts"
msgstr "" msgstr ""
#: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33 #: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33
#: stock/templates/stock/location.html:100 #: stock/templates/stock/location.html:100
#: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182 #: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182
#: templates/stats.html:48 templates/stats.html:57 users/models.py:40 #: templates/stats.html:61 templates/stats.html:70 users/models.py:40
msgid "Stock Items" msgid "Stock Items"
msgstr "" msgstr ""
@ -2048,7 +2048,7 @@ msgstr ""
#: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180 #: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180
#: templates/InvenTree/search.html:216 #: templates/InvenTree/search.html:216
#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:172 #: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:172
#: templates/js/part.js:397 templates/js/stock.js:559 templates/navbar.html:26 #: templates/js/part.js:397 templates/js/stock.js:563 templates/navbar.html:26
msgid "Stock" msgid "Stock"
msgstr "" msgstr ""
@ -2059,7 +2059,7 @@ msgstr ""
#: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13 #: order/templates/order/sales_orders.html:13
#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95
#: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:226 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:227
#: templates/InvenTree/search.html:330 #: templates/InvenTree/search.html:330
#: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
#: users/models.py:43 #: users/models.py:43
@ -2071,7 +2071,7 @@ msgstr ""
#: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13 #: order/templates/order/purchase_orders.html:13
#: part/templates/part/navbar.html:78 part/templates/part/navbar.html:81 #: part/templates/part/navbar.html:78 part/templates/part/navbar.html:81
#: part/templates/part/orders.html:10 templates/InvenTree/index.html:203 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:204
#: templates/InvenTree/search.html:300 #: templates/InvenTree/search.html:300
#: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
#: users/models.py:42 #: users/models.py:42
@ -2263,7 +2263,7 @@ msgstr ""
msgid "Edit Supplier Part" msgid "Edit Supplier Part"
msgstr "" msgstr ""
#: company/views.py:378 templates/js/stock.js:1083 #: company/views.py:378 templates/js/stock.js:1087
msgid "Create new Supplier Part" msgid "Create new Supplier Part"
msgstr "" msgstr ""
@ -2713,8 +2713,8 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:45 #: order/templates/order/purchase_order_detail.html:45
#: order/templates/order/purchase_order_detail.html:125 #: order/templates/order/purchase_order_detail.html:125
#: part/templates/part/category.html:197 part/templates/part/category.html:239 #: part/templates/part/category.html:197 part/templates/part/category.html:239
#: stock/templates/stock/location.html:191 templates/js/stock.js:704 #: stock/templates/stock/location.html:191 templates/js/stock.js:708
#: templates/js/stock.js:1088 #: templates/js/stock.js:1092
msgid "New Location" msgid "New Location"
msgstr "" msgstr ""
@ -3242,7 +3242,7 @@ msgstr ""
#: part/models.py:83 part/templates/part/category.html:19 #: part/models.py:83 part/templates/part/category.html:19
#: part/templates/part/category.html:90 part/templates/part/category.html:141 #: part/templates/part/category.html:90 part/templates/part/category.html:141
#: templates/InvenTree/search.html:126 templates/stats.html:39 #: templates/InvenTree/search.html:126 templates/stats.html:52
#: users/models.py:37 #: users/models.py:37
msgid "Part Categories" msgid "Part Categories"
msgstr "" msgstr ""
@ -3675,7 +3675,7 @@ msgid "All selected BOM items will be deleted"
msgstr "" msgstr ""
#: part/templates/part/bom.html:160 part/views.py:584 #: part/templates/part/bom.html:160 part/views.py:584
#: templates/js/stock.js:1077 #: templates/js/stock.js:1081
msgid "Create New Part" msgid "Create New Part"
msgstr "" msgstr ""
@ -3844,7 +3844,7 @@ msgid "Export Data"
msgstr "" msgstr ""
#: part/templates/part/category.html:198 #: part/templates/part/category.html:198
#: stock/templates/stock/location.html:192 templates/js/stock.js:705 #: stock/templates/stock/location.html:192 templates/js/stock.js:709
msgid "Create new location" msgid "Create new location"
msgstr "" msgstr ""
@ -4085,7 +4085,7 @@ msgid "Edit"
msgstr "" msgstr ""
#: part/templates/part/params.html:44 part/templates/part/related.html:44 #: part/templates/part/params.html:44 part/templates/part/related.html:44
#: part/templates/part/supplier.html:22 stock/views.py:1002 users/models.py:175 #: part/templates/part/supplier.html:22 stock/views.py:1002 users/models.py:182
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@ -4628,7 +4628,7 @@ msgid "Result"
msgstr "" msgstr ""
#: report/templates/report/inventree_test_report_base.html:92 #: report/templates/report/inventree_test_report_base.html:92
#: templates/js/order.js:195 templates/js/stock.js:905 #: templates/js/order.js:195 templates/js/stock.js:909
msgid "Date" msgid "Date"
msgstr "" msgstr ""
@ -4651,7 +4651,7 @@ msgid "Moved {n} parts to {loc}"
msgstr "" msgstr ""
#: stock/forms.py:114 stock/forms.py:406 stock/models.py:473 #: stock/forms.py:114 stock/forms.py:406 stock/models.py:473
#: stock/templates/stock/item_base.html:349 templates/js/stock.js:652 #: stock/templates/stock/item_base.html:349 templates/js/stock.js:656
msgid "Expiry Date" msgid "Expiry Date"
msgstr "" msgstr ""
@ -5085,11 +5085,11 @@ msgid "Remove stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:169 #: stock/templates/stock/item_base.html:169
msgid "Transfer stock" msgid "Serialize stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:172 #: stock/templates/stock/item_base.html:173
msgid "Serialize stock" msgid "Transfer stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:176 #: stock/templates/stock/item_base.html:176
@ -5100,7 +5100,7 @@ msgstr ""
msgid "Return to stock" msgid "Return to stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:183 templates/js/stock.js:1218 #: stock/templates/stock/item_base.html:183 templates/js/stock.js:1222
msgid "Uninstall stock item" msgid "Uninstall stock item"
msgstr "" msgstr ""
@ -5153,7 +5153,7 @@ msgstr ""
msgid "This StockItem expires on" msgid "This StockItem expires on"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:362 templates/js/stock.js:658 #: stock/templates/stock/item_base.html:362 templates/js/stock.js:662
msgid "Last Updated" msgid "Last Updated"
msgstr "" msgstr ""
@ -5266,7 +5266,7 @@ msgid "Stock Details"
msgstr "" msgstr ""
#: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263 #: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263
#: templates/stats.html:52 users/models.py:39 #: templates/stats.html:65 users/models.py:39
msgid "Stock Locations" msgid "Stock Locations"
msgstr "" msgstr ""
@ -5451,7 +5451,7 @@ msgstr ""
msgid "Add Stock Items" msgid "Add Stock Items"
msgstr "" msgstr ""
#: stock/views.py:1001 users/models.py:171 #: stock/views.py:1001 users/models.py:178
msgid "Add" msgid "Add"
msgstr "" msgstr ""
@ -5581,35 +5581,35 @@ msgstr ""
msgid "Recently Updated" msgid "Recently Updated"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:143 #: templates/InvenTree/index.html:144
msgid "Expired Stock" msgid "Expired Stock"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:144 #: templates/InvenTree/index.html:145
msgid "Stale Stock" msgid "Stale Stock"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:182 #: templates/InvenTree/index.html:183
msgid "Build Orders In Progress" msgid "Build Orders In Progress"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:183 #: templates/InvenTree/index.html:184
msgid "Overdue Build Orders" msgid "Overdue Build Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:204 #: templates/InvenTree/index.html:205
msgid "Outstanding Purchase Orders" msgid "Outstanding Purchase Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:205 #: templates/InvenTree/index.html:206
msgid "Overdue Purchase Orders" msgid "Overdue Purchase Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:227 #: templates/InvenTree/index.html:228
msgid "Outstanding Sales Orders" msgid "Outstanding Sales Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:228 #: templates/InvenTree/index.html:229
msgid "Overdue Sales Orders" msgid "Overdue Sales Orders"
msgstr "" msgstr ""
@ -5621,11 +5621,11 @@ msgstr ""
msgid "Enter a search query" msgid "Enter a search query"
msgstr "" msgstr ""
#: templates/InvenTree/search.html:252 templates/js/stock.js:301 #: templates/InvenTree/search.html:252 templates/js/stock.js:300
msgid "Shipped to customer" msgid "Shipped to customer"
msgstr "" msgstr ""
#: templates/InvenTree/search.html:255 templates/js/stock.js:311 #: templates/InvenTree/search.html:255 templates/js/stock.js:310
msgid "No stock location set" msgid "No stock location set"
msgstr "" msgstr ""
@ -5700,7 +5700,7 @@ msgid "Edit setting"
msgstr "" msgstr ""
#: templates/InvenTree/settings/settings.html:7 #: templates/InvenTree/settings/settings.html:7
#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:76 #: templates/InvenTree/settings/settings.html:13 templates/navbar.html:78
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
@ -5797,30 +5797,38 @@ msgid "InvenTree Version"
msgstr "" msgstr ""
#: templates/about.html:26 #: templates/about.html:26
msgid "Django Version" msgid "Up to Date"
msgstr "" msgstr ""
#: templates/about.html:30 #: templates/about.html:28
msgid "Commit Hash" msgid "Update Available"
msgstr "" msgstr ""
#: templates/about.html:34 #: templates/about.html:34
msgid "Commit Date" msgid "Django Version"
msgstr "" msgstr ""
#: templates/about.html:38 #: templates/about.html:41
msgid "InvenTree Documentation" msgid "Commit Hash"
msgstr ""
#: templates/about.html:43
msgid "View Code on GitHub"
msgstr "" msgstr ""
#: templates/about.html:48 #: templates/about.html:48
msgid "Get the App" msgid "Commit Date"
msgstr "" msgstr ""
#: templates/about.html:53 #: templates/about.html:53
msgid "InvenTree Documentation"
msgstr ""
#: templates/about.html:58
msgid "View Code on GitHub"
msgstr ""
#: templates/about.html:63
msgid "Get the App"
msgstr ""
#: templates/about.html:68
msgid "Submit Bug Report" msgid "Submit Bug Report"
msgstr "" msgstr ""
@ -6018,8 +6026,8 @@ msgstr ""
msgid "No builds matching query" msgid "No builds matching query"
msgstr "" msgstr ""
#: templates/js/build.js:649 templates/js/part.js:323 templates/js/stock.js:512 #: templates/js/build.js:649 templates/js/part.js:323 templates/js/stock.js:511
#: templates/js/stock.js:1250 #: templates/js/stock.js:1254
msgid "Select" msgid "Select"
msgstr "" msgstr ""
@ -6371,115 +6379,115 @@ msgstr ""
msgid "Test Date" msgid "Test Date"
msgstr "" msgstr ""
#: templates/js/stock.js:293 #: templates/js/stock.js:292
msgid "In production" msgid "In production"
msgstr "" msgstr ""
#: templates/js/stock.js:297 #: templates/js/stock.js:296
msgid "Installed in Stock Item" msgid "Installed in Stock Item"
msgstr "" msgstr ""
#: templates/js/stock.js:305 #: templates/js/stock.js:304
msgid "Assigned to Sales Order" msgid "Assigned to Sales Order"
msgstr "" msgstr ""
#: templates/js/stock.js:337 #: templates/js/stock.js:336
msgid "No stock items matching query" msgid "No stock items matching query"
msgstr "" msgstr ""
#: templates/js/stock.js:479 #: templates/js/stock.js:478
msgid "Undefined location" msgid "Undefined location"
msgstr "" msgstr ""
#: templates/js/stock.js:575 #: templates/js/stock.js:579
msgid "Stock item is in production" msgid "Stock item is in production"
msgstr "" msgstr ""
#: templates/js/stock.js:580 #: templates/js/stock.js:584
msgid "Stock item assigned to sales order" msgid "Stock item assigned to sales order"
msgstr "" msgstr ""
#: templates/js/stock.js:583 #: templates/js/stock.js:587
msgid "Stock item assigned to customer" msgid "Stock item assigned to customer"
msgstr "" msgstr ""
#: templates/js/stock.js:587 #: templates/js/stock.js:591
msgid "Stock item has expired" msgid "Stock item has expired"
msgstr "" msgstr ""
#: templates/js/stock.js:589 #: templates/js/stock.js:593
msgid "Stock item will expire soon" msgid "Stock item will expire soon"
msgstr "" msgstr ""
#: templates/js/stock.js:593 #: templates/js/stock.js:597
msgid "Stock item has been allocated" msgid "Stock item has been allocated"
msgstr "" msgstr ""
#: templates/js/stock.js:597 #: templates/js/stock.js:601
msgid "Stock item has been installed in another item" msgid "Stock item has been installed in another item"
msgstr "" msgstr ""
#: templates/js/stock.js:605 #: templates/js/stock.js:609
msgid "Stock item has been rejected" msgid "Stock item has been rejected"
msgstr "" msgstr ""
#: templates/js/stock.js:609 #: templates/js/stock.js:613
msgid "Stock item is lost" msgid "Stock item is lost"
msgstr "" msgstr ""
#: templates/js/stock.js:612 #: templates/js/stock.js:616
msgid "Stock item is destroyed" msgid "Stock item is destroyed"
msgstr "" msgstr ""
#: templates/js/stock.js:616 templates/js/table_filters.js:116 #: templates/js/stock.js:620 templates/js/table_filters.js:116
msgid "Depleted" msgid "Depleted"
msgstr "" msgstr ""
#: templates/js/stock.js:645 #: templates/js/stock.js:649
msgid "Stocktake" msgid "Stocktake"
msgstr "" msgstr ""
#: templates/js/stock.js:821 #: templates/js/stock.js:825
msgid "Stock Status" msgid "Stock Status"
msgstr "" msgstr ""
#: templates/js/stock.js:836 #: templates/js/stock.js:840
msgid "Set Stock Status" msgid "Set Stock Status"
msgstr "" msgstr ""
#: templates/js/stock.js:850 #: templates/js/stock.js:854
msgid "Select Status Code" msgid "Select Status Code"
msgstr "" msgstr ""
#: templates/js/stock.js:851 #: templates/js/stock.js:855
msgid "Status code must be selected" msgid "Status code must be selected"
msgstr "" msgstr ""
#: templates/js/stock.js:969 #: templates/js/stock.js:973
msgid "No user information" msgid "No user information"
msgstr "" msgstr ""
#: templates/js/stock.js:979 #: templates/js/stock.js:983
msgid "Edit tracking entry" msgid "Edit tracking entry"
msgstr "" msgstr ""
#: templates/js/stock.js:980 #: templates/js/stock.js:984
msgid "Delete tracking entry" msgid "Delete tracking entry"
msgstr "" msgstr ""
#: templates/js/stock.js:1089 #: templates/js/stock.js:1093
msgid "Create New Location" msgid "Create New Location"
msgstr "" msgstr ""
#: templates/js/stock.js:1188 #: templates/js/stock.js:1192
msgid "Serial" msgid "Serial"
msgstr "" msgstr ""
#: templates/js/stock.js:1281 templates/js/table_filters.js:149 #: templates/js/stock.js:1285 templates/js/table_filters.js:149
msgid "Installed" msgid "Installed"
msgstr "" msgstr ""
#: templates/js/stock.js:1306 #: templates/js/stock.js:1310
msgid "Install item" msgid "Install item"
msgstr "" msgstr ""
@ -6705,23 +6713,19 @@ msgstr ""
msgid "Scan Barcode" msgid "Scan Barcode"
msgstr "" msgstr ""
#: templates/navbar.html:63 #: templates/navbar.html:71 users/models.py:36
msgid "InvenTree server issues detected"
msgstr ""
#: templates/navbar.html:69 users/models.py:36
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: templates/navbar.html:71 templates/registration/logout.html:5 #: templates/navbar.html:73 templates/registration/logout.html:5
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: templates/navbar.html:73 templates/registration/login.html:89 #: templates/navbar.html:75 templates/registration/login.html:89
msgid "Login" msgid "Login"
msgstr "" msgstr ""
#: templates/navbar.html:85 #: templates/navbar.html:94
msgid "About InvenTree" msgid "About InvenTree"
msgstr "" msgstr ""
@ -6761,18 +6765,30 @@ msgstr ""
msgid "Instance Name" msgid "Instance Name"
msgstr "" msgstr ""
#: templates/stats.html:18 #: templates/stats.html:19
msgid "Server status" msgid "Server status"
msgstr "" msgstr ""
#: templates/stats.html:21 #: templates/stats.html:22
msgid "Healthy" msgid "Healthy"
msgstr "" msgstr ""
#: templates/stats.html:23 #: templates/stats.html:24
msgid "Issues detected" msgid "Issues detected"
msgstr "" msgstr ""
#: templates/stats.html:30
msgid "Background Worker"
msgstr ""
#: templates/stats.html:33
msgid "Operational"
msgstr ""
#: templates/stats.html:35
msgid "Not running"
msgstr ""
#: templates/stock_table.html:14 #: templates/stock_table.html:14
msgid "Export Stock Information" msgid "Export Stock Information"
msgstr "" msgstr ""
@ -6857,34 +6873,34 @@ msgstr ""
msgid "Important dates" msgid "Important dates"
msgstr "" msgstr ""
#: users/models.py:158 #: users/models.py:165
msgid "Permission set" msgid "Permission set"
msgstr "" msgstr ""
#: users/models.py:166 #: users/models.py:173
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: users/models.py:169 #: users/models.py:176
msgid "View" msgid "View"
msgstr "" msgstr ""
#: users/models.py:169 #: users/models.py:176
msgid "Permission to view items" msgid "Permission to view items"
msgstr "" msgstr ""
#: users/models.py:171 #: users/models.py:178
msgid "Permission to add items" msgid "Permission to add items"
msgstr "" msgstr ""
#: users/models.py:173 #: users/models.py:180
msgid "Change" msgid "Change"
msgstr "" msgstr ""
#: users/models.py:173 #: users/models.py:180
msgid "Permissions to edit items" msgid "Permissions to edit items"
msgstr "" msgstr ""
#: users/models.py:175 #: users/models.py:182
msgid "Permission to delete items" msgid "Permission to delete items"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-04 20:22+0000\n" "POT-Creation-Date: 2021-04-11 22:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,15 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: InvenTree/api.py:62 #: InvenTree/api.py:64
msgid "API endpoint not found" msgid "API endpoint not found"
msgstr "" msgstr ""
#: InvenTree/api.py:108 #: InvenTree/api.py:110
msgid "No action specified" msgid "No action specified"
msgstr "" msgstr ""
#: InvenTree/api.py:122 #: InvenTree/api.py:124
msgid "No matching action found" msgid "No matching action found"
msgstr "" msgstr ""
@ -124,7 +124,7 @@ msgstr ""
#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1888 #: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1888
#: report/templates/report/inventree_test_report_base.html:91 #: report/templates/report/inventree_test_report_base.html:91
#: templates/js/stock.js:960 #: templates/js/stock.js:964
msgid "User" msgid "User"
msgstr "" msgstr ""
@ -140,7 +140,7 @@ msgid "Name"
msgstr "" msgstr ""
#: InvenTree/models.py:114 build/models.py:134 #: InvenTree/models.py:114 build/models.py:134
#: build/templates/build/detail.html:21 company/models.py:361 #: build/templates/build/detail.html:21 company/models.py:365
#: company/templates/company/detail.html:26 #: company/templates/company/detail.html:26
#: company/templates/company/supplier_part_base.html:70 #: company/templates/company/supplier_part_base.html:70
#: company/templates/company/supplier_part_detail.html:31 label/models.py:108 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
@ -155,8 +155,8 @@ msgstr ""
#: templates/js/build.js:677 templates/js/build.js:944 #: templates/js/build.js:677 templates/js/build.js:944
#: templates/js/company.js:56 templates/js/order.js:183 #: templates/js/company.js:56 templates/js/order.js:183
#: templates/js/order.js:280 templates/js/part.js:168 templates/js/part.js:251 #: templates/js/order.js:280 templates/js/part.js:168 templates/js/part.js:251
#: templates/js/part.js:370 templates/js/part.js:566 templates/js/stock.js:552 #: templates/js/part.js:370 templates/js/part.js:566 templates/js/stock.js:554
#: templates/js/stock.js:934 #: templates/js/stock.js:938
msgid "Description" msgid "Description"
msgstr "" msgstr ""
@ -168,31 +168,31 @@ msgstr ""
msgid "parent" msgid "parent"
msgstr "" msgstr ""
#: InvenTree/settings.py:430 #: InvenTree/settings.py:480
msgid "English" msgid "English"
msgstr "" msgstr ""
#: InvenTree/settings.py:431 #: InvenTree/settings.py:481
msgid "French" msgid "French"
msgstr "" msgstr ""
#: InvenTree/settings.py:432 #: InvenTree/settings.py:482
msgid "German" msgid "German"
msgstr "" msgstr ""
#: InvenTree/settings.py:433 #: InvenTree/settings.py:483
msgid "Polish" msgid "Polish"
msgstr "" msgstr ""
#: InvenTree/settings.py:434 #: InvenTree/settings.py:484
msgid "Turkish" msgid "Turkish"
msgstr "" msgstr ""
#: InvenTree/status.py:24 #: InvenTree/status.py:57
msgid "Celery worker check failed" msgid "Background worker check failed"
msgstr "" msgstr ""
#: InvenTree/status.py:27 #: InvenTree/status.py:60
msgid "InvenTree system health checks failed" msgid "InvenTree system health checks failed"
msgstr "" msgstr ""
@ -308,7 +308,7 @@ msgstr ""
msgid "Password fields must match" msgid "Password fields must match"
msgstr "" msgstr ""
#: InvenTree/views.py:887 templates/navbar.html:83 #: InvenTree/views.py:887 templates/navbar.html:85
msgid "System Information" msgid "System Information"
msgstr "" msgstr ""
@ -404,7 +404,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:240 #: stock/templates/stock/item_base.html:240
#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364
#: templates/js/bom.js:205 templates/js/build.js:420 templates/js/build.js:954 #: templates/js/bom.js:205 templates/js/build.js:420 templates/js/build.js:954
#: templates/js/stock.js:952 templates/js/stock.js:1190 #: templates/js/stock.js:956 templates/js/stock.js:1194
msgid "Quantity" msgid "Quantity"
msgstr "" msgstr ""
@ -450,7 +450,7 @@ msgstr ""
#: stock/templates/stock/stock_adjust.html:17 #: stock/templates/stock/stock_adjust.html:17
#: templates/InvenTree/search.html:244 templates/js/barcode.js:363 #: templates/InvenTree/search.html:244 templates/js/barcode.js:363
#: templates/js/barcode.js:531 templates/js/build.js:434 #: templates/js/barcode.js:531 templates/js/build.js:434
#: templates/js/stock.js:637 #: templates/js/stock.js:641
msgid "Location" msgid "Location"
msgstr "" msgstr ""
@ -493,7 +493,7 @@ msgstr ""
#: build/templates/build/index.html:15 order/templates/order/so_builds.html:12 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12
#: order/templates/order/so_navbar.html:19 #: order/templates/order/so_navbar.html:19
#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:181 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:182
#: templates/InvenTree/search.html:169 #: templates/InvenTree/search.html:169
#: templates/InvenTree/settings/tabs.html:31 users/models.py:41 #: templates/InvenTree/settings/tabs.html:31 users/models.py:41
msgid "Build Orders" msgid "Build Orders"
@ -527,7 +527,7 @@ msgstr ""
#: build/models.py:152 build/templates/build/auto_allocate.html:16 #: build/models.py:152 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:86 #: build/templates/build/build_base.html:86
#: build/templates/build/detail.html:26 company/models.py:535 #: build/templates/build/detail.html:26 company/models.py:539
#: order/models.py:637 order/models.py:669 #: order/models.py:637 order/models.py:669
#: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:30
#: order/templates/order/purchase_order_detail.html:156 #: order/templates/order/purchase_order_detail.html:156
@ -546,8 +546,8 @@ msgstr ""
#: templates/js/barcode.js:362 templates/js/bom.js:163 #: templates/js/barcode.js:362 templates/js/bom.js:163
#: templates/js/build.js:681 templates/js/build.js:921 #: templates/js/build.js:681 templates/js/build.js:921
#: templates/js/company.js:138 templates/js/part.js:232 #: templates/js/company.js:138 templates/js/part.js:232
#: templates/js/part.js:337 templates/js/stock.js:524 #: templates/js/part.js:337 templates/js/stock.js:523
#: templates/js/stock.js:1262 #: templates/js/stock.js:1266
msgid "Part" msgid "Part"
msgstr "" msgstr ""
@ -663,7 +663,7 @@ msgid "Link to external URL"
msgstr "" msgstr ""
#: build/models.py:261 build/templates/build/navbar.html:59 #: build/models.py:261 build/templates/build/navbar.html:59
#: company/models.py:129 company/models.py:368 #: company/models.py:133 company/models.py:372
#: company/templates/company/navbar.html:59 #: company/templates/company/navbar.html:59
#: company/templates/company/navbar.html:62 order/models.py:123 #: company/templates/company/navbar.html:62 order/models.py:123
#: order/models.py:597 order/templates/order/po_navbar.html:29 #: order/models.py:597 order/templates/order/po_navbar.html:29
@ -677,7 +677,7 @@ msgstr ""
#: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377
#: stock/models.py:496 stock/models.py:1555 stock/models.py:1665 #: stock/models.py:496 stock/models.py:1555 stock/models.py:1665
#: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37
#: templates/js/bom.js:329 templates/js/stock.js:128 templates/js/stock.js:667 #: templates/js/bom.js:329 templates/js/stock.js:128 templates/js/stock.js:671
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
@ -749,7 +749,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/item_base.html:89
#: stock/templates/stock/item_base.html:324 #: stock/templates/stock/item_base.html:324
#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:771 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:771
#: templates/js/stock.js:923 templates/js/stock.js:1181 #: templates/js/stock.js:927 templates/js/stock.js:1185
msgid "Stock Item" msgid "Stock Item"
msgstr "" msgstr ""
@ -908,7 +908,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:376 templates/InvenTree/search.html:236 #: stock/templates/stock/item_base.html:376 templates/InvenTree/search.html:236
#: templates/js/barcode.js:119 templates/js/build.js:710 #: templates/js/barcode.js:119 templates/js/build.js:710
#: templates/js/order.js:187 templates/js/order.js:285 #: templates/js/order.js:187 templates/js/order.js:285
#: templates/js/stock.js:624 templates/js/stock.js:1198 #: templates/js/stock.js:628 templates/js/stock.js:1202
msgid "Status" msgid "Status"
msgstr "" msgstr ""
@ -1042,8 +1042,8 @@ msgid "Destination location not specified"
msgstr "" msgstr ""
#: build/templates/build/detail.html:70 #: build/templates/build/detail.html:70
#: stock/templates/stock/item_base.html:288 templates/js/stock.js:632 #: stock/templates/stock/item_base.html:288 templates/js/stock.js:636
#: templates/js/stock.js:1205 templates/js/table_filters.js:85 #: templates/js/stock.js:1209 templates/js/table_filters.js:85
#: templates/js/table_filters.js:179 #: templates/js/table_filters.js:179
msgid "Batch" msgid "Batch"
msgstr "" msgstr ""
@ -1304,7 +1304,7 @@ msgstr ""
msgid "String descriptor for the server instance" msgid "String descriptor for the server instance"
msgstr "" msgstr ""
#: common/models.py:62 company/models.py:96 company/models.py:97 #: common/models.py:62 company/models.py:95 company/models.py:96
msgid "Company name" msgid "Company name"
msgstr "" msgstr ""
@ -1652,12 +1652,12 @@ msgstr ""
msgid "Supplied value must be a boolean" msgid "Supplied value must be a boolean"
msgstr "" msgstr ""
#: company/forms.py:37 company/models.py:139 #: company/forms.py:37 company/models.py:143
#: company/templates/company/detail.html:40 #: company/templates/company/detail.html:40
msgid "Currency" msgid "Currency"
msgstr "" msgstr ""
#: company/forms.py:38 company/models.py:141 #: company/forms.py:38 company/models.py:145
msgid "Default currency used for this company" msgid "Default currency used for this company"
msgstr "" msgstr ""
@ -1677,104 +1677,104 @@ msgstr ""
msgid "Single quantity price" msgid "Single quantity price"
msgstr "" msgstr ""
#: company/models.py:99 #: company/models.py:100
msgid "Company description" msgid "Company description"
msgstr "" msgstr ""
#: company/models.py:99 #: company/models.py:101
msgid "Description of the company" msgid "Description of the company"
msgstr "" msgstr ""
#: company/models.py:101 company/templates/company/company_base.html:70 #: company/models.py:105 company/templates/company/company_base.html:70
#: company/templates/company/detail.html:31 templates/js/company.js:60 #: company/templates/company/detail.html:31 templates/js/company.js:60
msgid "Website" msgid "Website"
msgstr "" msgstr ""
#: company/models.py:101 #: company/models.py:105
msgid "Company website URL" msgid "Company website URL"
msgstr "" msgstr ""
#: company/models.py:104 company/templates/company/company_base.html:77 #: company/models.py:108 company/templates/company/company_base.html:77
msgid "Address" msgid "Address"
msgstr "" msgstr ""
#: company/models.py:105 #: company/models.py:109
msgid "Company address" msgid "Company address"
msgstr "" msgstr ""
#: company/models.py:108 #: company/models.py:112
msgid "Phone number" msgid "Phone number"
msgstr "" msgstr ""
#: company/models.py:109 #: company/models.py:113
msgid "Contact phone number" msgid "Contact phone number"
msgstr "" msgstr ""
#: company/models.py:112 company/templates/company/company_base.html:91 #: company/models.py:116 company/templates/company/company_base.html:91
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: company/models.py:112 #: company/models.py:116
msgid "Contact email address" msgid "Contact email address"
msgstr "" msgstr ""
#: company/models.py:115 company/templates/company/company_base.html:98 #: company/models.py:119 company/templates/company/company_base.html:98
msgid "Contact" msgid "Contact"
msgstr "" msgstr ""
#: company/models.py:116 #: company/models.py:120
msgid "Point of contact" msgid "Point of contact"
msgstr "" msgstr ""
#: company/models.py:118 company/models.py:355 order/models.py:103 #: company/models.py:122 company/models.py:359 order/models.py:103
#: part/models.py:743 #: part/models.py:743
#: report/templates/report/inventree_build_order_base.html:165 #: report/templates/report/inventree_build_order_base.html:165
#: stock/models.py:1557 templates/js/company.js:208 templates/js/part.js:430 #: stock/models.py:1557 templates/js/company.js:208 templates/js/part.js:430
msgid "Link" msgid "Link"
msgstr "" msgstr ""
#: company/models.py:118 #: company/models.py:122
msgid "Link to external company information" msgid "Link to external company information"
msgstr "" msgstr ""
#: company/models.py:126 part/models.py:753 #: company/models.py:130 part/models.py:753
msgid "Image" msgid "Image"
msgstr "" msgstr ""
#: company/models.py:131 #: company/models.py:135
msgid "is customer" msgid "is customer"
msgstr "" msgstr ""
#: company/models.py:131 #: company/models.py:135
msgid "Do you sell items to this company?" msgid "Do you sell items to this company?"
msgstr "" msgstr ""
#: company/models.py:133 #: company/models.py:137
msgid "is supplier" msgid "is supplier"
msgstr "" msgstr ""
#: company/models.py:133 #: company/models.py:137
msgid "Do you purchase items from this company?" msgid "Do you purchase items from this company?"
msgstr "" msgstr ""
#: company/models.py:135 #: company/models.py:139
msgid "is manufacturer" msgid "is manufacturer"
msgstr "" msgstr ""
#: company/models.py:135 #: company/models.py:139
msgid "Does this company manufacture parts?" msgid "Does this company manufacture parts?"
msgstr "" msgstr ""
#: company/models.py:315 stock/models.py:371 #: company/models.py:319 stock/models.py:371
#: stock/templates/stock/item_base.html:220 #: stock/templates/stock/item_base.html:220
msgid "Base Part" msgid "Base Part"
msgstr "" msgstr ""
#: company/models.py:319 order/views.py:1372 #: company/models.py:323 order/views.py:1372
msgid "Select part" msgid "Select part"
msgstr "" msgstr ""
#: company/models.py:325 company/templates/company/detail.html:60 #: company/models.py:329 company/templates/company/detail.html:60
#: company/templates/company/supplier_part_base.html:83 #: company/templates/company/supplier_part_base.html:83
#: company/templates/company/supplier_part_detail.html:25 order/models.py:190 #: company/templates/company/supplier_part_detail.html:25 order/models.py:190
#: order/templates/order/order_base.html:92 #: order/templates/order/order_base.html:92
@ -1784,80 +1784,80 @@ msgstr ""
msgid "Supplier" msgid "Supplier"
msgstr "" msgstr ""
#: company/models.py:326 #: company/models.py:330
msgid "Select supplier" msgid "Select supplier"
msgstr "" msgstr ""
#: company/models.py:331 company/templates/company/supplier_part_base.html:87 #: company/models.py:335 company/templates/company/supplier_part_base.html:87
#: company/templates/company/supplier_part_detail.html:26 #: company/templates/company/supplier_part_detail.html:26
#: order/templates/order/purchase_order_detail.html:174 part/bom.py:171 #: order/templates/order/purchase_order_detail.html:174 part/bom.py:171
msgid "SKU" msgid "SKU"
msgstr "" msgstr ""
#: company/models.py:332 #: company/models.py:336
msgid "Supplier stock keeping unit" msgid "Supplier stock keeping unit"
msgstr "" msgstr ""
#: company/models.py:342 company/templates/company/detail.html:55 #: company/models.py:346 company/templates/company/detail.html:55
#: company/templates/company/supplier_part_base.html:93 #: company/templates/company/supplier_part_base.html:93
#: company/templates/company/supplier_part_detail.html:34 part/bom.py:172 #: company/templates/company/supplier_part_detail.html:34 part/bom.py:172
#: templates/js/company.js:44 templates/js/company.js:188 #: templates/js/company.js:44 templates/js/company.js:188
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
#: company/models.py:343 #: company/models.py:347
msgid "Select manufacturer" msgid "Select manufacturer"
msgstr "" msgstr ""
#: company/models.py:349 company/templates/company/supplier_part_base.html:99 #: company/models.py:353 company/templates/company/supplier_part_base.html:99
#: company/templates/company/supplier_part_detail.html:35 #: company/templates/company/supplier_part_detail.html:35
#: order/templates/order/purchase_order_detail.html:183 part/bom.py:173 #: order/templates/order/purchase_order_detail.html:183 part/bom.py:173
#: templates/js/company.js:204 #: templates/js/company.js:204
msgid "MPN" msgid "MPN"
msgstr "" msgstr ""
#: company/models.py:350 #: company/models.py:354
msgid "Manufacturer part number" msgid "Manufacturer part number"
msgstr "" msgstr ""
#: company/models.py:356 #: company/models.py:360
msgid "URL for external supplier part link" msgid "URL for external supplier part link"
msgstr "" msgstr ""
#: company/models.py:362 #: company/models.py:366
msgid "Supplier part description" msgid "Supplier part description"
msgstr "" msgstr ""
#: company/models.py:367 company/templates/company/supplier_part_base.html:113 #: company/models.py:371 company/templates/company/supplier_part_base.html:113
#: company/templates/company/supplier_part_detail.html:38 part/models.py:2170 #: company/templates/company/supplier_part_detail.html:38 part/models.py:2170
#: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93 #: report/templates/report/inventree_so_report.html:93
msgid "Note" msgid "Note"
msgstr "" msgstr ""
#: company/models.py:371 #: company/models.py:375
msgid "base cost" msgid "base cost"
msgstr "" msgstr ""
#: company/models.py:371 #: company/models.py:375
msgid "Minimum charge (e.g. stocking fee)" msgid "Minimum charge (e.g. stocking fee)"
msgstr "" msgstr ""
#: company/models.py:373 company/templates/company/supplier_part_base.html:106 #: company/models.py:377 company/templates/company/supplier_part_base.html:106
#: stock/models.py:395 stock/templates/stock/item_base.html:295 #: stock/models.py:395 stock/templates/stock/item_base.html:295
#: templates/js/stock.js:663 #: templates/js/stock.js:667
msgid "Packaging" msgid "Packaging"
msgstr "" msgstr ""
#: company/models.py:373 #: company/models.py:377
msgid "Part packaging" msgid "Part packaging"
msgstr "" msgstr ""
#: company/models.py:375 #: company/models.py:379
msgid "multiple" msgid "multiple"
msgstr "" msgstr ""
#: company/models.py:375 #: company/models.py:379
msgid "Order multiple" msgid "Order multiple"
msgstr "" msgstr ""
@ -1950,7 +1950,7 @@ msgstr ""
#: company/templates/company/detail_part.html:21 #: company/templates/company/detail_part.html:21
#: order/templates/order/purchase_order_detail.html:74 #: order/templates/order/purchase_order_detail.html:74
#: part/templates/part/supplier.html:17 templates/js/stock.js:1082 #: part/templates/part/supplier.html:17 templates/js/stock.js:1086
msgid "New Supplier Part" msgid "New Supplier Part"
msgstr "" msgstr ""
@ -1974,7 +1974,7 @@ msgstr ""
#: company/templates/company/detail_part.html:66 #: company/templates/company/detail_part.html:66
#: part/templates/part/bom.html:159 part/templates/part/category.html:118 #: part/templates/part/bom.html:159 part/templates/part/category.html:118
#: templates/js/stock.js:1076 #: templates/js/stock.js:1080
msgid "New Part" msgid "New Part"
msgstr "" msgstr ""
@ -2029,14 +2029,14 @@ msgstr ""
#: part/templates/part/category_partlist.html:10 #: part/templates/part/category_partlist.html:10
#: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113 #: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113
#: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23 #: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23
#: templates/stats.html:35 templates/stats.html:44 users/models.py:38 #: templates/stats.html:48 templates/stats.html:57 users/models.py:38
msgid "Parts" msgid "Parts"
msgstr "" msgstr ""
#: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33 #: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33
#: stock/templates/stock/location.html:100 #: stock/templates/stock/location.html:100
#: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182 #: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182
#: templates/stats.html:48 templates/stats.html:57 users/models.py:40 #: templates/stats.html:61 templates/stats.html:70 users/models.py:40
msgid "Stock Items" msgid "Stock Items"
msgstr "" msgstr ""
@ -2048,7 +2048,7 @@ msgstr ""
#: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180 #: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180
#: templates/InvenTree/search.html:216 #: templates/InvenTree/search.html:216
#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:172 #: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:172
#: templates/js/part.js:397 templates/js/stock.js:559 templates/navbar.html:26 #: templates/js/part.js:397 templates/js/stock.js:563 templates/navbar.html:26
msgid "Stock" msgid "Stock"
msgstr "" msgstr ""
@ -2059,7 +2059,7 @@ msgstr ""
#: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13 #: order/templates/order/sales_orders.html:13
#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95 #: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95
#: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:226 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:227
#: templates/InvenTree/search.html:330 #: templates/InvenTree/search.html:330
#: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
#: users/models.py:43 #: users/models.py:43
@ -2071,7 +2071,7 @@ msgstr ""
#: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13 #: order/templates/order/purchase_orders.html:13
#: part/templates/part/navbar.html:78 part/templates/part/navbar.html:81 #: part/templates/part/navbar.html:78 part/templates/part/navbar.html:81
#: part/templates/part/orders.html:10 templates/InvenTree/index.html:203 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:204
#: templates/InvenTree/search.html:300 #: templates/InvenTree/search.html:300
#: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
#: users/models.py:42 #: users/models.py:42
@ -2263,7 +2263,7 @@ msgstr ""
msgid "Edit Supplier Part" msgid "Edit Supplier Part"
msgstr "" msgstr ""
#: company/views.py:378 templates/js/stock.js:1083 #: company/views.py:378 templates/js/stock.js:1087
msgid "Create new Supplier Part" msgid "Create new Supplier Part"
msgstr "" msgstr ""
@ -2713,8 +2713,8 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:45 #: order/templates/order/purchase_order_detail.html:45
#: order/templates/order/purchase_order_detail.html:125 #: order/templates/order/purchase_order_detail.html:125
#: part/templates/part/category.html:197 part/templates/part/category.html:239 #: part/templates/part/category.html:197 part/templates/part/category.html:239
#: stock/templates/stock/location.html:191 templates/js/stock.js:704 #: stock/templates/stock/location.html:191 templates/js/stock.js:708
#: templates/js/stock.js:1088 #: templates/js/stock.js:1092
msgid "New Location" msgid "New Location"
msgstr "" msgstr ""
@ -3242,7 +3242,7 @@ msgstr ""
#: part/models.py:83 part/templates/part/category.html:19 #: part/models.py:83 part/templates/part/category.html:19
#: part/templates/part/category.html:90 part/templates/part/category.html:141 #: part/templates/part/category.html:90 part/templates/part/category.html:141
#: templates/InvenTree/search.html:126 templates/stats.html:39 #: templates/InvenTree/search.html:126 templates/stats.html:52
#: users/models.py:37 #: users/models.py:37
msgid "Part Categories" msgid "Part Categories"
msgstr "" msgstr ""
@ -3675,7 +3675,7 @@ msgid "All selected BOM items will be deleted"
msgstr "" msgstr ""
#: part/templates/part/bom.html:160 part/views.py:584 #: part/templates/part/bom.html:160 part/views.py:584
#: templates/js/stock.js:1077 #: templates/js/stock.js:1081
msgid "Create New Part" msgid "Create New Part"
msgstr "" msgstr ""
@ -3844,7 +3844,7 @@ msgid "Export Data"
msgstr "" msgstr ""
#: part/templates/part/category.html:198 #: part/templates/part/category.html:198
#: stock/templates/stock/location.html:192 templates/js/stock.js:705 #: stock/templates/stock/location.html:192 templates/js/stock.js:709
msgid "Create new location" msgid "Create new location"
msgstr "" msgstr ""
@ -4085,7 +4085,7 @@ msgid "Edit"
msgstr "" msgstr ""
#: part/templates/part/params.html:44 part/templates/part/related.html:44 #: part/templates/part/params.html:44 part/templates/part/related.html:44
#: part/templates/part/supplier.html:22 stock/views.py:1002 users/models.py:175 #: part/templates/part/supplier.html:22 stock/views.py:1002 users/models.py:182
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@ -4628,7 +4628,7 @@ msgid "Result"
msgstr "" msgstr ""
#: report/templates/report/inventree_test_report_base.html:92 #: report/templates/report/inventree_test_report_base.html:92
#: templates/js/order.js:195 templates/js/stock.js:905 #: templates/js/order.js:195 templates/js/stock.js:909
msgid "Date" msgid "Date"
msgstr "" msgstr ""
@ -4651,7 +4651,7 @@ msgid "Moved {n} parts to {loc}"
msgstr "" msgstr ""
#: stock/forms.py:114 stock/forms.py:406 stock/models.py:473 #: stock/forms.py:114 stock/forms.py:406 stock/models.py:473
#: stock/templates/stock/item_base.html:349 templates/js/stock.js:652 #: stock/templates/stock/item_base.html:349 templates/js/stock.js:656
msgid "Expiry Date" msgid "Expiry Date"
msgstr "" msgstr ""
@ -5085,11 +5085,11 @@ msgid "Remove stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:169 #: stock/templates/stock/item_base.html:169
msgid "Transfer stock" msgid "Serialize stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:172 #: stock/templates/stock/item_base.html:173
msgid "Serialize stock" msgid "Transfer stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:176 #: stock/templates/stock/item_base.html:176
@ -5100,7 +5100,7 @@ msgstr ""
msgid "Return to stock" msgid "Return to stock"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:183 templates/js/stock.js:1218 #: stock/templates/stock/item_base.html:183 templates/js/stock.js:1222
msgid "Uninstall stock item" msgid "Uninstall stock item"
msgstr "" msgstr ""
@ -5153,7 +5153,7 @@ msgstr ""
msgid "This StockItem expires on" msgid "This StockItem expires on"
msgstr "" msgstr ""
#: stock/templates/stock/item_base.html:362 templates/js/stock.js:658 #: stock/templates/stock/item_base.html:362 templates/js/stock.js:662
msgid "Last Updated" msgid "Last Updated"
msgstr "" msgstr ""
@ -5266,7 +5266,7 @@ msgid "Stock Details"
msgstr "" msgstr ""
#: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263 #: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263
#: templates/stats.html:52 users/models.py:39 #: templates/stats.html:65 users/models.py:39
msgid "Stock Locations" msgid "Stock Locations"
msgstr "" msgstr ""
@ -5451,7 +5451,7 @@ msgstr ""
msgid "Add Stock Items" msgid "Add Stock Items"
msgstr "" msgstr ""
#: stock/views.py:1001 users/models.py:171 #: stock/views.py:1001 users/models.py:178
msgid "Add" msgid "Add"
msgstr "" msgstr ""
@ -5581,35 +5581,35 @@ msgstr ""
msgid "Recently Updated" msgid "Recently Updated"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:143 #: templates/InvenTree/index.html:144
msgid "Expired Stock" msgid "Expired Stock"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:144 #: templates/InvenTree/index.html:145
msgid "Stale Stock" msgid "Stale Stock"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:182 #: templates/InvenTree/index.html:183
msgid "Build Orders In Progress" msgid "Build Orders In Progress"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:183 #: templates/InvenTree/index.html:184
msgid "Overdue Build Orders" msgid "Overdue Build Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:204 #: templates/InvenTree/index.html:205
msgid "Outstanding Purchase Orders" msgid "Outstanding Purchase Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:205 #: templates/InvenTree/index.html:206
msgid "Overdue Purchase Orders" msgid "Overdue Purchase Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:227 #: templates/InvenTree/index.html:228
msgid "Outstanding Sales Orders" msgid "Outstanding Sales Orders"
msgstr "" msgstr ""
#: templates/InvenTree/index.html:228 #: templates/InvenTree/index.html:229
msgid "Overdue Sales Orders" msgid "Overdue Sales Orders"
msgstr "" msgstr ""
@ -5621,11 +5621,11 @@ msgstr ""
msgid "Enter a search query" msgid "Enter a search query"
msgstr "" msgstr ""
#: templates/InvenTree/search.html:252 templates/js/stock.js:301 #: templates/InvenTree/search.html:252 templates/js/stock.js:300
msgid "Shipped to customer" msgid "Shipped to customer"
msgstr "" msgstr ""
#: templates/InvenTree/search.html:255 templates/js/stock.js:311 #: templates/InvenTree/search.html:255 templates/js/stock.js:310
msgid "No stock location set" msgid "No stock location set"
msgstr "" msgstr ""
@ -5700,7 +5700,7 @@ msgid "Edit setting"
msgstr "" msgstr ""
#: templates/InvenTree/settings/settings.html:7 #: templates/InvenTree/settings/settings.html:7
#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:76 #: templates/InvenTree/settings/settings.html:13 templates/navbar.html:78
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
@ -5797,30 +5797,38 @@ msgid "InvenTree Version"
msgstr "" msgstr ""
#: templates/about.html:26 #: templates/about.html:26
msgid "Django Version" msgid "Up to Date"
msgstr "" msgstr ""
#: templates/about.html:30 #: templates/about.html:28
msgid "Commit Hash" msgid "Update Available"
msgstr "" msgstr ""
#: templates/about.html:34 #: templates/about.html:34
msgid "Commit Date" msgid "Django Version"
msgstr "" msgstr ""
#: templates/about.html:38 #: templates/about.html:41
msgid "InvenTree Documentation" msgid "Commit Hash"
msgstr ""
#: templates/about.html:43
msgid "View Code on GitHub"
msgstr "" msgstr ""
#: templates/about.html:48 #: templates/about.html:48
msgid "Get the App" msgid "Commit Date"
msgstr "" msgstr ""
#: templates/about.html:53 #: templates/about.html:53
msgid "InvenTree Documentation"
msgstr ""
#: templates/about.html:58
msgid "View Code on GitHub"
msgstr ""
#: templates/about.html:63
msgid "Get the App"
msgstr ""
#: templates/about.html:68
msgid "Submit Bug Report" msgid "Submit Bug Report"
msgstr "" msgstr ""
@ -6018,8 +6026,8 @@ msgstr ""
msgid "No builds matching query" msgid "No builds matching query"
msgstr "" msgstr ""
#: templates/js/build.js:649 templates/js/part.js:323 templates/js/stock.js:512 #: templates/js/build.js:649 templates/js/part.js:323 templates/js/stock.js:511
#: templates/js/stock.js:1250 #: templates/js/stock.js:1254
msgid "Select" msgid "Select"
msgstr "" msgstr ""
@ -6371,115 +6379,115 @@ msgstr ""
msgid "Test Date" msgid "Test Date"
msgstr "" msgstr ""
#: templates/js/stock.js:293 #: templates/js/stock.js:292
msgid "In production" msgid "In production"
msgstr "" msgstr ""
#: templates/js/stock.js:297 #: templates/js/stock.js:296
msgid "Installed in Stock Item" msgid "Installed in Stock Item"
msgstr "" msgstr ""
#: templates/js/stock.js:305 #: templates/js/stock.js:304
msgid "Assigned to Sales Order" msgid "Assigned to Sales Order"
msgstr "" msgstr ""
#: templates/js/stock.js:337 #: templates/js/stock.js:336
msgid "No stock items matching query" msgid "No stock items matching query"
msgstr "" msgstr ""
#: templates/js/stock.js:479 #: templates/js/stock.js:478
msgid "Undefined location" msgid "Undefined location"
msgstr "" msgstr ""
#: templates/js/stock.js:575 #: templates/js/stock.js:579
msgid "Stock item is in production" msgid "Stock item is in production"
msgstr "" msgstr ""
#: templates/js/stock.js:580 #: templates/js/stock.js:584
msgid "Stock item assigned to sales order" msgid "Stock item assigned to sales order"
msgstr "" msgstr ""
#: templates/js/stock.js:583 #: templates/js/stock.js:587
msgid "Stock item assigned to customer" msgid "Stock item assigned to customer"
msgstr "" msgstr ""
#: templates/js/stock.js:587 #: templates/js/stock.js:591
msgid "Stock item has expired" msgid "Stock item has expired"
msgstr "" msgstr ""
#: templates/js/stock.js:589 #: templates/js/stock.js:593
msgid "Stock item will expire soon" msgid "Stock item will expire soon"
msgstr "" msgstr ""
#: templates/js/stock.js:593 #: templates/js/stock.js:597
msgid "Stock item has been allocated" msgid "Stock item has been allocated"
msgstr "" msgstr ""
#: templates/js/stock.js:597 #: templates/js/stock.js:601
msgid "Stock item has been installed in another item" msgid "Stock item has been installed in another item"
msgstr "" msgstr ""
#: templates/js/stock.js:605 #: templates/js/stock.js:609
msgid "Stock item has been rejected" msgid "Stock item has been rejected"
msgstr "" msgstr ""
#: templates/js/stock.js:609 #: templates/js/stock.js:613
msgid "Stock item is lost" msgid "Stock item is lost"
msgstr "" msgstr ""
#: templates/js/stock.js:612 #: templates/js/stock.js:616
msgid "Stock item is destroyed" msgid "Stock item is destroyed"
msgstr "" msgstr ""
#: templates/js/stock.js:616 templates/js/table_filters.js:116 #: templates/js/stock.js:620 templates/js/table_filters.js:116
msgid "Depleted" msgid "Depleted"
msgstr "" msgstr ""
#: templates/js/stock.js:645 #: templates/js/stock.js:649
msgid "Stocktake" msgid "Stocktake"
msgstr "" msgstr ""
#: templates/js/stock.js:821 #: templates/js/stock.js:825
msgid "Stock Status" msgid "Stock Status"
msgstr "" msgstr ""
#: templates/js/stock.js:836 #: templates/js/stock.js:840
msgid "Set Stock Status" msgid "Set Stock Status"
msgstr "" msgstr ""
#: templates/js/stock.js:850 #: templates/js/stock.js:854
msgid "Select Status Code" msgid "Select Status Code"
msgstr "" msgstr ""
#: templates/js/stock.js:851 #: templates/js/stock.js:855
msgid "Status code must be selected" msgid "Status code must be selected"
msgstr "" msgstr ""
#: templates/js/stock.js:969 #: templates/js/stock.js:973
msgid "No user information" msgid "No user information"
msgstr "" msgstr ""
#: templates/js/stock.js:979 #: templates/js/stock.js:983
msgid "Edit tracking entry" msgid "Edit tracking entry"
msgstr "" msgstr ""
#: templates/js/stock.js:980 #: templates/js/stock.js:984
msgid "Delete tracking entry" msgid "Delete tracking entry"
msgstr "" msgstr ""
#: templates/js/stock.js:1089 #: templates/js/stock.js:1093
msgid "Create New Location" msgid "Create New Location"
msgstr "" msgstr ""
#: templates/js/stock.js:1188 #: templates/js/stock.js:1192
msgid "Serial" msgid "Serial"
msgstr "" msgstr ""
#: templates/js/stock.js:1281 templates/js/table_filters.js:149 #: templates/js/stock.js:1285 templates/js/table_filters.js:149
msgid "Installed" msgid "Installed"
msgstr "" msgstr ""
#: templates/js/stock.js:1306 #: templates/js/stock.js:1310
msgid "Install item" msgid "Install item"
msgstr "" msgstr ""
@ -6705,23 +6713,19 @@ msgstr ""
msgid "Scan Barcode" msgid "Scan Barcode"
msgstr "" msgstr ""
#: templates/navbar.html:63 #: templates/navbar.html:71 users/models.py:36
msgid "InvenTree server issues detected"
msgstr ""
#: templates/navbar.html:69 users/models.py:36
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: templates/navbar.html:71 templates/registration/logout.html:5 #: templates/navbar.html:73 templates/registration/logout.html:5
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: templates/navbar.html:73 templates/registration/login.html:89 #: templates/navbar.html:75 templates/registration/login.html:89
msgid "Login" msgid "Login"
msgstr "" msgstr ""
#: templates/navbar.html:85 #: templates/navbar.html:94
msgid "About InvenTree" msgid "About InvenTree"
msgstr "" msgstr ""
@ -6761,18 +6765,30 @@ msgstr ""
msgid "Instance Name" msgid "Instance Name"
msgstr "" msgstr ""
#: templates/stats.html:18 #: templates/stats.html:19
msgid "Server status" msgid "Server status"
msgstr "" msgstr ""
#: templates/stats.html:21 #: templates/stats.html:22
msgid "Healthy" msgid "Healthy"
msgstr "" msgstr ""
#: templates/stats.html:23 #: templates/stats.html:24
msgid "Issues detected" msgid "Issues detected"
msgstr "" msgstr ""
#: templates/stats.html:30
msgid "Background Worker"
msgstr ""
#: templates/stats.html:33
msgid "Operational"
msgstr ""
#: templates/stats.html:35
msgid "Not running"
msgstr ""
#: templates/stock_table.html:14 #: templates/stock_table.html:14
msgid "Export Stock Information" msgid "Export Stock Information"
msgstr "" msgstr ""
@ -6857,34 +6873,34 @@ msgstr ""
msgid "Important dates" msgid "Important dates"
msgstr "" msgstr ""
#: users/models.py:158 #: users/models.py:165
msgid "Permission set" msgid "Permission set"
msgstr "" msgstr ""
#: users/models.py:166 #: users/models.py:173
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: users/models.py:169 #: users/models.py:176
msgid "View" msgid "View"
msgstr "" msgstr ""
#: users/models.py:169 #: users/models.py:176
msgid "Permission to view items" msgid "Permission to view items"
msgstr "" msgstr ""
#: users/models.py:171 #: users/models.py:178
msgid "Permission to add items" msgid "Permission to add items"
msgstr "" msgstr ""
#: users/models.py:173 #: users/models.py:180
msgid "Change" msgid "Change"
msgstr "" msgstr ""
#: users/models.py:173 #: users/models.py:180
msgid "Permissions to edit items" msgid "Permissions to edit items"
msgstr "" msgstr ""
#: users/models.py:175 #: users/models.py:182
msgid "Permission to delete items" msgid "Permission to delete items"
msgstr "" msgstr ""

View File

@ -735,6 +735,15 @@ class PartParameterList(generics.ListCreateAPIView):
] ]
class PartParameterDetail(generics.RetrieveUpdateDestroyAPIView):
"""
API endpoint for detail view of a single PartParameter object
"""
queryset = PartParameter.objects.all()
serializer_class = part_serializers.PartParameterSerializer
class BomList(generics.ListCreateAPIView): class BomList(generics.ListCreateAPIView):
""" API endpoint for accessing a list of BomItem objects. """ API endpoint for accessing a list of BomItem objects.
@ -942,6 +951,8 @@ part_api_urls = [
# Base URL for PartParameter API endpoints # Base URL for PartParameter API endpoints
url(r'^parameter/', include([ url(r'^parameter/', include([
url(r'^template/$', PartParameterTemplateList.as_view(), name='api-part-param-template-list'), url(r'^template/$', PartParameterTemplateList.as_view(), name='api-part-param-template-list'),
url(r'^(?P<pk>\d+)/', PartParameterDetail.as_view(), name='api-part-param-detail'),
url(r'^.*$', PartParameterList.as_view(), name='api-part-param-list'), url(r'^.*$', PartParameterList.as_view(), name='api-part-param-list'),
])), ])),

View File

@ -33,6 +33,27 @@
template: 1 template: 1
data: 12 data: 12
- model: part.PartParameter
pk: 3
fields:
part: 3
template: 1
data: 12
- model: part.PartParameter
pk: 4
fields:
part: 3
template: 2
data: 12
- model: part.PartParameter
pk: 5
fields:
part: 3
template: 3
data: 12
# Add some template parameters to categories (requires category.yaml) # Add some template parameters to categories (requires category.yaml)
- model: part.PartCategoryParameterTemplate - model: part.PartCategoryParameterTemplate
pk: 1 pk: 1

View File

@ -325,3 +325,106 @@ class PartAPIAggregationTest(InvenTreeAPITestCase):
self.assertEqual(data['in_stock'], 1100) self.assertEqual(data['in_stock'], 1100)
self.assertEqual(data['stock_item_count'], 105) self.assertEqual(data['stock_item_count'], 105)
class PartParameterTest(InvenTreeAPITestCase):
"""
Tests for the ParParameter API
"""
superuser = True
fixtures = [
'category',
'part',
'location',
'params',
]
def setUp(self):
super().setUp()
def test_list_params(self):
"""
Test for listing part parameters
"""
url = reverse('api-part-param-list')
response = self.client.get(url, format='json')
self.assertEqual(len(response.data), 5)
# Filter by part
response = self.client.get(
url,
{
'part': 3,
},
format='json'
)
self.assertEqual(len(response.data), 3)
# Filter by template
response = self.client.get(
url,
{
'template': 1,
},
format='json',
)
self.assertEqual(len(response.data), 3)
def test_create_param(self):
"""
Test that we can create a param via the API
"""
url = reverse('api-part-param-list')
response = self.client.post(
url,
{
'part': '2',
'template': '3',
'data': 70
}
)
self.assertEqual(response.status_code, 201)
response = self.client.get(url, format='json')
self.assertEqual(len(response.data), 6)
def test_param_detail(self):
"""
Tests for the PartParameter detail endpoint
"""
url = reverse('api-part-param-detail', kwargs={'pk': 5})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
data = response.data
self.assertEqual(data['pk'], 5)
self.assertEqual(data['part'], 3)
self.assertEqual(data['data'], '12')
# PATCH data back in
response = self.client.patch(url, {'data': '15'}, format='json')
self.assertEqual(response.status_code, 200)
# Check that the data changed!
response = self.client.get(url, format='json')
data = response.data
self.assertEqual(data['data'], '15')

View File

@ -0,0 +1,59 @@
{% load static %}
{% load i18n %}
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- CSS -->
<link rel="stylesheet" href="{% static 'css/bootstrap_3.3.7_css_bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
<link rel="stylesheet" href="{% static 'css/bootstrap-table.css' %}">
<link rel="stylesheet" href="{% static 'css/inventree.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/brands.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/solid.css' %}">
<script type='text/javascript' src="{% static 'fontawesome/js/solid.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/brands.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/fontawesome.js' %}"></script>
<style>
.login-error {
color: #F88;
}
</style>
<title>
InvenTree
</title>
</head>
<body class='login-screen'>
<div class='main body-wrapper login-screen'>
<div class='login-container'>
<div class="row">
<div class='container-fluid'>
<div class='clearfix content-heading login-header'>
<img class="pull-left" src="{% static 'img/inventree.png' %}" width="60" height="60"/>
<span><h3>InvenTree</h3></span>
</div>
<hr>
<div class='container-fluid'>
<p>{% trans "You have been logged out" %}</p>
<p><a href='{% url "login" %}'>{% trans "Return to login screen" %}</a></p>
</div>
</div>
</div>
</div>
</div>
</body>

View File

@ -89,7 +89,12 @@
<button class='pull-right btn btn-primary login-button' type="submit">{% trans "Login" %}</button> <button class='pull-right btn btn-primary login-button' type="submit">{% trans "Login" %}</button>
</form> </form>
{% if email_configured %}
<hr><br>
<p>{% trans "Forgotten your password?" %} - <a href='{% url "password_reset" %}'>{% trans "Click here to reset" %}</a></p>
</div> </div>
{% endif %}
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,8 +0,0 @@
{% extends "base.html" %}
{% load i18n %}
{% block content %}
<h4>{% trans "Logout" %}</h4>
<p>{% trans "You have been logged out" %}</p>
<p>{% trans 'Click' %} <a href="{% url 'login' %}"> {% trans 'here</a> to log in</p>' %}
{% endblock %}

View File

@ -0,0 +1,59 @@
{% load static %}
{% load i18n %}
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- CSS -->
<link rel="stylesheet" href="{% static 'css/bootstrap_3.3.7_css_bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
<link rel="stylesheet" href="{% static 'css/bootstrap-table.css' %}">
<link rel="stylesheet" href="{% static 'css/inventree.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/brands.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/solid.css' %}">
<script type='text/javascript' src="{% static 'fontawesome/js/solid.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/brands.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/fontawesome.js' %}"></script>
<style>
.login-error {
color: #F88;
}
</style>
<title>
InvenTree
</title>
</head>
<body class='login-screen'>
<div class='main body-wrapper login-screen'>
<div class='login-container'>
<div class="row">
<div class='container-fluid'>
<div class='clearfix content-heading login-header'>
<img class="pull-left" src="{% static 'img/inventree.png' %}" width="60" height="60"/>
<span><h3>InvenTree</h3></span>
</div>
<hr>
<div class='container-fluid'>
<p>{% trans "Password reset complete" %}</p>
<p><a href='{% url "login" %}'>{% trans "Return to login screen" %}</a></p>
</div>
</div>
</div>
</div>
</div>
</body>

View File

@ -0,0 +1,69 @@
{% load static %}
{% load i18n %}
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- CSS -->
<link rel="stylesheet" href="{% static 'css/bootstrap_3.3.7_css_bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
<link rel="stylesheet" href="{% static 'css/bootstrap-table.css' %}">
<link rel="stylesheet" href="{% static 'css/inventree.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/brands.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/solid.css' %}">
<script type='text/javascript' src="{% static 'fontawesome/js/solid.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/brands.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/fontawesome.js' %}"></script>
<style>
.login-error {
color: #F88;
}
</style>
<title>
InvenTree
</title>
</head>
<body class='login-screen'>
<div class='main body-wrapper login-screen'>
<div class='login-container'>
<div class="row">
<div class='container-fluid'>
<div class='clearfix content-heading login-header'>
<img class="pull-left" src="{% static 'img/inventree.png' %}" width="60" height="60"/>
<span><h3>InvenTree</h3></span>
</div>
<hr>
<div class='container-fluid'>
{% if validlink %}
<h3>{% trans "Change password" %}</h3>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button class="btn btn-primary" type="submit">{% trans "Change password" %}</button>
</form>
{% else %}
<p>
{% trans "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}
</p>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</body>

View File

@ -0,0 +1,65 @@
{% load static %}
{% load i18n %}
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- CSS -->
<link rel="stylesheet" href="{% static 'css/bootstrap_3.3.7_css_bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
<link rel="stylesheet" href="{% static 'css/bootstrap-table.css' %}">
<link rel="stylesheet" href="{% static 'css/inventree.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/brands.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/solid.css' %}">
<script type='text/javascript' src="{% static 'fontawesome/js/solid.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/brands.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/fontawesome.js' %}"></script>
<style>
.login-error {
color: #F88;
}
</style>
<title>
InvenTree
</title>
</head>
<body class='login-screen'>
<div class='main body-wrapper login-screen'>
<div class='login-container'>
<div class="row">
<div class='container-fluid'>
<div class='clearfix content-heading login-header'>
<img class="pull-left" src="{% static 'img/inventree.png' %}" width="60" height="60"/>
<span><h3>InvenTree</h3></span>
</div>
<hr>
<div class='container-fluid'>
<p>
{% trans "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly." %}
</p>
<p>
{% trans "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." %}
</p>
<hr>
<a href='{% url "login" %}'>{% trans "Return to login screen" %}</a>
</div>
</div>
</div>
</div>
</div>
</body>

View File

@ -0,0 +1,68 @@
{% load static %}
{% load i18n %}
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- CSS -->
<link rel="stylesheet" href="{% static 'css/bootstrap_3.3.7_css_bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
<link rel="stylesheet" href="{% static 'css/bootstrap-table.css' %}">
<link rel="stylesheet" href="{% static 'css/inventree.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/brands.css' %}">
<link rel="stylesheet" href="{% static 'fontawesome/css/solid.css' %}">
<script type='text/javascript' src="{% static 'fontawesome/js/solid.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/brands.js' %}"></script>
<script type='text/javascript' src="{% static 'fontawesome/js/fontawesome.js' %}"></script>
<style>
.login-error {
color: #F88;
}
</style>
<title>
InvenTree
</title>
</head>
<body class='login-screen'>
<div class='main body-wrapper login-screen'>
<div class='login-container'>
<div class="row">
<div class='container-fluid'>
<div class='clearfix content-heading login-header'>
<img class="pull-left" src="{% static 'img/inventree.png' %}" width="60" height="60"/>
<span><h3>InvenTree</h3></span>
</div>
<hr>
<div class='container-fluid'>
<p>{% trans "Forgotten your password?" %}</p>
<p>{% trans "Enter your email address below." %}</p>
<p>{% trans "An email will be sent with password reset instructions." %}</p>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button class="btn btn-primary" type="submit">{% trans "Send email" %}</button>
</form>
</div>
</div>
</div>
</div>
</div>
</body>

View File

@ -25,18 +25,29 @@
{% endif %} {% endif %}
</td> </td>
</tr> </tr>
{% if not django_q_running %}
<tr> <tr>
<td><span class='fas fa-tasks'></span></td> <td><span class='fas fa-tasks'></span></td>
<td>{% trans "Background Worker" %}</td> <td>{% trans "Background Worker" %}</td>
<td> <td>
{% if django_q_running %} <a href='https://inventree.readthedocs.io/en/latest/admin/tasks'>
<span class='label label-green'>{% trans "Operational" %}</span> <span class='label label-red'>{% trans "Background worker not running" %}</span>
{% else %} </a>
<span class='label label-red'>{% trans "Not running" %}</span>
{% endif %}
</td> </td>
</tr> </tr>
{% endif %} {% endif %}
{% if not email_configured %}
<tr>
<td><span class='fas fa-envelope'></span></td>
<td>{% trans "Email Settings" %}</td>
<td>
<a href='https://inventree.readthedocs.io/en/latest/admin/email'>
<span class='label label-red'>{% trans "Email settings not configured" %}</span>
</a>
</td>
</tr>
{% endif %}
{% endif %}
{% if not system_healthy %} {% if not system_healthy %}
{% for issue in system_issues %} {% for issue in system_issues %}

View File

@ -1,5 +1,5 @@
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Docker Pulls](https://img.shields.io/docker/pulls/inventree/inventree)](https://hub.docker.com/inventree/inventree) [![Docker Pulls](https://img.shields.io/docker/pulls/inventree/inventree)](https://hub.docker.com/r/inventree/inventree)
[![Coverage Status](https://coveralls.io/repos/github/inventree/InvenTree/badge.svg)](https://coveralls.io/github/inventree/InvenTree) [![Coverage Status](https://coveralls.io/repos/github/inventree/InvenTree/badge.svg)](https://coveralls.io/github/inventree/InvenTree)
![PEP](https://github.com/inventree/inventree/actions/workflows/style.yaml/badge.svg) ![PEP](https://github.com/inventree/inventree/actions/workflows/style.yaml/badge.svg)
![Docker Build](https://github.com/inventree/inventree/actions/workflows/docker_build.yaml/badge.svg) ![Docker Build](https://github.com/inventree/inventree/actions/workflows/docker_build.yaml/badge.svg)