Merge branch 'master' of https://github.com/inventree/InvenTree into price-history

This commit is contained in:
Matthias 2021-04-26 21:48:42 +02:00
commit f4502aecca
43 changed files with 9524 additions and 3519 deletions

View File

@ -32,6 +32,7 @@ jobs:
sudo apt-get install gettext
pip3 install invoke
invoke install
invoke static
- name: Coverage Tests
run: |
invoke coverage
@ -43,6 +44,7 @@ jobs:
rm test_db.sqlite
invoke migrate
invoke import-records -f data.json
invoke import-records -f data.json
- name: Test Translations
run: invoke translate
- name: Check Migration Files

View File

@ -15,6 +15,10 @@ jobs:
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to Dockerhub
uses: docker/login-action@v1
with:
@ -24,6 +28,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: ./docker
platforms: linux/amd64,linux/arm64,linux/arm/v7
push: true
repository: inventree/inventree
tags: inventree/inventree:latest

View File

@ -13,6 +13,10 @@ jobs:
steps:
- name: Check out repo
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: cd
run: |
cd docker
@ -23,4 +27,5 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }}
repository: inventree/inventree
tag_with_ref: true
dockerfile: ./Dockerfile
dockerfile: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7

View File

@ -48,4 +48,13 @@ jobs:
pip3 install mysqlclient
invoke install
- name: Run Tests
run: invoke test
run: invoke test
- name: Data Import Export
run: |
invoke migrate
python3 ./InvenTree/manage.py flush --noinput
invoke import-fixtures
invoke export-records -f data.json
python3 ./InvenTree/manage.py flush --noinput
invoke import-records -f data.json
invoke import-records -f data.json

View File

@ -44,4 +44,13 @@ jobs:
pip3 install psycopg2
invoke install
- name: Run Tests
run: invoke test
run: invoke test
- name: Data Import Export
run: |
invoke migrate
python3 ./InvenTree/manage.py flush --noinput
invoke import-fixtures
invoke export-records -f data.json
python3 ./InvenTree/manage.py flush --noinput
invoke import-records -f data.json
invoke import-records -f data.json

61
.github/workflows/translations.yml vendored Normal file
View File

@ -0,0 +1,61 @@
name: Update Translation Files
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
INVENTREE_DB_NAME: './test_db.sqlite'
INVENTREE_DB_ENGINE: django.db.backends.sqlite3
INVENTREE_DEBUG: info
INVENTREE_MEDIA_ROOT: ./media
INVENTREE_STATIC_ROOT: ./static
steps:
- uses: actions/checkout@v2
- name: Get Current Translations
run: |
git fetch
git checkout origin/l10 -- `git ls-tree origin/l10 -r --name-only | grep ".po"`
git reset
- name: Set up Python 3.7
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y gettext
pip3 install invoke
invoke install
- name: Make Translations
run: |
invoke translate
- name: stash changes
run: |
git stash
- name: Checkout Translation Branch
uses: actions/checkout@v2.3.4
with:
ref: l10
- name: Commit files
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout stash -- .
git reset
git add "*.po"
git commit -m "updated translation base"
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: l10

5
.gitignore vendored
View File

@ -45,6 +45,11 @@ static_i18n
# Local config file
config.yaml
# Default data file
data.json
*.json.tmp
*.tmp.json
# Key file
secret_key.txt

View File

@ -5,6 +5,7 @@ import logging
from django.apps import AppConfig
from django.core.exceptions import AppRegistryNotReady
from InvenTree.ready import canAppAccessDatabase
import InvenTree.tasks
@ -16,7 +17,8 @@ class InvenTreeConfig(AppConfig):
def ready(self):
self.start_background_tasks()
if canAppAccessDatabase():
self.start_background_tasks()
def start_background_tasks(self):

View File

@ -0,0 +1,35 @@
import sys
def canAppAccessDatabase():
"""
Returns True if the apps.py file can access database records.
There are some circumstances where we don't want the ready function in apps.py
to touch the database
"""
# If any of the following management commands are being executed,
# prevent custom "on load" code from running!
excluded_commands = [
'flush',
'loaddata',
'dumpdata',
'makemirations',
'migrate',
'check',
'mediarestore',
'shell',
'createsuperuser',
'wait_for_db',
'prerender',
'collectstatic',
'makemessages',
'compilemessages',
]
for cmd in excluded_commands:
if cmd in sys.argv:
return False
return True

View File

@ -17,7 +17,6 @@ import random
import string
import shutil
import sys
import tempfile
from datetime import datetime
import yaml
@ -250,7 +249,6 @@ INSTALLED_APPS = [
# Third part add-ons
'django_filters', # Extended filter functionality
'dbbackup', # Database backup / restore
'rest_framework', # DRF (Django Rest Framework)
'rest_framework.authtoken', # Token authentication for API
'corsheaders', # Cross-origin Resource Sharing for DRF
@ -512,8 +510,8 @@ EXCHANGE_BACKEND = 'InvenTree.exchange.InvenTreeManualExchangeBackend'
email_config = CONFIG.get('email', {})
EMAIL_BACKEND = get_setting(
'django.core.mail.backends.smtp.EmailBackend',
email_config.get('backend', '')
'INVENTREE_EMAIL_BACKEND',
email_config.get('backend', 'django.core.mail.backends.smtp.EmailBackend')
)
# Email backend settings
@ -537,6 +535,11 @@ EMAIL_HOST_PASSWORD = get_setting(
email_config.get('password', ''),
)
DEFAULT_FROM_EMAIL = get_setting(
'INVENTREE_EMAIL_SENDER',
email_config.get('sender', ''),
)
EMAIL_SUBJECT_PREFIX = '[InvenTree] '
EMAIL_USE_LOCALTIME = False
@ -581,17 +584,6 @@ CRISPY_TEMPLATE_PACK = 'bootstrap3'
# Use database transactions when importing / exporting data
IMPORT_EXPORT_USE_TRANSACTIONS = True
BACKUP_DIR = get_setting(
'INVENTREE_BACKUP_DIR',
CONFIG.get('backup_dir', tempfile.gettempdir()),
)
# Settings for dbbsettings app
DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage'
DBBACKUP_STORAGE_OPTIONS = {
'location': BACKUP_DIR,
}
# Internal IP addresses allowed to see the debug toolbar
INTERNAL_IPS = [
'127.0.0.1',

View File

@ -3,11 +3,14 @@ from __future__ import unicode_literals
import os
import logging
from PIL import UnidentifiedImageError
from django.apps import AppConfig
from django.db.utils import OperationalError, ProgrammingError
from django.conf import settings
from PIL import UnidentifiedImageError
from InvenTree.ready import canAppAccessDatabase
logger = logging.getLogger("inventree")
@ -20,7 +23,8 @@ class CompanyConfig(AppConfig):
This function is called whenever the Company app is loaded.
"""
self.generate_company_thumbs()
if canAppAccessDatabase():
self.generate_company_thumbs()
def generate_company_thumbs(self):

View File

@ -85,6 +85,7 @@ email:
port: 25
username: ''
password: ''
sender: ''
tls: False
ssl: False
@ -137,12 +138,6 @@ static_root: '/home/inventree/static'
# - git
# - ssh
# Backup options
# Set the backup_dir parameter to store backup files in a specific location
# If unspecified, the local user's temp directory will be used
# Use environment variable INVENTREE_BACKUP_DIR
backup_dir: '/home/inventree/data/backup/'
# Permit custom authentication backends
#authentication_backends:
# - 'django.contrib.auth.backends.ModelBackend'
@ -158,4 +153,4 @@ backup_dir: '/home/inventree/data/backup/'
# - 'django.contrib.auth.middleware.AuthenticationMiddleware'
# - 'django.contrib.messages.middleware.MessageMiddleware'
# - 'django.middleware.clickjacking.XFrameOptionsMiddleware'
# - 'InvenTree.middleware.AuthRequiredMiddleware'
# - 'InvenTree.middleware.AuthRequiredMiddleware'

View File

@ -6,6 +6,8 @@ import hashlib
from django.apps import AppConfig
from django.conf import settings
from InvenTree.ready import canAppAccessDatabase
logger = logging.getLogger("inventree")
@ -32,8 +34,9 @@ class LabelConfig(AppConfig):
This function is called whenever the label app is loaded
"""
self.create_stock_item_labels()
self.create_stock_location_labels()
if canAppAccessDatabase():
self.create_stock_item_labels()
self.create_stock_location_labels()
def create_stock_item_labels(self):
"""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,12 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-21 17:15+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"POT-Creation-Date: 2021-04-21 09:17+0000\n"
"PO-Revision-Date: 2021-04-21 09:33\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -34,8 +28,8 @@ msgstr ""
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:110 build/forms.py:101 build/forms.py:122
#: build/forms.py:144 build/forms.py:168 build/forms.py:184 build/forms.py:226
#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
#: order/forms.py:71 part/forms.py:134
msgid "Confirm"
@ -359,15 +353,15 @@ msgstr ""
msgid "Barcode associated with StockItem"
msgstr ""
#: build/forms.py:36
#: build/forms.py:37
msgid "Build Order reference"
msgstr ""
#: build/forms.py:37
#: build/forms.py:38
msgid "Order target date"
msgstr ""
#: build/forms.py:41 build/templates/build/build_base.html:136
#: build/forms.py:42 build/templates/build/build_base.html:136
#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:117
@ -377,12 +371,11 @@ msgstr ""
msgid "Target Date"
msgstr ""
#: build/forms.py:42 build/models.py:224
msgid ""
"Target date for build completion. Build will be overdue after this date."
#: build/forms.py:43 build/models.py:224
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/forms.py:47 build/forms.py:89 build/forms.py:265 build/models.py:1227
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:123
@ -414,43 +407,43 @@ msgstr ""
msgid "Quantity"
msgstr ""
#: build/forms.py:48
#: build/forms.py:49
msgid "Number of items to build"
msgstr ""
#: build/forms.py:90
#: build/forms.py:91
msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:94 order/forms.py:233 stock/forms.py:118
#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
msgid "Serial Numbers"
msgstr ""
#: build/forms.py:96
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
msgstr ""
#: build/forms.py:102
#: build/forms.py:103
msgid "Confirm creation of build output"
msgstr ""
#: build/forms.py:123
#: build/forms.py:124
msgid "Confirm deletion of build output"
msgstr ""
#: build/forms.py:144
#: build/forms.py:145
msgid "Confirm unallocation of stock"
msgstr ""
#: build/forms.py:168
#: build/forms.py:169
msgid "Confirm stock allocation"
msgstr ""
#: build/forms.py:185
#: build/forms.py:186
msgid "Mark build as complete"
msgstr ""
#: build/forms.py:209 build/templates/build/auto_allocate.html:18
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
#: order/forms.py:82 stock/forms.py:347
#: stock/templates/stock/item_base.html:274
#: stock/templates/stock/stock_adjust.html:17
@ -460,11 +453,11 @@ msgstr ""
msgid "Location"
msgstr ""
#: build/forms.py:210
#: build/forms.py:211
msgid "Location of completed parts"
msgstr ""
#: build/forms.py:214 build/templates/build/build_base.html:128
#: build/forms.py:215 build/templates/build/build_base.html:128
#: build/templates/build/detail.html:59 order/models.py:445
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
@ -474,31 +467,31 @@ msgstr ""
msgid "Status"
msgstr ""
#: build/forms.py:215
#: build/forms.py:216
msgid "Build output stock status"
msgstr ""
#: build/forms.py:222
#: build/forms.py:223
msgid "Confirm incomplete"
msgstr ""
#: build/forms.py:223
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
msgstr ""
#: build/forms.py:226
#: build/forms.py:227
msgid "Confirm build completion"
msgstr ""
#: build/forms.py:251
#: build/forms.py:252
msgid "Confirm cancel"
msgstr ""
#: build/forms.py:251 build/views.py:66
#: build/forms.py:252 build/views.py:66
msgid "Confirm build cancellation"
msgstr ""
#: build/forms.py:265
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
msgstr ""
@ -587,9 +580,7 @@ msgid "Source Location"
msgstr ""
#: build/models.py:178
msgid ""
"Select location to take stock from for this build (leave blank to take from "
"any stock location)"
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
#: build/models.py:183
@ -727,8 +718,7 @@ msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
#: build/models.py:1143
msgid ""
"Build item must specify a build output, as master part is marked as trackable"
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
#: build/models.py:1147
@ -862,8 +852,7 @@ msgid "Automatically Allocate Stock"
msgstr ""
#: build/templates/build/auto_allocate.html:10
msgid ""
"The following stock items will be allocated to the specified build output"
msgid "The following stock items will be allocated to the specified build output"
msgstr ""
#: build/templates/build/auto_allocate.html:37
@ -1089,9 +1078,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
msgid ""
"The allocated stock will be installed into the following build output:<br><i>"
"%(output)s</i>"
msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
msgstr ""
#: build/templates/build/create_build_item.html:17
@ -2030,10 +2017,8 @@ msgstr ""
#: company/templates/company/delete.html:12
#, python-format
msgid ""
"There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be "
"deleted."
msgid "There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be deleted."
msgstr ""
#: company/templates/company/detail.html:21
@ -2197,9 +2182,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_delete.html:36
#, python-format
msgid ""
"There are %(count)s suppliers defined for this manufacturer part. If you "
"delete it, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
@ -2583,8 +2566,7 @@ msgid "Enter sales order number"
msgstr ""
#: order/forms.py:145 order/models.py:452
msgid ""
"Target date for order completion. Order will be overdue after this date."
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
#: order/forms.py:235
@ -2653,8 +2635,7 @@ msgid "Target Delivery Date"
msgstr ""
#: order/models.py:213
msgid ""
"Expected date for order delivery. Order will be overdue after this date."
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
#: order/models.py:219
@ -2849,8 +2830,7 @@ msgid "Marking this order as complete will remove these line items."
msgstr ""
#: order/templates/order/order_issue.html:7
msgid ""
"After placing this purchase order, line items will no longer be editable."
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
#: order/templates/order/order_notes.html:13
@ -2901,13 +2881,11 @@ msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:45
#, python-format
msgid "Create new purchase order for %(name)s"
msgid "Create new purchase order for {{ supplier.name }}"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:68
#, python-format
msgid "Select a purchase order for %(name)s"
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:12
@ -3103,9 +3081,7 @@ msgid "Sales Order Notes"
msgstr ""
#: order/templates/order/sales_order_ship.html:10
msgid ""
"This order has not been fully allocated. If the order is marked as shipped, "
"it can no longer be adjusted."
msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
msgstr ""
#: order/templates/order/sales_order_ship.html:12
@ -3826,9 +3802,7 @@ msgid "Select Related Part"
msgstr ""
#: part/models.py:2440
msgid ""
"Error creating relationship: check that the part is not related to itself "
"and that the relationship is unique"
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/allocation.html:11
@ -3859,8 +3833,7 @@ msgstr ""
#: part/templates/part/bom.html:21
#, python-format
msgid ""
"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:25
@ -3995,8 +3968,7 @@ msgid "Requirements for BOM upload"
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
msgid ""
"The BOM file must contain the required named columns as provided in the "
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
@ -4013,8 +3985,7 @@ msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
msgid ""
"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgstr ""
#: part/templates/part/bom_validate.html:9
@ -4115,8 +4086,7 @@ msgid "This category contains %(count)s child categories"
msgstr ""
#: part/templates/part/category_delete.html:9
msgid ""
"If this category is deleted, these child categories will be moved to the"
msgid "If this category is deleted, these child categories will be moved to the"
msgstr ""
#: part/templates/part/category_delete.html:11
@ -4134,15 +4104,11 @@ msgstr ""
#: part/templates/part/category_delete.html:27
#, python-format
msgid ""
"If this category is deleted, these parts will be moved to the parent "
"category %(path)s"
msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
msgstr ""
#: part/templates/part/category_delete.html:29
msgid ""
"If this category is deleted, these parts will be moved to the top-level "
"category Teile"
msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
msgstr ""
#: part/templates/part/category_navbar.html:34
@ -4489,37 +4455,27 @@ msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
msgid ""
"This part is used in BOMs for %(count)s other parts. If you delete this "
"part, the BOMs for the following parts will be updated"
msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
msgstr ""
#: part/templates/part/partial_delete.html:22
#, python-format
msgid ""
"There are %(count)s stock entries defined for this part. If you delete this "
"part, the following stock entries will also be deleted:"
msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:33
#, python-format
msgid ""
"There are %(count)s manufacturers defined for this part. If you delete this "
"part, the following manufacturer parts will also be deleted:"
msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:44
#, python-format
msgid ""
"There are %(count)s suppliers defined for this part. If you delete this "
"part, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:55
#, python-format
msgid ""
"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
"part will permanently remove this tracking information."
msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
msgstr ""
#: part/templates/part/related.html:18
@ -4942,9 +4898,7 @@ msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
#: stock/forms.py:169
msgid ""
"Destination for serialized stock (by default, will remain in current "
"location)"
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
#: stock/forms.py:171
@ -5126,8 +5080,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:476
msgid ""
"Expiry date for stock item. Stock will be considered expired after this date"
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
#: stock/models.py:489
@ -5274,9 +5227,7 @@ msgid "Stock Item Attachments"
msgstr ""
#: stock/templates/stock/item_base.html:24
msgid ""
"You are not in the list of owners of this item. This stock item cannot be "
"edited."
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
#: stock/templates/stock/item_base.html:31
@ -5293,8 +5244,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:53
#, python-format
msgid ""
"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:61
@ -5303,9 +5253,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:67
msgid ""
"This stock item is serialized - it has a unique serial number and the "
"quantity cannot be adjusted."
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
#: stock/templates/stock/item_base.html:71
@ -5313,8 +5261,7 @@ msgid "This stock item cannot be deleted as it has child items"
msgstr ""
#: stock/templates/stock/item_base.html:75
msgid ""
"This stock item will be automatically deleted when all stock is depleted."
msgid "This stock item will be automatically deleted when all stock is depleted."
msgstr ""
#: stock/templates/stock/item_base.html:95
@ -5463,8 +5410,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
msgid ""
"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgstr ""
#: stock/templates/stock/item_install.html:7
@ -5510,9 +5456,7 @@ msgid "Add Test Data"
msgstr ""
#: stock/templates/stock/location.html:20
msgid ""
"You are not in the list of owners of this location. This stock location "
"cannot be edited."
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
#: stock/templates/stock/location.html:37
@ -6049,10 +5993,8 @@ msgstr ""
#: templates/InvenTree/settings/theme.html:29
#, python-format
msgid ""
"\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
"color theme was not found.<br>\n"
msgid "\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
"\t\tPlease select another color theme :)\n"
"\t"
msgstr ""
@ -6203,8 +6145,7 @@ msgid "Link Barcode to Stock Item"
msgstr ""
#: templates/js/barcode.js:311
msgid ""
"This will remove the association between this stock item and the barcode"
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
#: templates/js/barcode.js:317
@ -7106,21 +7047,15 @@ msgid "Change password"
msgstr ""
#: templates/registration/password_reset_confirm.html:61
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
msgstr ""
#: templates/registration/password_reset_done.html:52
msgid ""
"We've emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
msgstr ""
#: templates/registration/password_reset_done.html:55
msgid ""
"If you don't receive an email, please make sure you've entered the address "
"you registered with, and check your spam folder."
msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
msgstr ""
#: templates/registration/password_reset_form.html:53

View File

@ -1,18 +1,12 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-21 17:15+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"POT-Creation-Date: 2021-04-21 09:17+0000\n"
"PO-Revision-Date: 2021-04-21 09:33\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -34,8 +28,8 @@ msgstr ""
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:110 build/forms.py:101 build/forms.py:122
#: build/forms.py:144 build/forms.py:168 build/forms.py:184 build/forms.py:226
#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
#: order/forms.py:71 part/forms.py:134
msgid "Confirm"
@ -359,15 +353,15 @@ msgstr ""
msgid "Barcode associated with StockItem"
msgstr ""
#: build/forms.py:36
#: build/forms.py:37
msgid "Build Order reference"
msgstr ""
#: build/forms.py:37
#: build/forms.py:38
msgid "Order target date"
msgstr ""
#: build/forms.py:41 build/templates/build/build_base.html:136
#: build/forms.py:42 build/templates/build/build_base.html:136
#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:117
@ -377,12 +371,11 @@ msgstr ""
msgid "Target Date"
msgstr ""
#: build/forms.py:42 build/models.py:224
msgid ""
"Target date for build completion. Build will be overdue after this date."
#: build/forms.py:43 build/models.py:224
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/forms.py:47 build/forms.py:89 build/forms.py:265 build/models.py:1227
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:123
@ -414,43 +407,43 @@ msgstr ""
msgid "Quantity"
msgstr ""
#: build/forms.py:48
#: build/forms.py:49
msgid "Number of items to build"
msgstr ""
#: build/forms.py:90
#: build/forms.py:91
msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:94 order/forms.py:233 stock/forms.py:118
#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
msgid "Serial Numbers"
msgstr ""
#: build/forms.py:96
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
msgstr ""
#: build/forms.py:102
#: build/forms.py:103
msgid "Confirm creation of build output"
msgstr ""
#: build/forms.py:123
#: build/forms.py:124
msgid "Confirm deletion of build output"
msgstr ""
#: build/forms.py:144
#: build/forms.py:145
msgid "Confirm unallocation of stock"
msgstr ""
#: build/forms.py:168
#: build/forms.py:169
msgid "Confirm stock allocation"
msgstr ""
#: build/forms.py:185
#: build/forms.py:186
msgid "Mark build as complete"
msgstr ""
#: build/forms.py:209 build/templates/build/auto_allocate.html:18
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
#: order/forms.py:82 stock/forms.py:347
#: stock/templates/stock/item_base.html:274
#: stock/templates/stock/stock_adjust.html:17
@ -460,11 +453,11 @@ msgstr ""
msgid "Location"
msgstr ""
#: build/forms.py:210
#: build/forms.py:211
msgid "Location of completed parts"
msgstr ""
#: build/forms.py:214 build/templates/build/build_base.html:128
#: build/forms.py:215 build/templates/build/build_base.html:128
#: build/templates/build/detail.html:59 order/models.py:445
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
@ -474,31 +467,31 @@ msgstr ""
msgid "Status"
msgstr ""
#: build/forms.py:215
#: build/forms.py:216
msgid "Build output stock status"
msgstr ""
#: build/forms.py:222
#: build/forms.py:223
msgid "Confirm incomplete"
msgstr ""
#: build/forms.py:223
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
msgstr ""
#: build/forms.py:226
#: build/forms.py:227
msgid "Confirm build completion"
msgstr ""
#: build/forms.py:251
#: build/forms.py:252
msgid "Confirm cancel"
msgstr ""
#: build/forms.py:251 build/views.py:66
#: build/forms.py:252 build/views.py:66
msgid "Confirm build cancellation"
msgstr ""
#: build/forms.py:265
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
msgstr ""
@ -587,9 +580,7 @@ msgid "Source Location"
msgstr ""
#: build/models.py:178
msgid ""
"Select location to take stock from for this build (leave blank to take from "
"any stock location)"
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
#: build/models.py:183
@ -727,8 +718,7 @@ msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
#: build/models.py:1143
msgid ""
"Build item must specify a build output, as master part is marked as trackable"
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
#: build/models.py:1147
@ -862,8 +852,7 @@ msgid "Automatically Allocate Stock"
msgstr ""
#: build/templates/build/auto_allocate.html:10
msgid ""
"The following stock items will be allocated to the specified build output"
msgid "The following stock items will be allocated to the specified build output"
msgstr ""
#: build/templates/build/auto_allocate.html:37
@ -1089,9 +1078,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
msgid ""
"The allocated stock will be installed into the following build output:<br><i>"
"%(output)s</i>"
msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
msgstr ""
#: build/templates/build/create_build_item.html:17
@ -2030,10 +2017,8 @@ msgstr ""
#: company/templates/company/delete.html:12
#, python-format
msgid ""
"There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be "
"deleted."
msgid "There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be deleted."
msgstr ""
#: company/templates/company/detail.html:21
@ -2197,9 +2182,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_delete.html:36
#, python-format
msgid ""
"There are %(count)s suppliers defined for this manufacturer part. If you "
"delete it, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
@ -2583,8 +2566,7 @@ msgid "Enter sales order number"
msgstr ""
#: order/forms.py:145 order/models.py:452
msgid ""
"Target date for order completion. Order will be overdue after this date."
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
#: order/forms.py:235
@ -2653,8 +2635,7 @@ msgid "Target Delivery Date"
msgstr ""
#: order/models.py:213
msgid ""
"Expected date for order delivery. Order will be overdue after this date."
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
#: order/models.py:219
@ -2849,8 +2830,7 @@ msgid "Marking this order as complete will remove these line items."
msgstr ""
#: order/templates/order/order_issue.html:7
msgid ""
"After placing this purchase order, line items will no longer be editable."
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
#: order/templates/order/order_notes.html:13
@ -2901,13 +2881,11 @@ msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:45
#, python-format
msgid "Create new purchase order for %(name)s"
msgid "Create new purchase order for {{ supplier.name }}"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:68
#, python-format
msgid "Select a purchase order for %(name)s"
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:12
@ -3103,9 +3081,7 @@ msgid "Sales Order Notes"
msgstr ""
#: order/templates/order/sales_order_ship.html:10
msgid ""
"This order has not been fully allocated. If the order is marked as shipped, "
"it can no longer be adjusted."
msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
msgstr ""
#: order/templates/order/sales_order_ship.html:12
@ -3826,9 +3802,7 @@ msgid "Select Related Part"
msgstr ""
#: part/models.py:2440
msgid ""
"Error creating relationship: check that the part is not related to itself "
"and that the relationship is unique"
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/allocation.html:11
@ -3859,8 +3833,7 @@ msgstr ""
#: part/templates/part/bom.html:21
#, python-format
msgid ""
"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:25
@ -3995,8 +3968,7 @@ msgid "Requirements for BOM upload"
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
msgid ""
"The BOM file must contain the required named columns as provided in the "
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
@ -4013,8 +3985,7 @@ msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
msgid ""
"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgstr ""
#: part/templates/part/bom_validate.html:9
@ -4115,8 +4086,7 @@ msgid "This category contains %(count)s child categories"
msgstr ""
#: part/templates/part/category_delete.html:9
msgid ""
"If this category is deleted, these child categories will be moved to the"
msgid "If this category is deleted, these child categories will be moved to the"
msgstr ""
#: part/templates/part/category_delete.html:11
@ -4134,15 +4104,11 @@ msgstr ""
#: part/templates/part/category_delete.html:27
#, python-format
msgid ""
"If this category is deleted, these parts will be moved to the parent "
"category %(path)s"
msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
msgstr ""
#: part/templates/part/category_delete.html:29
msgid ""
"If this category is deleted, these parts will be moved to the top-level "
"category Teile"
msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
msgstr ""
#: part/templates/part/category_navbar.html:34
@ -4489,37 +4455,27 @@ msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
msgid ""
"This part is used in BOMs for %(count)s other parts. If you delete this "
"part, the BOMs for the following parts will be updated"
msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
msgstr ""
#: part/templates/part/partial_delete.html:22
#, python-format
msgid ""
"There are %(count)s stock entries defined for this part. If you delete this "
"part, the following stock entries will also be deleted:"
msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:33
#, python-format
msgid ""
"There are %(count)s manufacturers defined for this part. If you delete this "
"part, the following manufacturer parts will also be deleted:"
msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:44
#, python-format
msgid ""
"There are %(count)s suppliers defined for this part. If you delete this "
"part, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:55
#, python-format
msgid ""
"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
"part will permanently remove this tracking information."
msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
msgstr ""
#: part/templates/part/related.html:18
@ -4942,9 +4898,7 @@ msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
#: stock/forms.py:169
msgid ""
"Destination for serialized stock (by default, will remain in current "
"location)"
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
#: stock/forms.py:171
@ -5126,8 +5080,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:476
msgid ""
"Expiry date for stock item. Stock will be considered expired after this date"
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
#: stock/models.py:489
@ -5274,9 +5227,7 @@ msgid "Stock Item Attachments"
msgstr ""
#: stock/templates/stock/item_base.html:24
msgid ""
"You are not in the list of owners of this item. This stock item cannot be "
"edited."
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
#: stock/templates/stock/item_base.html:31
@ -5293,8 +5244,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:53
#, python-format
msgid ""
"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:61
@ -5303,9 +5253,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:67
msgid ""
"This stock item is serialized - it has a unique serial number and the "
"quantity cannot be adjusted."
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
#: stock/templates/stock/item_base.html:71
@ -5313,8 +5261,7 @@ msgid "This stock item cannot be deleted as it has child items"
msgstr ""
#: stock/templates/stock/item_base.html:75
msgid ""
"This stock item will be automatically deleted when all stock is depleted."
msgid "This stock item will be automatically deleted when all stock is depleted."
msgstr ""
#: stock/templates/stock/item_base.html:95
@ -5463,8 +5410,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
msgid ""
"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgstr ""
#: stock/templates/stock/item_install.html:7
@ -5510,9 +5456,7 @@ msgid "Add Test Data"
msgstr ""
#: stock/templates/stock/location.html:20
msgid ""
"You are not in the list of owners of this location. This stock location "
"cannot be edited."
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
#: stock/templates/stock/location.html:37
@ -6049,10 +5993,8 @@ msgstr ""
#: templates/InvenTree/settings/theme.html:29
#, python-format
msgid ""
"\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
"color theme was not found.<br>\n"
msgid "\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
"\t\tPlease select another color theme :)\n"
"\t"
msgstr ""
@ -6203,8 +6145,7 @@ msgid "Link Barcode to Stock Item"
msgstr ""
#: templates/js/barcode.js:311
msgid ""
"This will remove the association between this stock item and the barcode"
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
#: templates/js/barcode.js:317
@ -7106,21 +7047,15 @@ msgid "Change password"
msgstr ""
#: templates/registration/password_reset_confirm.html:61
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
msgstr ""
#: templates/registration/password_reset_done.html:52
msgid ""
"We've emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
msgstr ""
#: templates/registration/password_reset_done.html:55
msgid ""
"If you don't receive an email, please make sure you've entered the address "
"you registered with, and check your spam folder."
msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
msgstr ""
#: templates/registration/password_reset_form.html:53
@ -7286,3 +7221,4 @@ msgstr ""
#: users/models.py:184
msgid "Permission to delete items"
msgstr ""

View File

@ -1,18 +1,12 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-21 17:15+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"POT-Creation-Date: 2021-04-21 09:17+0000\n"
"PO-Revision-Date: 2021-04-21 09:33\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -34,8 +28,8 @@ msgstr ""
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:110 build/forms.py:101 build/forms.py:122
#: build/forms.py:144 build/forms.py:168 build/forms.py:184 build/forms.py:226
#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
#: order/forms.py:71 part/forms.py:134
msgid "Confirm"
@ -359,15 +353,15 @@ msgstr ""
msgid "Barcode associated with StockItem"
msgstr ""
#: build/forms.py:36
#: build/forms.py:37
msgid "Build Order reference"
msgstr ""
#: build/forms.py:37
#: build/forms.py:38
msgid "Order target date"
msgstr ""
#: build/forms.py:41 build/templates/build/build_base.html:136
#: build/forms.py:42 build/templates/build/build_base.html:136
#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:117
@ -377,12 +371,11 @@ msgstr ""
msgid "Target Date"
msgstr ""
#: build/forms.py:42 build/models.py:224
msgid ""
"Target date for build completion. Build will be overdue after this date."
#: build/forms.py:43 build/models.py:224
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/forms.py:47 build/forms.py:89 build/forms.py:265 build/models.py:1227
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:123
@ -414,43 +407,43 @@ msgstr ""
msgid "Quantity"
msgstr ""
#: build/forms.py:48
#: build/forms.py:49
msgid "Number of items to build"
msgstr ""
#: build/forms.py:90
#: build/forms.py:91
msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:94 order/forms.py:233 stock/forms.py:118
#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
msgid "Serial Numbers"
msgstr ""
#: build/forms.py:96
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
msgstr ""
#: build/forms.py:102
#: build/forms.py:103
msgid "Confirm creation of build output"
msgstr ""
#: build/forms.py:123
#: build/forms.py:124
msgid "Confirm deletion of build output"
msgstr ""
#: build/forms.py:144
#: build/forms.py:145
msgid "Confirm unallocation of stock"
msgstr ""
#: build/forms.py:168
#: build/forms.py:169
msgid "Confirm stock allocation"
msgstr ""
#: build/forms.py:185
#: build/forms.py:186
msgid "Mark build as complete"
msgstr ""
#: build/forms.py:209 build/templates/build/auto_allocate.html:18
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
#: order/forms.py:82 stock/forms.py:347
#: stock/templates/stock/item_base.html:274
#: stock/templates/stock/stock_adjust.html:17
@ -460,11 +453,11 @@ msgstr ""
msgid "Location"
msgstr ""
#: build/forms.py:210
#: build/forms.py:211
msgid "Location of completed parts"
msgstr ""
#: build/forms.py:214 build/templates/build/build_base.html:128
#: build/forms.py:215 build/templates/build/build_base.html:128
#: build/templates/build/detail.html:59 order/models.py:445
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
@ -474,31 +467,31 @@ msgstr ""
msgid "Status"
msgstr ""
#: build/forms.py:215
#: build/forms.py:216
msgid "Build output stock status"
msgstr ""
#: build/forms.py:222
#: build/forms.py:223
msgid "Confirm incomplete"
msgstr ""
#: build/forms.py:223
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
msgstr ""
#: build/forms.py:226
#: build/forms.py:227
msgid "Confirm build completion"
msgstr ""
#: build/forms.py:251
#: build/forms.py:252
msgid "Confirm cancel"
msgstr ""
#: build/forms.py:251 build/views.py:66
#: build/forms.py:252 build/views.py:66
msgid "Confirm build cancellation"
msgstr ""
#: build/forms.py:265
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
msgstr ""
@ -587,9 +580,7 @@ msgid "Source Location"
msgstr ""
#: build/models.py:178
msgid ""
"Select location to take stock from for this build (leave blank to take from "
"any stock location)"
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
#: build/models.py:183
@ -727,8 +718,7 @@ msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
#: build/models.py:1143
msgid ""
"Build item must specify a build output, as master part is marked as trackable"
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
#: build/models.py:1147
@ -862,8 +852,7 @@ msgid "Automatically Allocate Stock"
msgstr ""
#: build/templates/build/auto_allocate.html:10
msgid ""
"The following stock items will be allocated to the specified build output"
msgid "The following stock items will be allocated to the specified build output"
msgstr ""
#: build/templates/build/auto_allocate.html:37
@ -1089,9 +1078,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
msgid ""
"The allocated stock will be installed into the following build output:<br><i>"
"%(output)s</i>"
msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
msgstr ""
#: build/templates/build/create_build_item.html:17
@ -2030,10 +2017,8 @@ msgstr ""
#: company/templates/company/delete.html:12
#, python-format
msgid ""
"There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be "
"deleted."
msgid "There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be deleted."
msgstr ""
#: company/templates/company/detail.html:21
@ -2197,9 +2182,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_delete.html:36
#, python-format
msgid ""
"There are %(count)s suppliers defined for this manufacturer part. If you "
"delete it, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
@ -2583,8 +2566,7 @@ msgid "Enter sales order number"
msgstr ""
#: order/forms.py:145 order/models.py:452
msgid ""
"Target date for order completion. Order will be overdue after this date."
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
#: order/forms.py:235
@ -2653,8 +2635,7 @@ msgid "Target Delivery Date"
msgstr ""
#: order/models.py:213
msgid ""
"Expected date for order delivery. Order will be overdue after this date."
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
#: order/models.py:219
@ -2849,8 +2830,7 @@ msgid "Marking this order as complete will remove these line items."
msgstr ""
#: order/templates/order/order_issue.html:7
msgid ""
"After placing this purchase order, line items will no longer be editable."
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
#: order/templates/order/order_notes.html:13
@ -2901,13 +2881,11 @@ msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:45
#, python-format
msgid "Create new purchase order for %(name)s"
msgid "Create new purchase order for {{ supplier.name }}"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:68
#, python-format
msgid "Select a purchase order for %(name)s"
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:12
@ -3103,9 +3081,7 @@ msgid "Sales Order Notes"
msgstr ""
#: order/templates/order/sales_order_ship.html:10
msgid ""
"This order has not been fully allocated. If the order is marked as shipped, "
"it can no longer be adjusted."
msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
msgstr ""
#: order/templates/order/sales_order_ship.html:12
@ -3826,9 +3802,7 @@ msgid "Select Related Part"
msgstr ""
#: part/models.py:2440
msgid ""
"Error creating relationship: check that the part is not related to itself "
"and that the relationship is unique"
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/allocation.html:11
@ -3859,8 +3833,7 @@ msgstr ""
#: part/templates/part/bom.html:21
#, python-format
msgid ""
"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:25
@ -3995,8 +3968,7 @@ msgid "Requirements for BOM upload"
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
msgid ""
"The BOM file must contain the required named columns as provided in the "
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
@ -4013,8 +3985,7 @@ msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
msgid ""
"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgstr ""
#: part/templates/part/bom_validate.html:9
@ -4115,8 +4086,7 @@ msgid "This category contains %(count)s child categories"
msgstr ""
#: part/templates/part/category_delete.html:9
msgid ""
"If this category is deleted, these child categories will be moved to the"
msgid "If this category is deleted, these child categories will be moved to the"
msgstr ""
#: part/templates/part/category_delete.html:11
@ -4134,15 +4104,11 @@ msgstr ""
#: part/templates/part/category_delete.html:27
#, python-format
msgid ""
"If this category is deleted, these parts will be moved to the parent "
"category %(path)s"
msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
msgstr ""
#: part/templates/part/category_delete.html:29
msgid ""
"If this category is deleted, these parts will be moved to the top-level "
"category Teile"
msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
msgstr ""
#: part/templates/part/category_navbar.html:34
@ -4489,37 +4455,27 @@ msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
msgid ""
"This part is used in BOMs for %(count)s other parts. If you delete this "
"part, the BOMs for the following parts will be updated"
msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
msgstr ""
#: part/templates/part/partial_delete.html:22
#, python-format
msgid ""
"There are %(count)s stock entries defined for this part. If you delete this "
"part, the following stock entries will also be deleted:"
msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:33
#, python-format
msgid ""
"There are %(count)s manufacturers defined for this part. If you delete this "
"part, the following manufacturer parts will also be deleted:"
msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:44
#, python-format
msgid ""
"There are %(count)s suppliers defined for this part. If you delete this "
"part, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:55
#, python-format
msgid ""
"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
"part will permanently remove this tracking information."
msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
msgstr ""
#: part/templates/part/related.html:18
@ -4942,9 +4898,7 @@ msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
#: stock/forms.py:169
msgid ""
"Destination for serialized stock (by default, will remain in current "
"location)"
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
#: stock/forms.py:171
@ -5126,8 +5080,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:476
msgid ""
"Expiry date for stock item. Stock will be considered expired after this date"
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
#: stock/models.py:489
@ -5274,9 +5227,7 @@ msgid "Stock Item Attachments"
msgstr ""
#: stock/templates/stock/item_base.html:24
msgid ""
"You are not in the list of owners of this item. This stock item cannot be "
"edited."
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
#: stock/templates/stock/item_base.html:31
@ -5293,8 +5244,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:53
#, python-format
msgid ""
"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:61
@ -5303,9 +5253,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:67
msgid ""
"This stock item is serialized - it has a unique serial number and the "
"quantity cannot be adjusted."
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
#: stock/templates/stock/item_base.html:71
@ -5313,8 +5261,7 @@ msgid "This stock item cannot be deleted as it has child items"
msgstr ""
#: stock/templates/stock/item_base.html:75
msgid ""
"This stock item will be automatically deleted when all stock is depleted."
msgid "This stock item will be automatically deleted when all stock is depleted."
msgstr ""
#: stock/templates/stock/item_base.html:95
@ -5463,8 +5410,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
msgid ""
"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgstr ""
#: stock/templates/stock/item_install.html:7
@ -5510,9 +5456,7 @@ msgid "Add Test Data"
msgstr ""
#: stock/templates/stock/location.html:20
msgid ""
"You are not in the list of owners of this location. This stock location "
"cannot be edited."
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
#: stock/templates/stock/location.html:37
@ -6049,10 +5993,8 @@ msgstr ""
#: templates/InvenTree/settings/theme.html:29
#, python-format
msgid ""
"\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
"color theme was not found.<br>\n"
msgid "\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
"\t\tPlease select another color theme :)\n"
"\t"
msgstr ""
@ -6203,8 +6145,7 @@ msgid "Link Barcode to Stock Item"
msgstr ""
#: templates/js/barcode.js:311
msgid ""
"This will remove the association between this stock item and the barcode"
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
#: templates/js/barcode.js:317
@ -7106,21 +7047,15 @@ msgid "Change password"
msgstr ""
#: templates/registration/password_reset_confirm.html:61
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
msgstr ""
#: templates/registration/password_reset_done.html:52
msgid ""
"We've emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
msgstr ""
#: templates/registration/password_reset_done.html:55
msgid ""
"If you don't receive an email, please make sure you've entered the address "
"you registered with, and check your spam folder."
msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
msgstr ""
#: templates/registration/password_reset_form.html:53
@ -7286,3 +7221,4 @@ msgstr ""
#: users/models.py:184
msgid "Permission to delete items"
msgstr ""

View File

@ -1,18 +1,12 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-21 17:15+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"POT-Creation-Date: 2021-04-21 09:17+0000\n"
"PO-Revision-Date: 2021-04-21 09:33\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -34,8 +28,8 @@ msgstr ""
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:110 build/forms.py:101 build/forms.py:122
#: build/forms.py:144 build/forms.py:168 build/forms.py:184 build/forms.py:226
#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
#: order/forms.py:71 part/forms.py:134
msgid "Confirm"
@ -359,15 +353,15 @@ msgstr ""
msgid "Barcode associated with StockItem"
msgstr ""
#: build/forms.py:36
#: build/forms.py:37
msgid "Build Order reference"
msgstr ""
#: build/forms.py:37
#: build/forms.py:38
msgid "Order target date"
msgstr ""
#: build/forms.py:41 build/templates/build/build_base.html:136
#: build/forms.py:42 build/templates/build/build_base.html:136
#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:117
@ -377,12 +371,11 @@ msgstr ""
msgid "Target Date"
msgstr ""
#: build/forms.py:42 build/models.py:224
msgid ""
"Target date for build completion. Build will be overdue after this date."
#: build/forms.py:43 build/models.py:224
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/forms.py:47 build/forms.py:89 build/forms.py:265 build/models.py:1227
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:123
@ -414,43 +407,43 @@ msgstr ""
msgid "Quantity"
msgstr ""
#: build/forms.py:48
#: build/forms.py:49
msgid "Number of items to build"
msgstr ""
#: build/forms.py:90
#: build/forms.py:91
msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:94 order/forms.py:233 stock/forms.py:118
#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
msgid "Serial Numbers"
msgstr ""
#: build/forms.py:96
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
msgstr ""
#: build/forms.py:102
#: build/forms.py:103
msgid "Confirm creation of build output"
msgstr ""
#: build/forms.py:123
#: build/forms.py:124
msgid "Confirm deletion of build output"
msgstr ""
#: build/forms.py:144
#: build/forms.py:145
msgid "Confirm unallocation of stock"
msgstr ""
#: build/forms.py:168
#: build/forms.py:169
msgid "Confirm stock allocation"
msgstr ""
#: build/forms.py:185
#: build/forms.py:186
msgid "Mark build as complete"
msgstr ""
#: build/forms.py:209 build/templates/build/auto_allocate.html:18
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
#: order/forms.py:82 stock/forms.py:347
#: stock/templates/stock/item_base.html:274
#: stock/templates/stock/stock_adjust.html:17
@ -460,11 +453,11 @@ msgstr ""
msgid "Location"
msgstr ""
#: build/forms.py:210
#: build/forms.py:211
msgid "Location of completed parts"
msgstr ""
#: build/forms.py:214 build/templates/build/build_base.html:128
#: build/forms.py:215 build/templates/build/build_base.html:128
#: build/templates/build/detail.html:59 order/models.py:445
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
@ -474,31 +467,31 @@ msgstr ""
msgid "Status"
msgstr ""
#: build/forms.py:215
#: build/forms.py:216
msgid "Build output stock status"
msgstr ""
#: build/forms.py:222
#: build/forms.py:223
msgid "Confirm incomplete"
msgstr ""
#: build/forms.py:223
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
msgstr ""
#: build/forms.py:226
#: build/forms.py:227
msgid "Confirm build completion"
msgstr ""
#: build/forms.py:251
#: build/forms.py:252
msgid "Confirm cancel"
msgstr ""
#: build/forms.py:251 build/views.py:66
#: build/forms.py:252 build/views.py:66
msgid "Confirm build cancellation"
msgstr ""
#: build/forms.py:265
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
msgstr ""
@ -587,9 +580,7 @@ msgid "Source Location"
msgstr ""
#: build/models.py:178
msgid ""
"Select location to take stock from for this build (leave blank to take from "
"any stock location)"
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
#: build/models.py:183
@ -727,8 +718,7 @@ msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
#: build/models.py:1143
msgid ""
"Build item must specify a build output, as master part is marked as trackable"
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
#: build/models.py:1147
@ -862,8 +852,7 @@ msgid "Automatically Allocate Stock"
msgstr ""
#: build/templates/build/auto_allocate.html:10
msgid ""
"The following stock items will be allocated to the specified build output"
msgid "The following stock items will be allocated to the specified build output"
msgstr ""
#: build/templates/build/auto_allocate.html:37
@ -1089,9 +1078,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
msgid ""
"The allocated stock will be installed into the following build output:<br><i>"
"%(output)s</i>"
msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
msgstr ""
#: build/templates/build/create_build_item.html:17
@ -2030,10 +2017,8 @@ msgstr ""
#: company/templates/company/delete.html:12
#, python-format
msgid ""
"There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be "
"deleted."
msgid "There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be deleted."
msgstr ""
#: company/templates/company/detail.html:21
@ -2197,9 +2182,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_delete.html:36
#, python-format
msgid ""
"There are %(count)s suppliers defined for this manufacturer part. If you "
"delete it, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
@ -2583,8 +2566,7 @@ msgid "Enter sales order number"
msgstr ""
#: order/forms.py:145 order/models.py:452
msgid ""
"Target date for order completion. Order will be overdue after this date."
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
#: order/forms.py:235
@ -2653,8 +2635,7 @@ msgid "Target Delivery Date"
msgstr ""
#: order/models.py:213
msgid ""
"Expected date for order delivery. Order will be overdue after this date."
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
#: order/models.py:219
@ -2849,8 +2830,7 @@ msgid "Marking this order as complete will remove these line items."
msgstr ""
#: order/templates/order/order_issue.html:7
msgid ""
"After placing this purchase order, line items will no longer be editable."
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
#: order/templates/order/order_notes.html:13
@ -2901,13 +2881,11 @@ msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:45
#, python-format
msgid "Create new purchase order for %(name)s"
msgid "Create new purchase order for {{ supplier.name }}"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:68
#, python-format
msgid "Select a purchase order for %(name)s"
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:12
@ -3103,9 +3081,7 @@ msgid "Sales Order Notes"
msgstr ""
#: order/templates/order/sales_order_ship.html:10
msgid ""
"This order has not been fully allocated. If the order is marked as shipped, "
"it can no longer be adjusted."
msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
msgstr ""
#: order/templates/order/sales_order_ship.html:12
@ -3826,9 +3802,7 @@ msgid "Select Related Part"
msgstr ""
#: part/models.py:2440
msgid ""
"Error creating relationship: check that the part is not related to itself "
"and that the relationship is unique"
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/allocation.html:11
@ -3859,8 +3833,7 @@ msgstr ""
#: part/templates/part/bom.html:21
#, python-format
msgid ""
"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:25
@ -3995,8 +3968,7 @@ msgid "Requirements for BOM upload"
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
msgid ""
"The BOM file must contain the required named columns as provided in the "
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
@ -4013,8 +3985,7 @@ msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
msgid ""
"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgstr ""
#: part/templates/part/bom_validate.html:9
@ -4115,8 +4086,7 @@ msgid "This category contains %(count)s child categories"
msgstr ""
#: part/templates/part/category_delete.html:9
msgid ""
"If this category is deleted, these child categories will be moved to the"
msgid "If this category is deleted, these child categories will be moved to the"
msgstr ""
#: part/templates/part/category_delete.html:11
@ -4134,15 +4104,11 @@ msgstr ""
#: part/templates/part/category_delete.html:27
#, python-format
msgid ""
"If this category is deleted, these parts will be moved to the parent "
"category %(path)s"
msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
msgstr ""
#: part/templates/part/category_delete.html:29
msgid ""
"If this category is deleted, these parts will be moved to the top-level "
"category Teile"
msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
msgstr ""
#: part/templates/part/category_navbar.html:34
@ -4489,37 +4455,27 @@ msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
msgid ""
"This part is used in BOMs for %(count)s other parts. If you delete this "
"part, the BOMs for the following parts will be updated"
msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
msgstr ""
#: part/templates/part/partial_delete.html:22
#, python-format
msgid ""
"There are %(count)s stock entries defined for this part. If you delete this "
"part, the following stock entries will also be deleted:"
msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:33
#, python-format
msgid ""
"There are %(count)s manufacturers defined for this part. If you delete this "
"part, the following manufacturer parts will also be deleted:"
msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:44
#, python-format
msgid ""
"There are %(count)s suppliers defined for this part. If you delete this "
"part, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:55
#, python-format
msgid ""
"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
"part will permanently remove this tracking information."
msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
msgstr ""
#: part/templates/part/related.html:18
@ -4942,9 +4898,7 @@ msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
#: stock/forms.py:169
msgid ""
"Destination for serialized stock (by default, will remain in current "
"location)"
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
#: stock/forms.py:171
@ -5126,8 +5080,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:476
msgid ""
"Expiry date for stock item. Stock will be considered expired after this date"
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
#: stock/models.py:489
@ -5274,9 +5227,7 @@ msgid "Stock Item Attachments"
msgstr ""
#: stock/templates/stock/item_base.html:24
msgid ""
"You are not in the list of owners of this item. This stock item cannot be "
"edited."
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
#: stock/templates/stock/item_base.html:31
@ -5293,8 +5244,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:53
#, python-format
msgid ""
"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:61
@ -5303,9 +5253,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:67
msgid ""
"This stock item is serialized - it has a unique serial number and the "
"quantity cannot be adjusted."
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
#: stock/templates/stock/item_base.html:71
@ -5313,8 +5261,7 @@ msgid "This stock item cannot be deleted as it has child items"
msgstr ""
#: stock/templates/stock/item_base.html:75
msgid ""
"This stock item will be automatically deleted when all stock is depleted."
msgid "This stock item will be automatically deleted when all stock is depleted."
msgstr ""
#: stock/templates/stock/item_base.html:95
@ -5463,8 +5410,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
msgid ""
"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgstr ""
#: stock/templates/stock/item_install.html:7
@ -5510,9 +5456,7 @@ msgid "Add Test Data"
msgstr ""
#: stock/templates/stock/location.html:20
msgid ""
"You are not in the list of owners of this location. This stock location "
"cannot be edited."
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
#: stock/templates/stock/location.html:37
@ -6049,10 +5993,8 @@ msgstr ""
#: templates/InvenTree/settings/theme.html:29
#, python-format
msgid ""
"\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
"color theme was not found.<br>\n"
msgid "\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
"\t\tPlease select another color theme :)\n"
"\t"
msgstr ""
@ -6203,8 +6145,7 @@ msgid "Link Barcode to Stock Item"
msgstr ""
#: templates/js/barcode.js:311
msgid ""
"This will remove the association between this stock item and the barcode"
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
#: templates/js/barcode.js:317
@ -7106,21 +7047,15 @@ msgid "Change password"
msgstr ""
#: templates/registration/password_reset_confirm.html:61
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
msgstr ""
#: templates/registration/password_reset_done.html:52
msgid ""
"We've emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
msgstr ""
#: templates/registration/password_reset_done.html:55
msgid ""
"If you don't receive an email, please make sure you've entered the address "
"you registered with, and check your spam folder."
msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
msgstr ""
#: templates/registration/password_reset_form.html:53

View File

@ -1,24 +1,16 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-21 17:15+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"POT-Creation-Date: 2021-04-21 09:17+0000\n"
"PO-Revision-Date: 2021-04-21 09:33\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: InvenTree/api.py:64
msgid "API endpoint not found"
@ -36,8 +28,8 @@ msgstr ""
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:110 build/forms.py:101 build/forms.py:122
#: build/forms.py:144 build/forms.py:168 build/forms.py:184 build/forms.py:226
#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
#: order/forms.py:71 part/forms.py:134
msgid "Confirm"
@ -361,15 +353,15 @@ msgstr ""
msgid "Barcode associated with StockItem"
msgstr ""
#: build/forms.py:36
#: build/forms.py:37
msgid "Build Order reference"
msgstr ""
#: build/forms.py:37
#: build/forms.py:38
msgid "Order target date"
msgstr ""
#: build/forms.py:41 build/templates/build/build_base.html:136
#: build/forms.py:42 build/templates/build/build_base.html:136
#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:117
@ -379,12 +371,11 @@ msgstr ""
msgid "Target Date"
msgstr ""
#: build/forms.py:42 build/models.py:224
msgid ""
"Target date for build completion. Build will be overdue after this date."
#: build/forms.py:43 build/models.py:224
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/forms.py:47 build/forms.py:89 build/forms.py:265 build/models.py:1227
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:123
@ -416,43 +407,43 @@ msgstr ""
msgid "Quantity"
msgstr ""
#: build/forms.py:48
#: build/forms.py:49
msgid "Number of items to build"
msgstr ""
#: build/forms.py:90
#: build/forms.py:91
msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:94 order/forms.py:233 stock/forms.py:118
#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
msgid "Serial Numbers"
msgstr ""
#: build/forms.py:96
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
msgstr ""
#: build/forms.py:102
#: build/forms.py:103
msgid "Confirm creation of build output"
msgstr ""
#: build/forms.py:123
#: build/forms.py:124
msgid "Confirm deletion of build output"
msgstr ""
#: build/forms.py:144
#: build/forms.py:145
msgid "Confirm unallocation of stock"
msgstr ""
#: build/forms.py:168
#: build/forms.py:169
msgid "Confirm stock allocation"
msgstr ""
#: build/forms.py:185
#: build/forms.py:186
msgid "Mark build as complete"
msgstr ""
#: build/forms.py:209 build/templates/build/auto_allocate.html:18
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
#: order/forms.py:82 stock/forms.py:347
#: stock/templates/stock/item_base.html:274
#: stock/templates/stock/stock_adjust.html:17
@ -462,11 +453,11 @@ msgstr ""
msgid "Location"
msgstr ""
#: build/forms.py:210
#: build/forms.py:211
msgid "Location of completed parts"
msgstr ""
#: build/forms.py:214 build/templates/build/build_base.html:128
#: build/forms.py:215 build/templates/build/build_base.html:128
#: build/templates/build/detail.html:59 order/models.py:445
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
@ -476,31 +467,31 @@ msgstr ""
msgid "Status"
msgstr ""
#: build/forms.py:215
#: build/forms.py:216
msgid "Build output stock status"
msgstr ""
#: build/forms.py:222
#: build/forms.py:223
msgid "Confirm incomplete"
msgstr ""
#: build/forms.py:223
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
msgstr ""
#: build/forms.py:226
#: build/forms.py:227
msgid "Confirm build completion"
msgstr ""
#: build/forms.py:251
#: build/forms.py:252
msgid "Confirm cancel"
msgstr ""
#: build/forms.py:251 build/views.py:66
#: build/forms.py:252 build/views.py:66
msgid "Confirm build cancellation"
msgstr ""
#: build/forms.py:265
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
msgstr ""
@ -589,9 +580,7 @@ msgid "Source Location"
msgstr ""
#: build/models.py:178
msgid ""
"Select location to take stock from for this build (leave blank to take from "
"any stock location)"
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
#: build/models.py:183
@ -729,8 +718,7 @@ msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
#: build/models.py:1143
msgid ""
"Build item must specify a build output, as master part is marked as trackable"
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
#: build/models.py:1147
@ -864,8 +852,7 @@ msgid "Automatically Allocate Stock"
msgstr ""
#: build/templates/build/auto_allocate.html:10
msgid ""
"The following stock items will be allocated to the specified build output"
msgid "The following stock items will be allocated to the specified build output"
msgstr ""
#: build/templates/build/auto_allocate.html:37
@ -1091,9 +1078,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
msgid ""
"The allocated stock will be installed into the following build output:<br><i>"
"%(output)s</i>"
msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
msgstr ""
#: build/templates/build/create_build_item.html:17
@ -2032,10 +2017,8 @@ msgstr ""
#: company/templates/company/delete.html:12
#, python-format
msgid ""
"There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be "
"deleted."
msgid "There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be deleted."
msgstr ""
#: company/templates/company/detail.html:21
@ -2199,9 +2182,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_delete.html:36
#, python-format
msgid ""
"There are %(count)s suppliers defined for this manufacturer part. If you "
"delete it, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
@ -2585,8 +2566,7 @@ msgid "Enter sales order number"
msgstr ""
#: order/forms.py:145 order/models.py:452
msgid ""
"Target date for order completion. Order will be overdue after this date."
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
#: order/forms.py:235
@ -2655,8 +2635,7 @@ msgid "Target Delivery Date"
msgstr ""
#: order/models.py:213
msgid ""
"Expected date for order delivery. Order will be overdue after this date."
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
#: order/models.py:219
@ -2851,8 +2830,7 @@ msgid "Marking this order as complete will remove these line items."
msgstr ""
#: order/templates/order/order_issue.html:7
msgid ""
"After placing this purchase order, line items will no longer be editable."
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
#: order/templates/order/order_notes.html:13
@ -2903,13 +2881,11 @@ msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:45
#, python-format
msgid "Create new purchase order for %(name)s"
msgid "Create new purchase order for {{ supplier.name }}"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:68
#, python-format
msgid "Select a purchase order for %(name)s"
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:12
@ -3105,9 +3081,7 @@ msgid "Sales Order Notes"
msgstr ""
#: order/templates/order/sales_order_ship.html:10
msgid ""
"This order has not been fully allocated. If the order is marked as shipped, "
"it can no longer be adjusted."
msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
msgstr ""
#: order/templates/order/sales_order_ship.html:12
@ -3828,9 +3802,7 @@ msgid "Select Related Part"
msgstr ""
#: part/models.py:2440
msgid ""
"Error creating relationship: check that the part is not related to itself "
"and that the relationship is unique"
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/allocation.html:11
@ -3861,8 +3833,7 @@ msgstr ""
#: part/templates/part/bom.html:21
#, python-format
msgid ""
"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:25
@ -3997,8 +3968,7 @@ msgid "Requirements for BOM upload"
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
msgid ""
"The BOM file must contain the required named columns as provided in the "
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
@ -4015,8 +3985,7 @@ msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
msgid ""
"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgstr ""
#: part/templates/part/bom_validate.html:9
@ -4117,8 +4086,7 @@ msgid "This category contains %(count)s child categories"
msgstr ""
#: part/templates/part/category_delete.html:9
msgid ""
"If this category is deleted, these child categories will be moved to the"
msgid "If this category is deleted, these child categories will be moved to the"
msgstr ""
#: part/templates/part/category_delete.html:11
@ -4136,15 +4104,11 @@ msgstr ""
#: part/templates/part/category_delete.html:27
#, python-format
msgid ""
"If this category is deleted, these parts will be moved to the parent "
"category %(path)s"
msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
msgstr ""
#: part/templates/part/category_delete.html:29
msgid ""
"If this category is deleted, these parts will be moved to the top-level "
"category Teile"
msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
msgstr ""
#: part/templates/part/category_navbar.html:34
@ -4491,37 +4455,27 @@ msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
msgid ""
"This part is used in BOMs for %(count)s other parts. If you delete this "
"part, the BOMs for the following parts will be updated"
msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
msgstr ""
#: part/templates/part/partial_delete.html:22
#, python-format
msgid ""
"There are %(count)s stock entries defined for this part. If you delete this "
"part, the following stock entries will also be deleted:"
msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:33
#, python-format
msgid ""
"There are %(count)s manufacturers defined for this part. If you delete this "
"part, the following manufacturer parts will also be deleted:"
msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:44
#, python-format
msgid ""
"There are %(count)s suppliers defined for this part. If you delete this "
"part, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:55
#, python-format
msgid ""
"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
"part will permanently remove this tracking information."
msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
msgstr ""
#: part/templates/part/related.html:18
@ -4944,9 +4898,7 @@ msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
#: stock/forms.py:169
msgid ""
"Destination for serialized stock (by default, will remain in current "
"location)"
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
#: stock/forms.py:171
@ -5128,8 +5080,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:476
msgid ""
"Expiry date for stock item. Stock will be considered expired after this date"
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
#: stock/models.py:489
@ -5276,9 +5227,7 @@ msgid "Stock Item Attachments"
msgstr ""
#: stock/templates/stock/item_base.html:24
msgid ""
"You are not in the list of owners of this item. This stock item cannot be "
"edited."
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
#: stock/templates/stock/item_base.html:31
@ -5295,8 +5244,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:53
#, python-format
msgid ""
"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:61
@ -5305,9 +5253,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:67
msgid ""
"This stock item is serialized - it has a unique serial number and the "
"quantity cannot be adjusted."
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
#: stock/templates/stock/item_base.html:71
@ -5315,8 +5261,7 @@ msgid "This stock item cannot be deleted as it has child items"
msgstr ""
#: stock/templates/stock/item_base.html:75
msgid ""
"This stock item will be automatically deleted when all stock is depleted."
msgid "This stock item will be automatically deleted when all stock is depleted."
msgstr ""
#: stock/templates/stock/item_base.html:95
@ -5465,8 +5410,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
msgid ""
"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgstr ""
#: stock/templates/stock/item_install.html:7
@ -5512,9 +5456,7 @@ msgid "Add Test Data"
msgstr ""
#: stock/templates/stock/location.html:20
msgid ""
"You are not in the list of owners of this location. This stock location "
"cannot be edited."
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
#: stock/templates/stock/location.html:37
@ -6051,10 +5993,8 @@ msgstr ""
#: templates/InvenTree/settings/theme.html:29
#, python-format
msgid ""
"\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
"color theme was not found.<br>\n"
msgid "\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
"\t\tPlease select another color theme :)\n"
"\t"
msgstr ""
@ -6205,8 +6145,7 @@ msgid "Link Barcode to Stock Item"
msgstr ""
#: templates/js/barcode.js:311
msgid ""
"This will remove the association between this stock item and the barcode"
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
#: templates/js/barcode.js:317
@ -7108,21 +7047,15 @@ msgid "Change password"
msgstr ""
#: templates/registration/password_reset_confirm.html:61
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
msgstr ""
#: templates/registration/password_reset_done.html:52
msgid ""
"We've emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
msgstr ""
#: templates/registration/password_reset_done.html:55
msgid ""
"If you don't receive an email, please make sure you've entered the address "
"you registered with, and check your spam folder."
msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
msgstr ""
#: templates/registration/password_reset_form.html:53

View File

@ -1,24 +1,16 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-21 17:15+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"POT-Creation-Date: 2021-04-21 09:17+0000\n"
"PO-Revision-Date: 2021-04-21 09:33\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
#: InvenTree/api.py:64
msgid "API endpoint not found"
@ -36,8 +28,8 @@ msgstr ""
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:110 build/forms.py:101 build/forms.py:122
#: build/forms.py:144 build/forms.py:168 build/forms.py:184 build/forms.py:226
#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
#: order/forms.py:71 part/forms.py:134
msgid "Confirm"
@ -361,15 +353,15 @@ msgstr ""
msgid "Barcode associated with StockItem"
msgstr ""
#: build/forms.py:36
#: build/forms.py:37
msgid "Build Order reference"
msgstr ""
#: build/forms.py:37
#: build/forms.py:38
msgid "Order target date"
msgstr ""
#: build/forms.py:41 build/templates/build/build_base.html:136
#: build/forms.py:42 build/templates/build/build_base.html:136
#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:117
@ -379,12 +371,11 @@ msgstr ""
msgid "Target Date"
msgstr ""
#: build/forms.py:42 build/models.py:224
msgid ""
"Target date for build completion. Build will be overdue after this date."
#: build/forms.py:43 build/models.py:224
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/forms.py:47 build/forms.py:89 build/forms.py:265 build/models.py:1227
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:123
@ -416,43 +407,43 @@ msgstr ""
msgid "Quantity"
msgstr ""
#: build/forms.py:48
#: build/forms.py:49
msgid "Number of items to build"
msgstr ""
#: build/forms.py:90
#: build/forms.py:91
msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:94 order/forms.py:233 stock/forms.py:118
#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
msgid "Serial Numbers"
msgstr ""
#: build/forms.py:96
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
msgstr ""
#: build/forms.py:102
#: build/forms.py:103
msgid "Confirm creation of build output"
msgstr ""
#: build/forms.py:123
#: build/forms.py:124
msgid "Confirm deletion of build output"
msgstr ""
#: build/forms.py:144
#: build/forms.py:145
msgid "Confirm unallocation of stock"
msgstr ""
#: build/forms.py:168
#: build/forms.py:169
msgid "Confirm stock allocation"
msgstr ""
#: build/forms.py:185
#: build/forms.py:186
msgid "Mark build as complete"
msgstr ""
#: build/forms.py:209 build/templates/build/auto_allocate.html:18
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
#: order/forms.py:82 stock/forms.py:347
#: stock/templates/stock/item_base.html:274
#: stock/templates/stock/stock_adjust.html:17
@ -462,11 +453,11 @@ msgstr ""
msgid "Location"
msgstr ""
#: build/forms.py:210
#: build/forms.py:211
msgid "Location of completed parts"
msgstr ""
#: build/forms.py:214 build/templates/build/build_base.html:128
#: build/forms.py:215 build/templates/build/build_base.html:128
#: build/templates/build/detail.html:59 order/models.py:445
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
@ -476,31 +467,31 @@ msgstr ""
msgid "Status"
msgstr ""
#: build/forms.py:215
#: build/forms.py:216
msgid "Build output stock status"
msgstr ""
#: build/forms.py:222
#: build/forms.py:223
msgid "Confirm incomplete"
msgstr ""
#: build/forms.py:223
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
msgstr ""
#: build/forms.py:226
#: build/forms.py:227
msgid "Confirm build completion"
msgstr ""
#: build/forms.py:251
#: build/forms.py:252
msgid "Confirm cancel"
msgstr ""
#: build/forms.py:251 build/views.py:66
#: build/forms.py:252 build/views.py:66
msgid "Confirm build cancellation"
msgstr ""
#: build/forms.py:265
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
msgstr ""
@ -589,9 +580,7 @@ msgid "Source Location"
msgstr ""
#: build/models.py:178
msgid ""
"Select location to take stock from for this build (leave blank to take from "
"any stock location)"
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
#: build/models.py:183
@ -729,8 +718,7 @@ msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
#: build/models.py:1143
msgid ""
"Build item must specify a build output, as master part is marked as trackable"
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
#: build/models.py:1147
@ -864,8 +852,7 @@ msgid "Automatically Allocate Stock"
msgstr ""
#: build/templates/build/auto_allocate.html:10
msgid ""
"The following stock items will be allocated to the specified build output"
msgid "The following stock items will be allocated to the specified build output"
msgstr ""
#: build/templates/build/auto_allocate.html:37
@ -1091,9 +1078,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
msgid ""
"The allocated stock will be installed into the following build output:<br><i>"
"%(output)s</i>"
msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
msgstr ""
#: build/templates/build/create_build_item.html:17
@ -2032,10 +2017,8 @@ msgstr ""
#: company/templates/company/delete.html:12
#, python-format
msgid ""
"There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be "
"deleted."
msgid "There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be deleted."
msgstr ""
#: company/templates/company/detail.html:21
@ -2199,9 +2182,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_delete.html:36
#, python-format
msgid ""
"There are %(count)s suppliers defined for this manufacturer part. If you "
"delete it, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
@ -2585,8 +2566,7 @@ msgid "Enter sales order number"
msgstr ""
#: order/forms.py:145 order/models.py:452
msgid ""
"Target date for order completion. Order will be overdue after this date."
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
#: order/forms.py:235
@ -2655,8 +2635,7 @@ msgid "Target Delivery Date"
msgstr ""
#: order/models.py:213
msgid ""
"Expected date for order delivery. Order will be overdue after this date."
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
#: order/models.py:219
@ -2851,8 +2830,7 @@ msgid "Marking this order as complete will remove these line items."
msgstr ""
#: order/templates/order/order_issue.html:7
msgid ""
"After placing this purchase order, line items will no longer be editable."
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
#: order/templates/order/order_notes.html:13
@ -2903,13 +2881,11 @@ msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:45
#, python-format
msgid "Create new purchase order for %(name)s"
msgid "Create new purchase order for {{ supplier.name }}"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:68
#, python-format
msgid "Select a purchase order for %(name)s"
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:12
@ -3105,9 +3081,7 @@ msgid "Sales Order Notes"
msgstr ""
#: order/templates/order/sales_order_ship.html:10
msgid ""
"This order has not been fully allocated. If the order is marked as shipped, "
"it can no longer be adjusted."
msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
msgstr ""
#: order/templates/order/sales_order_ship.html:12
@ -3828,9 +3802,7 @@ msgid "Select Related Part"
msgstr ""
#: part/models.py:2440
msgid ""
"Error creating relationship: check that the part is not related to itself "
"and that the relationship is unique"
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/allocation.html:11
@ -3861,8 +3833,7 @@ msgstr ""
#: part/templates/part/bom.html:21
#, python-format
msgid ""
"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:25
@ -3997,8 +3968,7 @@ msgid "Requirements for BOM upload"
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
msgid ""
"The BOM file must contain the required named columns as provided in the "
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
@ -4015,8 +3985,7 @@ msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
msgid ""
"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgstr ""
#: part/templates/part/bom_validate.html:9
@ -4117,8 +4086,7 @@ msgid "This category contains %(count)s child categories"
msgstr ""
#: part/templates/part/category_delete.html:9
msgid ""
"If this category is deleted, these child categories will be moved to the"
msgid "If this category is deleted, these child categories will be moved to the"
msgstr ""
#: part/templates/part/category_delete.html:11
@ -4136,15 +4104,11 @@ msgstr ""
#: part/templates/part/category_delete.html:27
#, python-format
msgid ""
"If this category is deleted, these parts will be moved to the parent "
"category %(path)s"
msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
msgstr ""
#: part/templates/part/category_delete.html:29
msgid ""
"If this category is deleted, these parts will be moved to the top-level "
"category Teile"
msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
msgstr ""
#: part/templates/part/category_navbar.html:34
@ -4491,37 +4455,27 @@ msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
msgid ""
"This part is used in BOMs for %(count)s other parts. If you delete this "
"part, the BOMs for the following parts will be updated"
msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
msgstr ""
#: part/templates/part/partial_delete.html:22
#, python-format
msgid ""
"There are %(count)s stock entries defined for this part. If you delete this "
"part, the following stock entries will also be deleted:"
msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:33
#, python-format
msgid ""
"There are %(count)s manufacturers defined for this part. If you delete this "
"part, the following manufacturer parts will also be deleted:"
msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:44
#, python-format
msgid ""
"There are %(count)s suppliers defined for this part. If you delete this "
"part, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:55
#, python-format
msgid ""
"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
"part will permanently remove this tracking information."
msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
msgstr ""
#: part/templates/part/related.html:18
@ -4944,9 +4898,7 @@ msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
#: stock/forms.py:169
msgid ""
"Destination for serialized stock (by default, will remain in current "
"location)"
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
#: stock/forms.py:171
@ -5128,8 +5080,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:476
msgid ""
"Expiry date for stock item. Stock will be considered expired after this date"
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
#: stock/models.py:489
@ -5276,9 +5227,7 @@ msgid "Stock Item Attachments"
msgstr ""
#: stock/templates/stock/item_base.html:24
msgid ""
"You are not in the list of owners of this item. This stock item cannot be "
"edited."
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
#: stock/templates/stock/item_base.html:31
@ -5295,8 +5244,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:53
#, python-format
msgid ""
"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:61
@ -5305,9 +5253,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:67
msgid ""
"This stock item is serialized - it has a unique serial number and the "
"quantity cannot be adjusted."
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
#: stock/templates/stock/item_base.html:71
@ -5315,8 +5261,7 @@ msgid "This stock item cannot be deleted as it has child items"
msgstr ""
#: stock/templates/stock/item_base.html:75
msgid ""
"This stock item will be automatically deleted when all stock is depleted."
msgid "This stock item will be automatically deleted when all stock is depleted."
msgstr ""
#: stock/templates/stock/item_base.html:95
@ -5465,8 +5410,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
msgid ""
"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgstr ""
#: stock/templates/stock/item_install.html:7
@ -5512,9 +5456,7 @@ msgid "Add Test Data"
msgstr ""
#: stock/templates/stock/location.html:20
msgid ""
"You are not in the list of owners of this location. This stock location "
"cannot be edited."
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
#: stock/templates/stock/location.html:37
@ -6051,10 +5993,8 @@ msgstr ""
#: templates/InvenTree/settings/theme.html:29
#, python-format
msgid ""
"\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
"color theme was not found.<br>\n"
msgid "\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
"\t\tPlease select another color theme :)\n"
"\t"
msgstr ""
@ -6205,8 +6145,7 @@ msgid "Link Barcode to Stock Item"
msgstr ""
#: templates/js/barcode.js:311
msgid ""
"This will remove the association between this stock item and the barcode"
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
#: templates/js/barcode.js:317
@ -7108,21 +7047,15 @@ msgid "Change password"
msgstr ""
#: templates/registration/password_reset_confirm.html:61
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
msgstr ""
#: templates/registration/password_reset_done.html:52
msgid ""
"We've emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
msgstr ""
#: templates/registration/password_reset_done.html:55
msgid ""
"If you don't receive an email, please make sure you've entered the address "
"you registered with, and check your spam folder."
msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
msgstr ""
#: templates/registration/password_reset_form.html:53

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,16 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-21 17:15+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"POT-Creation-Date: 2021-04-21 09:17+0000\n"
"PO-Revision-Date: 2021-04-21 09:33\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: InvenTree/api.py:64
msgid "API endpoint not found"
@ -33,8 +28,8 @@ msgstr ""
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:110 build/forms.py:101 build/forms.py:122
#: build/forms.py:144 build/forms.py:168 build/forms.py:184 build/forms.py:226
#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
#: order/forms.py:71 part/forms.py:134
msgid "Confirm"
@ -358,15 +353,15 @@ msgstr ""
msgid "Barcode associated with StockItem"
msgstr ""
#: build/forms.py:36
#: build/forms.py:37
msgid "Build Order reference"
msgstr ""
#: build/forms.py:37
#: build/forms.py:38
msgid "Order target date"
msgstr ""
#: build/forms.py:41 build/templates/build/build_base.html:136
#: build/forms.py:42 build/templates/build/build_base.html:136
#: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:117
@ -376,12 +371,11 @@ msgstr ""
msgid "Target Date"
msgstr ""
#: build/forms.py:42 build/models.py:224
msgid ""
"Target date for build completion. Build will be overdue after this date."
#: build/forms.py:43 build/models.py:224
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/forms.py:47 build/forms.py:89 build/forms.py:265 build/models.py:1227
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:123
@ -413,43 +407,43 @@ msgstr ""
msgid "Quantity"
msgstr ""
#: build/forms.py:48
#: build/forms.py:49
msgid "Number of items to build"
msgstr ""
#: build/forms.py:90
#: build/forms.py:91
msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:94 order/forms.py:233 stock/forms.py:118
#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
msgid "Serial Numbers"
msgstr ""
#: build/forms.py:96
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
msgstr ""
#: build/forms.py:102
#: build/forms.py:103
msgid "Confirm creation of build output"
msgstr ""
#: build/forms.py:123
#: build/forms.py:124
msgid "Confirm deletion of build output"
msgstr ""
#: build/forms.py:144
#: build/forms.py:145
msgid "Confirm unallocation of stock"
msgstr ""
#: build/forms.py:168
#: build/forms.py:169
msgid "Confirm stock allocation"
msgstr ""
#: build/forms.py:185
#: build/forms.py:186
msgid "Mark build as complete"
msgstr ""
#: build/forms.py:209 build/templates/build/auto_allocate.html:18
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
#: order/forms.py:82 stock/forms.py:347
#: stock/templates/stock/item_base.html:274
#: stock/templates/stock/stock_adjust.html:17
@ -459,11 +453,11 @@ msgstr ""
msgid "Location"
msgstr ""
#: build/forms.py:210
#: build/forms.py:211
msgid "Location of completed parts"
msgstr ""
#: build/forms.py:214 build/templates/build/build_base.html:128
#: build/forms.py:215 build/templates/build/build_base.html:128
#: build/templates/build/detail.html:59 order/models.py:445
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
@ -473,31 +467,31 @@ msgstr ""
msgid "Status"
msgstr ""
#: build/forms.py:215
#: build/forms.py:216
msgid "Build output stock status"
msgstr ""
#: build/forms.py:222
#: build/forms.py:223
msgid "Confirm incomplete"
msgstr ""
#: build/forms.py:223
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
msgstr ""
#: build/forms.py:226
#: build/forms.py:227
msgid "Confirm build completion"
msgstr ""
#: build/forms.py:251
#: build/forms.py:252
msgid "Confirm cancel"
msgstr ""
#: build/forms.py:251 build/views.py:66
#: build/forms.py:252 build/views.py:66
msgid "Confirm build cancellation"
msgstr ""
#: build/forms.py:265
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
msgstr ""
@ -586,9 +580,7 @@ msgid "Source Location"
msgstr ""
#: build/models.py:178
msgid ""
"Select location to take stock from for this build (leave blank to take from "
"any stock location)"
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
#: build/models.py:183
@ -726,8 +718,7 @@ msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
#: build/models.py:1143
msgid ""
"Build item must specify a build output, as master part is marked as trackable"
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
#: build/models.py:1147
@ -861,8 +852,7 @@ msgid "Automatically Allocate Stock"
msgstr ""
#: build/templates/build/auto_allocate.html:10
msgid ""
"The following stock items will be allocated to the specified build output"
msgid "The following stock items will be allocated to the specified build output"
msgstr ""
#: build/templates/build/auto_allocate.html:37
@ -1088,9 +1078,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
msgid ""
"The allocated stock will be installed into the following build output:<br><i>"
"%(output)s</i>"
msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
msgstr ""
#: build/templates/build/create_build_item.html:17
@ -2029,10 +2017,8 @@ msgstr ""
#: company/templates/company/delete.html:12
#, python-format
msgid ""
"There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be "
"deleted."
msgid "There are %(count)s parts sourced from this company.<br>\n"
"If this supplier is deleted, these supplier part entries will also be deleted."
msgstr ""
#: company/templates/company/detail.html:21
@ -2196,9 +2182,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_delete.html:36
#, python-format
msgid ""
"There are %(count)s suppliers defined for this manufacturer part. If you "
"delete it, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
@ -2582,8 +2566,7 @@ msgid "Enter sales order number"
msgstr ""
#: order/forms.py:145 order/models.py:452
msgid ""
"Target date for order completion. Order will be overdue after this date."
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
#: order/forms.py:235
@ -2652,8 +2635,7 @@ msgid "Target Delivery Date"
msgstr ""
#: order/models.py:213
msgid ""
"Expected date for order delivery. Order will be overdue after this date."
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
#: order/models.py:219
@ -2848,8 +2830,7 @@ msgid "Marking this order as complete will remove these line items."
msgstr ""
#: order/templates/order/order_issue.html:7
msgid ""
"After placing this purchase order, line items will no longer be editable."
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
#: order/templates/order/order_notes.html:13
@ -2900,13 +2881,11 @@ msgid "Select Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:45
#, python-format
msgid "Create new purchase order for %(name)s"
msgid "Create new purchase order for {{ supplier.name }}"
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:68
#, python-format
msgid "Select a purchase order for %(name)s"
msgid "Select a purchase order for"
msgstr ""
#: order/templates/order/po_attachments.html:12
@ -3102,9 +3081,7 @@ msgid "Sales Order Notes"
msgstr ""
#: order/templates/order/sales_order_ship.html:10
msgid ""
"This order has not been fully allocated. If the order is marked as shipped, "
"it can no longer be adjusted."
msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
msgstr ""
#: order/templates/order/sales_order_ship.html:12
@ -3825,9 +3802,7 @@ msgid "Select Related Part"
msgstr ""
#: part/models.py:2440
msgid ""
"Error creating relationship: check that the part is not related to itself "
"and that the relationship is unique"
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/allocation.html:11
@ -3858,8 +3833,7 @@ msgstr ""
#: part/templates/part/bom.html:21
#, python-format
msgid ""
"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:25
@ -3994,8 +3968,7 @@ msgid "Requirements for BOM upload"
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
msgid ""
"The BOM file must contain the required named columns as provided in the "
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
#: part/templates/part/bom_upload/upload_file.html:21
@ -4012,8 +3985,7 @@ msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
msgid ""
"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
msgstr ""
#: part/templates/part/bom_validate.html:9
@ -4114,8 +4086,7 @@ msgid "This category contains %(count)s child categories"
msgstr ""
#: part/templates/part/category_delete.html:9
msgid ""
"If this category is deleted, these child categories will be moved to the"
msgid "If this category is deleted, these child categories will be moved to the"
msgstr ""
#: part/templates/part/category_delete.html:11
@ -4133,15 +4104,11 @@ msgstr ""
#: part/templates/part/category_delete.html:27
#, python-format
msgid ""
"If this category is deleted, these parts will be moved to the parent "
"category %(path)s"
msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
msgstr ""
#: part/templates/part/category_delete.html:29
msgid ""
"If this category is deleted, these parts will be moved to the top-level "
"category Teile"
msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
msgstr ""
#: part/templates/part/category_navbar.html:34
@ -4488,37 +4455,27 @@ msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
msgid ""
"This part is used in BOMs for %(count)s other parts. If you delete this "
"part, the BOMs for the following parts will be updated"
msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
msgstr ""
#: part/templates/part/partial_delete.html:22
#, python-format
msgid ""
"There are %(count)s stock entries defined for this part. If you delete this "
"part, the following stock entries will also be deleted:"
msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:33
#, python-format
msgid ""
"There are %(count)s manufacturers defined for this part. If you delete this "
"part, the following manufacturer parts will also be deleted:"
msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:44
#, python-format
msgid ""
"There are %(count)s suppliers defined for this part. If you delete this "
"part, the following supplier parts will also be deleted:"
msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
msgstr ""
#: part/templates/part/partial_delete.html:55
#, python-format
msgid ""
"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
"part will permanently remove this tracking information."
msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
msgstr ""
#: part/templates/part/related.html:18
@ -4941,9 +4898,7 @@ msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
#: stock/forms.py:169
msgid ""
"Destination for serialized stock (by default, will remain in current "
"location)"
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
#: stock/forms.py:171
@ -5125,8 +5080,7 @@ msgid "Destination Sales Order"
msgstr ""
#: stock/models.py:476
msgid ""
"Expiry date for stock item. Stock will be considered expired after this date"
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
#: stock/models.py:489
@ -5273,9 +5227,7 @@ msgid "Stock Item Attachments"
msgstr ""
#: stock/templates/stock/item_base.html:24
msgid ""
"You are not in the list of owners of this item. This stock item cannot be "
"edited."
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
#: stock/templates/stock/item_base.html:31
@ -5292,8 +5244,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:53
#, python-format
msgid ""
"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:61
@ -5302,9 +5253,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
msgstr ""
#: stock/templates/stock/item_base.html:67
msgid ""
"This stock item is serialized - it has a unique serial number and the "
"quantity cannot be adjusted."
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
#: stock/templates/stock/item_base.html:71
@ -5312,8 +5261,7 @@ msgid "This stock item cannot be deleted as it has child items"
msgstr ""
#: stock/templates/stock/item_base.html:75
msgid ""
"This stock item will be automatically deleted when all stock is depleted."
msgid "This stock item will be automatically deleted when all stock is depleted."
msgstr ""
#: stock/templates/stock/item_base.html:95
@ -5462,8 +5410,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
msgid ""
"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
msgstr ""
#: stock/templates/stock/item_install.html:7
@ -5509,9 +5456,7 @@ msgid "Add Test Data"
msgstr ""
#: stock/templates/stock/location.html:20
msgid ""
"You are not in the list of owners of this location. This stock location "
"cannot be edited."
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
#: stock/templates/stock/location.html:37
@ -6048,10 +5993,8 @@ msgstr ""
#: templates/InvenTree/settings/theme.html:29
#, python-format
msgid ""
"\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
"color theme was not found.<br>\n"
msgid "\n"
"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
"\t\tPlease select another color theme :)\n"
"\t"
msgstr ""
@ -6202,8 +6145,7 @@ msgid "Link Barcode to Stock Item"
msgstr ""
#: templates/js/barcode.js:311
msgid ""
"This will remove the association between this stock item and the barcode"
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
#: templates/js/barcode.js:317
@ -7105,21 +7047,15 @@ msgid "Change password"
msgstr ""
#: templates/registration/password_reset_confirm.html:61
msgid ""
"The password reset link was invalid, possibly because it has already been "
"used. Please request a new password reset."
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
msgstr ""
#: templates/registration/password_reset_done.html:52
msgid ""
"We've emailed you instructions for setting your password, if an account "
"exists with the email you entered. You should receive them shortly."
msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
msgstr ""
#: templates/registration/password_reset_done.html:55
msgid ""
"If you don't receive an email, please make sure you've entered the address "
"you registered with, and check your spam folder."
msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
msgstr ""
#: templates/registration/password_reset_form.html:53
@ -7285,3 +7221,4 @@ msgstr ""
#: users/models.py:184
msgid "Permission to delete items"
msgstr ""

View File

@ -9,6 +9,9 @@ from django.conf import settings
from PIL import UnidentifiedImageError
from InvenTree.ready import canAppAccessDatabase
logger = logging.getLogger("inventree")
@ -20,8 +23,9 @@ class PartConfig(AppConfig):
This function is called whenever the Part app is loaded.
"""
self.generate_part_thumbnails()
self.update_trackable_status()
if canAppAccessDatabase():
self.generate_part_thumbnails()
self.update_trackable_status()
def generate_part_thumbnails(self):
"""

View File

@ -19,18 +19,18 @@
{% block js_ready %}
{{ block.super }}
/* Hide Button Toolbar */
window.onload = function hideButtonToolbar() {
var toolbar = document.getElementById("button-toolbar");
toolbar.style.display = "none";
};
/* Hide Button Toolbar */
window.onload = function hideButtonToolbar() {
var toolbar = document.getElementById("button-toolbar");
toolbar.style.display = "none";
};
loadParametricPartTable(
"#parametric-part-table",
{
headers: {{ headers|safe }},
data: {{ parameters|safe }},
headers: {{ headers|safe }},
data: {{ parameters|safe }},
}
);

View File

@ -5,6 +5,8 @@ import logging
from django.apps import AppConfig
from django.conf import settings
from InvenTree.ready import canAppAccessDatabase
logger = logging.getLogger("inventree")
@ -17,8 +19,9 @@ class ReportConfig(AppConfig):
This function is called whenever the report app is loaded
"""
self.create_default_test_reports()
self.create_default_build_reports()
if canAppAccessDatabase():
self.create_default_test_reports()
self.create_default_build_reports()
def create_default_reports(self, model, reports):
"""

View File

@ -44,7 +44,7 @@
});
{% if category %}
$("#param-table").inventreeTable({
$("#param-table").inventreeTable({
url: "{% url 'api-part-category-parameters' pk=category.pk %}",
queryParams: {
ordering: 'name',
@ -66,7 +66,7 @@
field: 'default_value',
title: '{% trans "Default Value" %}',
sortable: 'true',
formatter: function(value, row, index, field) {
formatter: function(value, row, index, field) {
var bEdit = "<button title='{% trans "Edit Template" %}' class='template-edit btn btn-default btn-glyph' type='button' pk='" + row.pk + "'><span class='fas fa-edit'></span></button>";
var bDel = "<button title='{% trans "Delete Template" %}' class='template-delete btn btn-default btn-glyph' type='button' pk='" + row.pk + "'><span class='fas fa-trash-alt icon-red'></span></button>";
@ -79,7 +79,7 @@
]
});
$("#new-param").click(function() {
$("#new-param").click(function() {
launchModalForm("{% url 'category-param-template-create' category.pk %}", {
success: function() {
$("#param-table").bootstrapTable('refresh');

View File

@ -21,7 +21,7 @@
{% include "InvenTree/settings/setting.html" with key="STOCK_STALE_DAYS" icon="fa-calendar" %}
{% include "InvenTree/settings/setting.html" with key="STOCK_ALLOW_EXPIRED_SALE" icon="fa-truck" %}
{% include "InvenTree/settings/setting.html" with key="STOCK_ALLOW_EXPIRED_BUILD" icon="fa-tools" %}
{% include "InvenTree/settings/setting.html" with key="STOCK_OWNERSHIP_CONTROL" icon="fa-users" %}
{% include "InvenTree/settings/setting.html" with key="STOCK_OWNERSHIP_CONTROL" icon="fa-users" %}
</tbody>
</table>
{% endblock %}

View File

@ -25,12 +25,12 @@
</form>
{% if invalid_color_theme %}
<div class="alert alert-danger alert-block" role="alert" style="display: inline-block;">
{% blocktrans %}
The CSS sheet "{{invalid_color_theme}}.css" for the currently selected color theme was not found.<br>
Please select another color theme :)
{% endblocktrans %}
</div>
<div class="alert alert-danger alert-block" role="alert" style="display: inline-block;">
{% blocktrans %}
The CSS sheet "{{invalid_color_theme}}.css" for the currently selected color theme was not found.<br>
Please select another color theme :)
{% endblocktrans %}
</div>
{% endif %}
{% endblock %}

View File

@ -60,7 +60,7 @@
</tr>
<tr>
<td><span class='fas fa-mobile-alt'></span></td>
<td>{% trans "Get the App" %}</td>
<td>{% trans "Mobile App" %}</td>
<td><a href="https://inventree.readthedocs.io/en/latest/app/app">https://inventree.readthedocs.io/en/latest/app/app</a></td>
</tr>
<tr>
@ -74,7 +74,7 @@
</div>
</div>
<div class='modal-footer'>
<button type='button' class='btn btn-default' data-dismiss='modal'>Close</button>
<button type='button' class='btn btn-default' data-dismiss='modal'>{% trans "Close" %}</button>
</div>
</div>
</div>

View File

@ -10,7 +10,7 @@
<a class="navbar-brand" id='logo' href="{% url 'index' %}" style="padding-top: 7px; padding-bottom: 5px;"><img src="{% static 'img/inventree.png' %}" width="32" height="32" style="display:block; margin: auto;"/></a>
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="sr-only">{% trans "Toggle navigation" %}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>

View File

@ -5,21 +5,25 @@ from django.db.utils import OperationalError, ProgrammingError
from django.apps import AppConfig
from InvenTree.ready import canAppAccessDatabase
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
try:
self.assign_permissions()
except (OperationalError, ProgrammingError):
pass
if canAppAccessDatabase():
try:
self.update_owners()
except (OperationalError, ProgrammingError):
pass
try:
self.assign_permissions()
except (OperationalError, ProgrammingError):
pass
try:
self.update_owners()
except (OperationalError, ProgrammingError):
pass
def assign_permissions(self):

View File

@ -0,0 +1,53 @@
- model: auth.group
pk: 1
fields:
name: "Viewers"
- model: auth.group
pk: 2
fields:
name: "Engineers"
- model: auth.group
pk: 3
fields:
name: "Sales"
- model: auth.user
pk: 1
fields:
username: "sue_the_superuser"
is_superuser: true
- model: auth.user
pk: 2
fields:
username: "engineer_eddie"
groups:
- 2
is_active: true
is_staff: false
is_superuser: false
- model: auth.user
pk: 3
fields:
username: "alanallgroup"
first_name: "Alan"
last_name: "Allgroup"
is_active: false
groups:
- 1
- 2
- 3
- model: auth.user
pk: 4
fields:
username: "sam"
first_name: "Samuel"
last_name: "Salesperson"
groups:
- 3
is_staff: true
is_superuser: true

View File

@ -14,6 +14,8 @@ from django.db.models.signals import post_save, post_delete
import logging
from InvenTree.ready import canAppAccessDatabase
logger = logging.getLogger("inventree")
@ -59,6 +61,12 @@ class RuleSet(models.Model):
'authtoken_token',
'authtoken_tokenproxy',
'users_ruleset',
'report_reportasset',
'report_reportsnippet',
'report_billofmaterialsreport',
'report_purchaseorderreport',
'report_salesorderreport',
],
'part_category': [
'part_partcategory',
@ -128,11 +136,6 @@ class RuleSet(models.Model):
'common_colortheme',
'common_inventreesetting',
'company_contact',
'report_reportasset',
'report_reportsnippet',
'report_billofmaterialsreport',
'report_purchaseorderreport',
'report_salesorderreport',
'users_owner',
# Third-party tables
@ -269,6 +272,9 @@ def update_group_roles(group, debug=False):
"""
if not canAppAccessDatabase():
return
# List of permissions already associated with this group
group_permissions = set()

View File

@ -35,10 +35,12 @@ InvenTree is supported by a [companion mobile app](https://inventree.readthedocs
# Translation
![de translation](https://img.shields.io/badge/dynamic/json?color=blue&label=de&style=flat&query=%24.progress.0.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
![es-ES translation](https://img.shields.io/badge/dynamic/json?color=blue&label=es-ES&style=flat&query=%24.progress.1.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
![fr translation](https://img.shields.io/badge/dynamic/json?color=blue&label=fr&style=flat&query=%24.progress.3.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
![it translation](https://img.shields.io/badge/dynamic/json?color=blue&label=it&style=flat&query=%24.progress.4.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
![pl translation](https://img.shields.io/badge/dynamic/json?color=blue&label=pl&style=flat&query=%24.progress.5.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
![ru translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ru&style=flat&query=%24.progress.6.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
![tr translation](https://img.shields.io/badge/dynamic/json?color=blue&label=tr&style=flat&query=%24.progress.6.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
![zh-CN translation](https://img.shields.io/badge/dynamic/json?color=blue&label=zh-CN&style=flat&query=%24.progress.7.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-14720186-452300.json)
Native language translation of the InvenTree web application is [community contributed via crowdin](https://crowdin.com/project/inventree). **Contributions are welcomed and encouraged**.

View File

@ -21,7 +21,6 @@ ENV INVENTREE_MNG_DIR="${INVENTREE_SRC_DIR}/InvenTree"
ENV INVENTREE_DATA_DIR="${INVENTREE_HOME}/data"
ENV INVENTREE_STATIC_ROOT="${INVENTREE_HOME}/static"
ENV INVENTREE_MEDIA_ROOT="${INVENTREE_DATA_DIR}/media"
ENV INVENTREE_BACKUP_DIR="${INVENTREE_DATA_DIR}/backup"
ENV INVENTREE_CONFIG_FILE="${INVENTREE_DATA_DIR}/config.yaml"
ENV INVENTREE_SECRET_KEY_FILE="${INVENTREE_DATA_DIR}/secret_key.txt"
@ -29,16 +28,6 @@ ENV INVENTREE_SECRET_KEY_FILE="${INVENTREE_DATA_DIR}/secret_key.txt"
# Default web server port is 8000
ENV INVENTREE_WEB_PORT="8000"
# Pass DB configuration through as environment variables
# Default configuration = postgresql
ENV INVENTREE_DB_ENGINE="postgresql"
ENV INVENTREE_DB_NAME="inventree"
ENV INVENTREE_DB_HOST="db"
ENV INVENTREE_DB_PORT="5432"
# INVENTREE_DB_USER must be specified at run-time
# INVENTREE_DB_PASSWORD must be specified at run-time
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.build-date=${DATE} \
org.label-schema.vendor="inventree" \

View File

@ -19,8 +19,8 @@ services:
# Use PostgreSQL as the database backend
# Note: this can be changed to a different backend,
# just make sure that you change the INVENTREE_DB_xxx vars below
db:
container_name: db
inventree-db:
container_name: inventree-db
image: postgres
ports:
- 5432/tcp
@ -35,49 +35,60 @@ services:
# InvenTree web server services
# Uses gunicorn as the web server
inventree:
container_name: inventree
inventree-server:
container_name: inventree-server
image: inventree/inventree:latest
expose:
- 8000
depends_on:
- db
- inventree-db
volumes:
- data:/home/inventree/data
- static:/home/inventree/static
environment:
# Default environment variables are configured to match the 'db' container
# Database permissions
# Note: If you change the database image, these will need to be adjusted
# Note: INVENTREE_DB_HOST should match the container name of the database
- INVENTREE_DB_USER=pguser
- INVENTREE_DB_PASSWORD=pgpassword
- INVENTREE_DB_ENGINE=postgresql
- INVENTREE_DB_NAME=inventree
- INVENTREE_DB_HOST=inventree-db
- INVENTREE_DB_PORT=5432
restart: unless-stopped
# Background worker process handles long-running or periodic tasks
worker:
container_name: worker
inventree-worker:
container_name: inventree-worker
image: inventree/inventree:latest
entrypoint: ./start_worker.sh
depends_on:
- db
- inventree
- inventree-db
- inventree-server
volumes:
- data:/home/inventree/data
- static:/home/inventree/static
environment:
# Default environment variables are configured to match the 'inventree' container
# Default environment variables are configured to match the 'db' container
# Note: If you change the database image, these will need to be adjusted
# Note: INVENTREE_DB_HOST should match the container name of the database
- INVENTREE_DB_USER=pguser
- INVENTREE_DB_PASSWORD=pgpassword
- INVENTREE_DB_ENGINE=postgresql
- INVENTREE_DB_NAME=inventree
- INVENTREE_DB_HOST=inventree-db
- INVENTREE_DB_PORT=5432
restart: unless-stopped
# nginx acts as a reverse proxy
# static files are served by nginx
# web requests are redirected to gunicorn
# NOTE: You will need to provide a working nginx.conf file!
proxy:
container_name: proxy
inventree-proxy:
container_name: inventree-proxy
image: nginx
depends_on:
- inventree
- inventree-server
ports:
# Change "1337" to the port that you want InvenTree web server to be available on
- 1337:80

View File

@ -4,9 +4,9 @@ server {
listen 80;
location / {
# Change 'inventree' to the name of the inventree server container,
# Change 'inventree-server' to the name of the inventree server container,
# and '8000' to the INVENTREE_WEB_PORT (if not default)
proxy_pass http://inventree:8000;
proxy_pass http://inventree-server:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
@ -27,6 +27,11 @@ server {
location /static/ {
alias /var/www/static/;
autoindex on;
# Caching settings
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
}

View File

@ -11,11 +11,6 @@ if [[ ! -d "$INVENTREE_MEDIA_ROOT" ]]; then
mkdir $INVENTREE_MEDIA_ROOT
fi
if [[ ! -d "$INVENTREE_BACKUP_DIR" ]]; then
echo "Creating directory $INVENTREE_BACKUP_DIR"
mkdir $INVENTREE_BACKUP_DIR
fi
# Check if "config.yaml" has been copied into the correct location
if test -f "$INVENTREE_CONFIG_FILE"; then
echo "$INVENTREE_CONFIG_FILE exists - skipping"
@ -39,6 +34,7 @@ echo "Running InvenTree database migrations and collecting static files..."
python manage.py check || exit 1
python manage.py migrate --noinput || exit 1
python manage.py migrate --run-syncdb || exit 1
python manage.py prerender || exit 1
python manage.py collectstatic --noinput || exit 1
python manage.py clearsessions || exit 1

View File

@ -11,11 +11,6 @@ if [[ ! -d "$INVENTREE_MEDIA_ROOT" ]]; then
mkdir $INVENTREE_MEDIA_ROOT
fi
if [[ ! -d "$INVENTREE_BACKUP_DIR" ]]; then
echo "Creating directory $INVENTREE_BACKUP_DIR"
mkdir $INVENTREE_BACKUP_DIR
fi
# Check if "config.yaml" has been copied into the correct location
if test -f "$INVENTREE_CONFIG_FILE"; then
echo "$INVENTREE_CONFIG_FILE exists - skipping"
@ -39,6 +34,7 @@ echo "Running InvenTree database migrations and collecting static files..."
python manage.py check || exit 1
python manage.py migrate --noinput || exit 1
python manage.py migrate --run-syncdb || exit 1
python manage.py prerender || exit 1
python manage.py collectstatic --noinput || exit 1
python manage.py clearsessions || exit 1

View File

@ -3,7 +3,6 @@ wheel>=0.34.2 # Wheel
Django==3.2 # Django package
pillow==8.1.1 # Image manipulation
djangorestframework==3.12.4 # DRF framework
django-dbbackup==3.3.0 # Database backup / restore functionality
django-cors-headers==3.2.0 # CORS headers extension for DRF
django-filter==2.4.0 # Extended filtering options
django-mptt==0.11.0 # Modified Preorder Tree Traversal

104
tasks.py
View File

@ -2,6 +2,7 @@
from shutil import copyfile
import os
import json
import sys
try:
@ -232,6 +233,31 @@ def coverage(c):
# Generate coverage report
c.run('coverage html')
def content_excludes():
"""
Returns a list of content types to exclude from import/export
"""
excludes = [
"contenttypes",
"sessions.session",
"auth.permission",
"error_report.error",
"admin.logentry",
"django_q.schedule",
"django_q.task",
"django_q.ormq",
]
output = ""
for e in excludes:
output += f"--exclude {e} "
return output
@task(help={'filename': "Output filename (default = 'data.json')"})
def export_records(c, filename='data.json'):
"""
@ -253,10 +279,37 @@ def export_records(c, filename='data.json'):
print("Cancelled export operation")
sys.exit(1)
cmd = f'dumpdata --exclude contenttypes --exclude auth.permission --indent 2 --output {filename}'
tmpfile = f"{filename}.tmp"
cmd = f"dumpdata --indent 2 --output {tmpfile} {content_excludes()}"
# Dump data to temporary file
manage(c, cmd, pty=True)
print("Running data post-processing step...")
# Post-process the file, to remove any "permissions" specified for a user or group
with open(tmpfile, "r") as f_in:
data = json.loads(f_in.read())
for entry in data:
if "model" in entry:
# Clear out any permissions specified for a group
if entry["model"] == "auth.group":
entry["fields"]["permissions"] = []
# Clear out any permissions specified for a user
if entry["model"] == "auth.user":
entry["fields"]["user_permissions"] = []
# Write the processed data to file
with open(filename, "w") as f_out:
f_out.write(json.dumps(data, indent=2))
print("Data export completed")
@task(help={'filename': 'Input filename'})
def import_records(c, filename='data.json'):
"""
@ -273,10 +326,33 @@ def import_records(c, filename='data.json'):
print(f"Importing database records from '{filename}'")
cmd = f'loaddata {filename}'
# Pre-process the data, to remove any "permissions" specified for a user or group
tmpfile = f"{filename}.tmp.json"
with open(filename, "r") as f_in:
data = json.loads(f_in.read())
for entry in data:
if "model" in entry:
# Clear out any permissions specified for a group
if entry["model"] == "auth.group":
entry["fields"]["permissions"] = []
# Clear out any permissions specified for a user
if entry["model"] == "auth.user":
entry["fields"]["user_permissions"] = []
# Write the processed data to the tmp file
with open(tmpfile, "w") as f_out:
f_out.write(json.dumps(data, indent=2))
cmd = f"loaddata {tmpfile} -i {content_excludes()}"
manage(c, cmd, pty=True)
print("Data import completed")
@task
def import_fixtures(c):
"""
@ -316,33 +392,15 @@ def import_fixtures(c):
'location',
'stock_tests',
'stock',
# Users
'users'
]
command = 'loaddata ' + ' '.join(fixtures)
manage(c, command, pty=True)
@task
def backup(c):
"""
Create a backup of database models and uploaded media files.
Backup files will be written to the 'backup_dir' file specified in 'config.yaml'
"""
manage(c, 'dbbackup')
manage(c, 'mediabackup')
@task
def restore(c):
"""
Restores database models and media files.
Backup files are read from the 'backup_dir' file specified in 'config.yaml'
"""
manage(c, 'dbrestore')
manage(c, 'mediarestore')
@task(help={'address': 'Server address:port (default=127.0.0.1:8000)'})
def server(c, address="127.0.0.1:8000"):