2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-12-28 15:04:05 +00:00

Merge branch 'stable'

This commit is contained in:
Oliver Walters
2022-08-01 17:45:40 +10:00
46 changed files with 1230 additions and 766 deletions

View File

@@ -2,11 +2,18 @@
# InvenTree API version
INVENTREE_API_VERSION = 68
INVENTREE_API_VERSION = 69
"""
Increment this API version number whenever there is a significant change to the API that any clients need to know about
v69 -> 2022-08-01 : https://github.com/inventree/InvenTree/pull/3443
- Updates the PartCategory list API:
- Improve query efficiency: O(n) becomes O(1)
- Rename 'parts' field to 'part_count'
- Updates the StockLocation list API:
- Improve query efficiency: O(n) becomes O(1)
v68 -> 2022-07-27 : https://github.com/inventree/InvenTree/pull/3417
- Allows SupplierPart list to be filtered by SKU value
- Allows SupplierPart list to be filtered by MPN value

View File

@@ -54,6 +54,42 @@ def generateTestKey(test_name):
return key
def constructPathString(path, max_chars=250):
"""Construct a 'path string' for the given path.
Arguments:
path: A list of strings e.g. ['path', 'to', 'location']
max_chars: Maximum number of characters
"""
pathstring = '/'.join(path)
idx = 0
# Replace middle elements to limit the pathstring
if len(pathstring) > max_chars:
mid = len(path) // 2
path_l = path[0:mid]
path_r = path[mid:]
# Ensure the pathstring length is limited
while len(pathstring) > max_chars:
# Remove an element from the list
if idx % 2 == 0:
path_l = path_l[:-1]
else:
path_r = path_r[1:]
subpath = path_l + ['...'] + path_r
pathstring = '/'.join(subpath)
idx += 1
return pathstring
def getMediaUrl(filename):
"""Return the qualified access path for the given file, under the media directory."""
return os.path.join(MEDIA_URL, str(filename))

View File

@@ -500,14 +500,25 @@ class InvenTreeTree(MPTTModel):
}
def save(self, *args, **kwargs):
"""Provide better error for invalid moves."""
"""Custom save method for InvenTreeTree abstract model"""
try:
super().save(*args, **kwargs)
except InvalidMove:
# Provide better error for parent selection
raise ValidationError({
'parent': _("Invalid choice"),
})
# Re-calculate the 'pathstring' field
pathstring = InvenTree.helpers.constructPathString(
[item.name for item in self.path]
)
if pathstring != self.pathstring:
self.pathstring = pathstring
super().save(force_update=True)
class Meta:
"""Metaclass defines extra model properties."""
@@ -542,6 +553,14 @@ class InvenTreeTree(MPTTModel):
verbose_name=_("parent"),
related_name='children')
# The 'pathstring' field is calculated each time the model is saved
pathstring = models.CharField(
blank=True,
max_length=250,
verbose_name=_('Path'),
help_text=_('Path')
)
@property
def item_count(self):
"""Return the number of items which exist *under* this node in the tree.
@@ -612,14 +631,6 @@ class InvenTreeTree(MPTTModel):
"""
return self.parentpath + [self]
@property
def pathstring(self):
"""Get a string representation for the path of this item.
e.g. "Top/Second/Third/This"
"""
return '/'.join([item.name for item in self.path])
def __str__(self):
"""String representation of a category is the full path to that category."""
return "{path} - {desc}".format(path=self.pathstring, desc=self.description)

View File

@@ -161,8 +161,8 @@ class NotificationMessageSerializer(InvenTreeModelSerializer):
"""Function to resolve generic object reference to target."""
target = get_objectreference(obj, 'target_content_type', 'target_object_id')
if 'link' not in target:
# Check if objekt has an absolute_url function
if target and 'link' not in target:
# Check if object has an absolute_url function
if hasattr(obj.target_object, 'get_absolute_url'):
target['link'] = obj.target_object.get_absolute_url()
else:
@@ -174,6 +174,7 @@ class NotificationMessageSerializer(InvenTreeModelSerializer):
f'admin:{meta.db_table}_change',
kwargs={'object_id': obj.target_object_id}
))
return target
def get_source(self, obj):

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:34\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:44\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API endpoint nebyl nalezen"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "Popis (volitelně)"
msgid "parent"
msgstr "nadřazený"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Čeština"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Němčina"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Řečtina"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Angličtina"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Španělština"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Španělština (Mexiko)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Farsi / Perština"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Francouzština"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Hebrejština"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Maďarština"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Italština"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japonština"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Korejština"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Nizozemština"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norština"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polština"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Ruština"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Švédština"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Thajština"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Turečtina"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamština"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Čínština"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:44\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API-Endpunkt nicht gefunden"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "Fehlerdetails finden Sie im Admin-Panel"
@@ -91,15 +91,15 @@ msgstr "E-Mail Adressen müssen übereinstimmen."
#: InvenTree/helpers.py:136
msgid "Connection error"
msgstr ""
msgstr "Verbindungsfehler"
#: InvenTree/helpers.py:140 InvenTree/helpers.py:145
msgid "Server responded with invalid status code"
msgstr ""
msgstr "Server antwortete mit ungültigem Statuscode"
#: InvenTree/helpers.py:142
msgid "Exception occurred"
msgstr ""
msgstr "Ausnahme aufgetreten"
#: InvenTree/helpers.py:150
msgid "Server responded with invalid Content-Length value"
@@ -107,15 +107,15 @@ msgstr ""
#: InvenTree/helpers.py:153
msgid "Image size is too large"
msgstr ""
msgstr "Bild ist zu groß"
#: InvenTree/helpers.py:165
msgid "Image download exceeded maximum size"
msgstr ""
msgstr "Bilddownload überschreitet maximale Größe"
#: InvenTree/helpers.py:170
msgid "Remote server returned empty response"
msgstr ""
msgstr "Remote-Server gab leere Antwort zurück"
#: InvenTree/helpers.py:178
msgid "Supplied URL is not a valid image file"
@@ -165,7 +165,7 @@ msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) üb
#: InvenTree/models.py:236
msgid "Improperly formatted pattern"
msgstr ""
msgstr "Falsch formatiertes Muster"
#: InvenTree/models.py:243
msgid "Unknown format key specified"
@@ -185,7 +185,7 @@ msgstr ""
#: InvenTree/models.py:304
msgid "Reference number is too large"
msgstr ""
msgstr "Referenznummer ist zu groß"
#: InvenTree/models.py:382
msgid "Missing file"
@@ -318,11 +318,11 @@ msgstr "Beschreibung (optional)"
msgid "parent"
msgstr "Eltern"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Serverfehler"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "Ein Fehler wurde vom Server protokolliert."
@@ -387,105 +387,105 @@ msgstr "URL"
#: InvenTree/serializers.py:603
msgid "URL of remote image file"
msgstr ""
msgstr "URL der Remote-Bilddatei"
#: InvenTree/serializers.py:617
msgid "Downloading images from remote URL is not enabled"
msgstr ""
msgstr "Das Herunterladen von Bildern von Remote-URLs ist nicht aktiviert"
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Tschechisch"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Deutsch"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Griechisch"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Englisch"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Spanisch"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Spanisch (Mexikanisch)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Persisch"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Französisch"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Hebräisch"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Ungarisch"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Italienisch"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japanisch"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Koreanisch"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Niederländisch"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norwegisch"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polnisch"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portugiesisch"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portugiesisch (Brasilien)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Russisch"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Schwedisch"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Thailändisch"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Türkisch"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamesisch"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Chinesisch"
@@ -1739,7 +1739,7 @@ msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt"
#: common/models.py:862
msgid "Download Size Limit"
msgstr ""
msgstr "Download-Größenlimit"
#: common/models.py:863
msgid "Maximum allowable download size for remote image"
@@ -1747,11 +1747,11 @@ msgstr ""
#: common/models.py:874
msgid "Require confirm"
msgstr ""
msgstr "Bestätigung verpflichtend"
#: common/models.py:875
msgid "Require explicit user confirmation for certain action."
msgstr ""
msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern."
#: common/models.py:881 templates/InvenTree/settings/sidebar.html:33
msgid "Barcode Support"
@@ -1975,7 +1975,7 @@ msgstr "Labeldruck über die Website aktivieren"
#: common/models.py:1072
msgid "Label Image DPI"
msgstr ""
msgstr "Label Bild DPI"
#: common/models.py:1073
msgid "DPI resolution when generating image files to supply to label printing plugins"
@@ -4460,7 +4460,7 @@ msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?"
#: part/models.py:922
msgid "Part notes"
msgstr ""
msgstr "Teile-Notizen"
#: part/models.py:924
msgid "BOM checksum"
@@ -6141,7 +6141,7 @@ msgstr "Test Notizen"
#: stock/serializers.py:72
msgid "Serial number is too large"
msgstr ""
msgstr "Seriennummer ist zu lang"
#: stock/serializers.py:173
msgid "Purchase price of this stock item"
@@ -6630,11 +6630,11 @@ msgstr "Keine Berechtigung zum Anzeigen dieser Seite."
#: templates/403_csrf.html:11
msgid "Authentication Failure"
msgstr ""
msgstr "Authentifizierungsfehler"
#: templates/403_csrf.html:14
msgid "You have been logged out from InvenTree."
msgstr ""
msgstr "Sie wurden von InvenTree abgemeldet."
#: templates/403_csrf.html:19 templates/navbar.html:142
msgid "Login"
@@ -6881,7 +6881,7 @@ msgstr "Plugin-Einstellungen"
#: templates/InvenTree/settings/plugin.html:16
msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage."
msgstr ""
msgstr "Wenn Sie die folgenden Einstellungen ändern, müssen Sie InvenTree sofort neu starten. Ändern Sie dies nicht während der aktiven Nutzung."
#: templates/InvenTree/settings/plugin.html:34
msgid "Plugins"
@@ -7889,11 +7889,11 @@ msgstr "Dateiformat auswählen"
#: templates/js/translated/bom.js:295
msgid "Multi Level BOM"
msgstr ""
msgstr "Multilevel Stückliste"
#: templates/js/translated/bom.js:296
msgid "Include BOM data for subassemblies"
msgstr ""
msgstr "Stücklisten-Daten für Untergruppen einbeziehen"
#: templates/js/translated/bom.js:301
msgid "Levels"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"POT-Creation-Date: 2022-07-31 13:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,7 +22,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -319,11 +319,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -394,99 +394,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"POT-Creation-Date: 2022-07-31 13:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,7 +22,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -319,11 +319,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -394,99 +394,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "Address e API peida nashod"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "Point de terminaison de l'API introuvable"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "Les détails de l'erreur peuvent être trouvées dans le panneau d'administration"
@@ -318,11 +318,11 @@ msgstr "Description (facultative)"
msgid "parent"
msgstr "parent"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Erreur serveur"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "Une erreur a été enregistrée par le serveur."
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Tchèque"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Allemand"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Grec"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Anglais"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Espagnol"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Espagnol (Mexique)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Farsi / Perse"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Français"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Hébreu"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Hongrois"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Italien"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japonais"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Coréen"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Néerlandais"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norvégien"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polonais"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portugais"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portugais (Brésilien)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Russe"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Suédois"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Thaïlandais"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Turc"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamien"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Chinois"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "תיאור (לא חובה)"
msgid "parent"
msgstr "מקור"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "גרמנית"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "יוונית"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "אנגלית"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "ספרדית"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "ספרדית (מקסיקנית)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "צרפתית"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "עברית"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "איטלקית"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "יפנית"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "קוריאנית"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "הולנדית"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "נורווגית"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "פולנית"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "רוסית"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "שוודית"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "תאילנדית"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "טורקית"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "ווייטנאמית"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "סינית"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API funkciót nem találom"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "A hiba részleteit megtalálod az admin panelen"
@@ -318,11 +318,11 @@ msgstr "Leírás (opcionális)"
msgid "parent"
msgstr "szülő"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Kiszolgálóhiba"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "A kiszolgáló egy hibaüzenetet rögzített."
@@ -393,99 +393,99 @@ msgstr "A távoli kép URL-je"
msgid "Downloading images from remote URL is not enabled"
msgstr "Képek letöltése távoli URL-ről nem engedélyezett"
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Cseh"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Német"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Görög"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Angol"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Spanyol"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Spanyol (Mexikói)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Fárszi/Perzsa"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Francia"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Héber"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Magyar"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Olasz"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japán"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Koreai"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Holland"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norvég"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Lengyel"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portugál"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portugál (Brazíliai)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Orosz"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Svéd"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Tháj"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Török"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnámi"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Kínai"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API endpoint tidak ditemukan"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "Endpoint API non trovato"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "I dettagli dell'errore possono essere trovati nel pannello di amministrazione"
@@ -318,11 +318,11 @@ msgstr "Descrizione (opzionale)"
msgid "parent"
msgstr "genitore"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Errore del server"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "Un errore è stato loggato dal server."
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Ceco"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Tedesco"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Greco"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Inglese"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Spagnolo"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Spagnolo (Messicano)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Farsi / Persiano"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Francese"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Ebraico"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Ungherese"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Italiano"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Giapponese"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Coreano"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Olandese"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norvegese"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polacco"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portoghese"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portoghese (Brasile)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Russo"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Svedese"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Thailandese"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Turco"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamita"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Cinese"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "APIエンドポイントが見つかりません"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "説明 (オプション)"
msgid "parent"
msgstr "親"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "ドイツ語"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "ギリシャ語"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "英語"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "スペイン語"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "スペイン語(メキシコ)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "フランス語"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "ヘブライ語"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "ハンガリー語"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "イタリア語"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "日本語"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "韓国語"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "オランダ語"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "ノルウェー語"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "ポーランド語"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "ロシア語"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "スウェーデン語"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "タイ語"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "トルコ語"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "ベトナム語"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "中国語"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "설명 (선택 사항)"
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "체코어"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "독일어"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "그리스어"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "영어"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "스페인어"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "스페인어 (멕시코)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "파르시어/페르시아어"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "프랑스어"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "히브리어"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "헝가리어"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "이탈리아어"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "일본어"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "한국어"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "네덜란드어"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "노르웨이어"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "폴란드어"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "러시아어"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "스웨덴어"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "태국어"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "터키어"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "베트남어"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "중국어"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API eindpunt niet gevonden"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "Error details kunnen worden gevonden in het admin scherm"
@@ -318,11 +318,11 @@ msgstr "Omschrijving (optioneel)"
msgid "parent"
msgstr "bovenliggende"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Serverfout"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "Er is een fout gelogd door de server."
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Tsjechisch"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Duits"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Grieks"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Engels"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Spaans"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Spaans (Mexicaans)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Farsi / Perzisch"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Frans"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Hebreeuws"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Hongaars"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Italiaans"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japans"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Koreaans"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Nederlands"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Noors"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Pools"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portugees"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portugees (Braziliaans)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Russisch"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Zweeds"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Thais"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Turks"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamees"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Chinees"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API endepunkt ikke funnet"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "Beskrivelse (valgfritt)"
msgid "parent"
msgstr "overkategori"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Tsjekkisk"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Tysk"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Gresk"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Engelsk"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Spansk"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Spansk (Meksikansk)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Farsi / Persisk"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Fransk"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Hebraisk"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Ungarsk"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Italiensk"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japansk"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Koreansk"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Nederlandsk"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norsk"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polsk"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portugisisk"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portugisisk (Brasilian)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Russisk"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Svensk"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Thailandsk"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Tyrkisk"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamesisk"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Kinesisk"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "Nie znaleziono punktu końcowego API"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym"
@@ -318,11 +318,11 @@ msgstr "Opis (opcjonalny)"
msgid "parent"
msgstr "nadrzędny"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Błąd serwera"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "Błąd został zapisany w logach serwera."
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Czeski"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Niemiecki"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Grecki"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Angielski"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Hiszpański"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Hiszpański (Meksyk)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Perski"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Francuski"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Hebrajski"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Węgierski"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Włoski"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japoński"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Koreański"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Holenderski"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norweski"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polski"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portugalski"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portugalski (Brazylijski)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Rosyjski"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Szwedzki"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Tajski"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Turecki"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Wietnamski"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Chiński"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API endpoint não encontrado"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "Detalhes do erro podem ser encontrados no painel de administrador"
@@ -318,11 +318,11 @@ msgstr "Descricao (opicional)"
msgid "parent"
msgstr "parent"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Erro de servidor"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "Log de erro salvo pelo servidor."
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"POT-Creation-Date: 2022-07-31 13:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,7 +22,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -319,11 +319,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -394,99 +394,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "Конечная точка API не обнаружена"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "Описание (необязательно)"
msgid "parent"
msgstr "родитель"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Немецкий"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Греческий"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Английский"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Испанский"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Испанский (Мексика)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Французский"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Иврит"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Венгерский"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Итальянский"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Японский"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Корейский"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Голландский"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Норвежский"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Польский"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Русский"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Шведский"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Тайский"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Турецкий"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Вьетнамский"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Китайский"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API-slutpunkt hittades inte"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "Information om felet finns under Error i adminpanelen"
@@ -318,11 +318,11 @@ msgstr "Beskrivning (valfritt)"
msgid "parent"
msgstr "överordnad"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "Serverfel"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "Ett fel har loggats av servern."
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "Tjeckiska"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Tyska"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Grekiska"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "Engelska"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "Spanska"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "Spanska (Mexikanska)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "Farsi / Persiska"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Franska"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "Hebreiska"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Ungerska"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "Italienska"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japanska"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Koreanska"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Nederländska"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norska"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polska"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "Portugisiska"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "Portugisiska (brasiliansk)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Ryska"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "Svenska"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Thailändska"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Turkiska"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamesiska"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Kinesiska"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:34\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:44\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr ""
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "API uç noktası bulunamadı"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "Açıklama (isteğe bağlı)"
msgid "parent"
msgstr "üst"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "Almanca"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "Yunanca"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "İngilizce"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "İspanyolca"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "İspanyolca(Meksika)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "Fransızca"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "İbranice"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "Macarca"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "İtalyanca"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "Japonca"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "Korece"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "Flemenkçe"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "Norveççe"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "Polonyaca"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "Rusça"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "İsveççe"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "Tay dili"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "Türkçe"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "Vietnamca"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "Çince"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr ""
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -318,11 +318,11 @@ msgstr "Mô tả (tùy chọn)"
msgid "parent"
msgstr ""
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr ""
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr ""
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr ""
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr ""
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr ""
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr ""
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr ""
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr ""
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr ""
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr ""
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr ""
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr ""
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr ""
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr ""
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr ""
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr ""
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr ""
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr ""
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr ""
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-30 23:22+0000\n"
"PO-Revision-Date: 2022-07-30 23:33\n"
"POT-Creation-Date: 2022-07-31 13:18+0000\n"
"PO-Revision-Date: 2022-07-31 23:43\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "API endpoint not found"
msgstr "未找到 API 端点"
#: InvenTree/exceptions.py:62
#: InvenTree/exceptions.py:68
msgid "Error details can be found in the admin panel"
msgstr "在管理面板中可以找到错误详细信息"
@@ -318,11 +318,11 @@ msgstr "描述 (可选)"
msgid "parent"
msgstr "上级项"
#: InvenTree/models.py:655
#: InvenTree/models.py:659
msgid "Server Error"
msgstr "服务器错误"
#: InvenTree/models.py:656
#: InvenTree/models.py:660
msgid "An error has been logged by the server."
msgstr "服务器记录了一个错误。"
@@ -393,99 +393,99 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
#: InvenTree/settings.py:703
#: InvenTree/settings.py:607
msgid "Czech"
msgstr "捷克语"
#: InvenTree/settings.py:704
#: InvenTree/settings.py:608
msgid "German"
msgstr "德语"
#: InvenTree/settings.py:705
#: InvenTree/settings.py:609
msgid "Greek"
msgstr "希腊语"
#: InvenTree/settings.py:706
#: InvenTree/settings.py:610
msgid "English"
msgstr "英语"
#: InvenTree/settings.py:707
#: InvenTree/settings.py:611
msgid "Spanish"
msgstr "西班牙语"
#: InvenTree/settings.py:708
#: InvenTree/settings.py:612
msgid "Spanish (Mexican)"
msgstr "西班牙语(墨西哥)"
#: InvenTree/settings.py:709
#: InvenTree/settings.py:613
msgid "Farsi / Persian"
msgstr "波斯语"
#: InvenTree/settings.py:710
#: InvenTree/settings.py:614
msgid "French"
msgstr "法语"
#: InvenTree/settings.py:711
#: InvenTree/settings.py:615
msgid "Hebrew"
msgstr "希伯来语"
#: InvenTree/settings.py:712
#: InvenTree/settings.py:616
msgid "Hungarian"
msgstr "匈牙利语"
#: InvenTree/settings.py:713
#: InvenTree/settings.py:617
msgid "Italian"
msgstr "意大利语"
#: InvenTree/settings.py:714
#: InvenTree/settings.py:618
msgid "Japanese"
msgstr "日语"
#: InvenTree/settings.py:715
#: InvenTree/settings.py:619
msgid "Korean"
msgstr "韩语"
#: InvenTree/settings.py:716
#: InvenTree/settings.py:620
msgid "Dutch"
msgstr "荷兰语"
#: InvenTree/settings.py:717
#: InvenTree/settings.py:621
msgid "Norwegian"
msgstr "挪威语"
#: InvenTree/settings.py:718
#: InvenTree/settings.py:622
msgid "Polish"
msgstr "波兰语"
#: InvenTree/settings.py:719
#: InvenTree/settings.py:623
msgid "Portuguese"
msgstr "葡萄牙语"
#: InvenTree/settings.py:720
#: InvenTree/settings.py:624
msgid "Portuguese (Brazilian)"
msgstr "葡萄牙语 (巴西)"
#: InvenTree/settings.py:721
#: InvenTree/settings.py:625
msgid "Russian"
msgstr "俄语"
#: InvenTree/settings.py:722
#: InvenTree/settings.py:626
msgid "Swedish"
msgstr "瑞典语"
#: InvenTree/settings.py:723
#: InvenTree/settings.py:627
msgid "Thai"
msgstr "泰语"
#: InvenTree/settings.py:724
#: InvenTree/settings.py:628
msgid "Turkish"
msgstr "土耳其语"
#: InvenTree/settings.py:725
#: InvenTree/settings.py:629
msgid "Vietnamese"
msgstr "越南语"
#: InvenTree/settings.py:726
#: InvenTree/settings.py:630
msgid "Chinese"
msgstr "中文(简体)"

View File

@@ -53,6 +53,13 @@ class CategoryList(ListCreateAPI):
queryset = PartCategory.objects.all()
serializer_class = part_serializers.CategorySerializer
def get_queryset(self, *args, **kwargs):
"""Return an annotated queryset for the CategoryList endpoint"""
queryset = super().get_queryset(*args, **kwargs)
queryset = part_serializers.CategorySerializer.annotate_queryset(queryset)
return queryset
def get_serializer_context(self):
"""Add extra context data to the serializer for the PartCategoryList endpoint"""
ctx = super().get_serializer_context()
@@ -141,9 +148,11 @@ class CategoryList(ListCreateAPI):
ordering_fields = [
'name',
'pathstring',
'level',
'tree_id',
'lft',
'part_count',
]
# Use hierarchical ordering by default
@@ -165,6 +174,13 @@ class CategoryDetail(RetrieveUpdateDestroyAPI):
serializer_class = part_serializers.CategorySerializer
queryset = PartCategory.objects.all()
def get_queryset(self, *args, **kwargs):
"""Return an annotated queryset for the CategoryDetail endpoint"""
queryset = super().get_queryset(*args, **kwargs)
queryset = part_serializers.CategorySerializer.annotate_queryset(queryset)
return queryset
def get_serializer_context(self):
"""Add extra context to the serializer for the CategoryDetail endpoint"""
ctx = super().get_serializer_context()

View File

@@ -1,4 +1,4 @@
"""Custom query filters for the Part model
"""Custom query filters for the Part models
The code here makes heavy use of subquery annotations!
@@ -19,11 +19,13 @@ Relevant PRs:
from decimal import Decimal
from django.db import models
from django.db.models import F, FloatField, Func, OuterRef, Q, Subquery
from django.db.models import (F, FloatField, Func, IntegerField, OuterRef, Q,
Subquery)
from django.db.models.functions import Coalesce
from sql_util.utils import SubquerySum
import part.models
import stock.models
from InvenTree.status_codes import (BuildStatus, PurchaseOrderStatus,
SalesOrderStatus)
@@ -158,3 +160,29 @@ def annotate_variant_quantity(subquery: Q, reference: str = 'quantity'):
0,
output_field=FloatField(),
)
def annotate_category_parts():
"""Construct a queryset annotation which returns the number of parts in a particular category.
- Includes parts in subcategories also
- Requires subquery to perform annotation
"""
# Construct a subquery to provide all parts in this category and any subcategories:
subquery = part.models.Part.objects.exclude(category=None).filter(
category__tree_id=OuterRef('tree_id'),
category__lft__gte=OuterRef('lft'),
category__rght__lte=OuterRef('rght'),
category__level__gte=OuterRef('level'),
)
return Coalesce(
Subquery(
subquery.annotate(
total=Func(F('pk'), function='COUNT', output_field=IntegerField())
).values('total'),
),
0,
output_field=IntegerField()
)

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.2.14 on 2022-07-31 23:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('part', '0081_alter_partcategory_name'),
]
operations = [
migrations.AddField(
model_name='partcategory',
name='pathstring',
field=models.CharField(blank=True, help_text='Path', max_length=250, verbose_name='Path'),
),
]

View File

@@ -0,0 +1,54 @@
# Generated by Django 3.2.14 on 2022-07-31 23:57
from django.db import migrations
from InvenTree.helpers import constructPathString
def update_pathstring(apps, schema_editor):
"""Construct pathstring for all existing PartCategory objects"""
PartCategory = apps.get_model('part', 'partcategory')
n = PartCategory.objects.count()
if n > 0:
for cat in PartCategory.objects.all():
# Construct complete path for category
path = [cat.name]
parent = cat.parent
# Iterate up the tree
while parent is not None:
path = [parent.name] + path
parent = parent.parent
pathstring = constructPathString(path)
cat.pathstring = pathstring
cat.save()
print(f"\n--- Updated 'pathstring' for {n} PartCategory objects ---\n")
def nupdate_pathstring(apps, schema_editor):
"""Empty function for reverse migration compatibility"""
pass
class Migration(migrations.Migration):
dependencies = [
('part', '0082_partcategory_pathstring'),
]
operations = [
migrations.RunPython(
update_pathstring,
reverse_code=nupdate_pathstring
)
]

View File

@@ -41,9 +41,20 @@ class CategorySerializer(InvenTreeModelSerializer):
"""Return True if the category is directly "starred" by the current user."""
return category in self.context.get('starred_categories', [])
@staticmethod
def annotate_queryset(queryset):
"""Annotate extra information to the queryset"""
# Annotate the number of 'parts' which exist in each category (including subcategories!)
queryset = queryset.annotate(
part_count=part.filters.annotate_category_parts()
)
return queryset
url = serializers.CharField(source='get_absolute_url', read_only=True)
parts = serializers.IntegerField(source='item_count', read_only=True)
part_count = serializers.IntegerField(read_only=True)
level = serializers.IntegerField(read_only=True)
@@ -60,7 +71,7 @@ class CategorySerializer(InvenTreeModelSerializer):
'default_keywords',
'level',
'parent',
'parts',
'part_count',
'pathstring',
'starred',
'url',

View File

@@ -77,6 +77,76 @@ class PartCategoryAPITest(InvenTreeAPITestCase):
self.assertEqual(len(response.data), 5)
# Check that the required fields are present
fields = [
'pk',
'name',
'description',
'default_location',
'level',
'parent',
'part_count',
'pathstring',
'url'
]
for result in response.data:
for f in fields:
self.assertIn(f, result)
def test_part_count(self):
"""Test that the 'part_count' field is annotated correctly"""
url = reverse('api-part-category-list')
# Create a parent category
cat = PartCategory.objects.create(
name='Parent Cat',
description='Some name',
parent=None
)
# Create child categories
for ii in range(10):
child = PartCategory.objects.create(
name=f"Child cat {ii}",
description="A child category",
parent=cat
)
# Create parts in this category
for jj in range(10):
Part.objects.create(
name=f"Part xyz {jj}",
description="A test part",
category=child
)
# Filter by parent category
response = self.get(
url,
{
'parent': cat.pk,
},
expected_code=200
)
# 10 child categories
self.assertEqual(len(response.data), 10)
for result in response.data:
self.assertEqual(result['parent'], cat.pk)
self.assertEqual(result['part_count'], 10)
# Detail view for parent category
response = self.get(
f'/api/part/category/{cat.pk}/',
expected_code=200
)
# Annotation should include parts from all sub-categories
self.assertEqual(response.data['part_count'], 100)
def test_category_metadata(self):
"""Test metadata endpoint for the PartCategory."""
cat = PartCategory.objects.get(pk=1)

View File

@@ -1,5 +1,6 @@
"""Unit tests for the PartCategory model"""
from django.core.exceptions import ValidationError
from django.test import TestCase
from .models import Part, PartCategory, PartParameter, PartParameterTemplate
@@ -63,9 +64,69 @@ class CategoryTest(TestCase):
def test_path_string(self):
"""Test that the category path string works correctly."""
# Note that due to data migrations, these fields need to be saved first
self.resistors.save()
self.transceivers.save()
self.assertEqual(str(self.resistors), 'Electronics/Resistors - Resistors')
self.assertEqual(str(self.transceivers.pathstring), 'Electronics/IC/Transceivers')
# Create a new subcategory
subcat = PartCategory.objects.create(
name='Subcategory',
description='My little sub category',
parent=self.transceivers
)
# Pathstring should have been updated correctly
self.assertEqual(subcat.pathstring, 'Electronics/IC/Transceivers/Subcategory')
self.assertEqual(len(subcat.path), 4)
# Move to a new parent location
subcat.parent = self.resistors
subcat.save()
self.assertEqual(subcat.pathstring, 'Electronics/Resistors/Subcategory')
self.assertEqual(len(subcat.path), 3)
# Move to top-level
subcat.parent = None
subcat.save()
self.assertEqual(subcat.pathstring, 'Subcategory')
self.assertEqual(len(subcat.path), 1)
# Construct a very long pathstring and ensure it gets updated correctly
cat = PartCategory.objects.create(
name='Cat',
description='A long running category',
parent=None
)
parent = cat
for idx in range(26):
letter = chr(ord('A') + idx)
child = PartCategory.objects.create(
name=letter * 10,
description=f"Subcategory {letter}",
parent=parent
)
parent = child
self.assertTrue(len(child.path), 26)
self.assertEqual(
child.pathstring,
"Cat/AAAAAAAAAA/BBBBBBBBBB/CCCCCCCCCC/DDDDDDDDDD/EEEEEEEEEE/FFFFFFFFFF/GGGGGGGGGG/HHHHHHHHHH/IIIIIIIIII/JJJJJJJJJJ/.../OOOOOOOOOO/PPPPPPPPPP/QQQQQQQQQQ/RRRRRRRRRR/SSSSSSSSSS/TTTTTTTTTT/UUUUUUUUUU/VVVVVVVVVV/WWWWWWWWWW/XXXXXXXXXX/YYYYYYYYYY/ZZZZZZZZZZ"
)
self.assertTrue(len(child.pathstring) <= 250)
# Attempt an invalid move
with self.assertRaises(ValidationError):
cat.parent = child
cat.save()
def test_url(self):
"""Test that the PartCategory URL works."""
self.assertEqual(self.capacitors.get_absolute_url(), '/part/category/3/')
@@ -130,6 +191,9 @@ class CategoryTest(TestCase):
def test_default_locations(self):
"""Test traversal for default locations."""
self.assertIsNotNone(self.fasteners.default_location)
self.fasteners.default_location.save()
self.assertEqual(str(self.fasteners.default_location), 'Office/Drawer_1 - In my desk')
# Any part under electronics should default to 'Home'

View File

@@ -220,6 +220,7 @@ class PartTest(TestCase):
def test_category(self):
"""Test PartCategory path"""
self.c1.category.save()
self.assertEqual(str(self.c1.category), 'Electronics/Capacitors - Capacitors')
orphan = Part.objects.get(name='Orphan')

View File

@@ -224,6 +224,13 @@ class StockLocationList(ListCreateAPI):
queryset = StockLocation.objects.all()
serializer_class = StockSerializers.LocationSerializer
def get_queryset(self, *args, **kwargs):
"""Return annotated queryset for the StockLocationList endpoint"""
queryset = super().get_queryset(*args, **kwargs)
queryset = StockSerializers.LocationSerializer.annotate_queryset(queryset)
return queryset
def filter_queryset(self, queryset):
"""Custom filtering: - Allow filtering by "null" parent to retrieve top-level stock locations."""
queryset = super().filter_queryset(queryset)
@@ -293,6 +300,7 @@ class StockLocationList(ListCreateAPI):
ordering_fields = [
'name',
'pathstring',
'items',
'level',
'tree_id',
@@ -1340,6 +1348,13 @@ class LocationDetail(RetrieveUpdateDestroyAPI):
queryset = StockLocation.objects.all()
serializer_class = StockSerializers.LocationSerializer
def get_queryset(self, *args, **kwargs):
"""Return annotated queryset for the StockLocationList endpoint"""
queryset = super().get_queryset(*args, **kwargs)
queryset = StockSerializers.LocationSerializer.annotate_queryset(queryset)
return queryset
stock_api_urls = [
re_path(r'^location/', include([

View File

@@ -0,0 +1,36 @@
"""Custom query filters for the Stock models"""
from django.db.models import F, Func, IntegerField, OuterRef, Q, Subquery
from django.db.models.functions import Coalesce
import stock.models
def annotate_location_items(filter: Q = None):
"""Construct a queryset annotation which returns the number of stock items in a particular location.
- Includes items in subcategories also
- Requires subquery to perform annotation
"""
# Construct a subquery to provide all items in this location and any sublocations
subquery = stock.models.StockItem.objects.exclude(location=None).filter(
location__tree_id=OuterRef('tree_id'),
location__lft__gte=OuterRef('lft'),
location__rght__lte=OuterRef('rght'),
location__level__gte=OuterRef('level'),
)
# Optionally apply extra filter to returned results
if filter is not None:
subquery = subquery.filter(filter)
return Coalesce(
Subquery(
subquery.annotate(
total=Func(F('pk'), function='COUNT', output_field=IntegerField())
).values('total')
),
0,
output_field=IntegerField()
)

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.2.14 on 2022-07-31 23:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('stock', '0079_alter_stocklocation_name'),
]
operations = [
migrations.AddField(
model_name='stocklocation',
name='pathstring',
field=models.CharField(blank=True, help_text='Path', max_length=250, verbose_name='Path'),
),
]

View File

@@ -0,0 +1,55 @@
# Generated by Django 3.2.14 on 2022-08-01 00:44
from django.db import migrations
from InvenTree.helpers import constructPathString
def update_pathstring(apps, schema_editor):
"""Construct pathstring for all existing StockLocation objects"""
StockLocation = apps.get_model('stock', 'stocklocation')
n = StockLocation.objects.count()
if n > 0:
for loc in StockLocation.objects.all():
# Construct complete path for category
path = [loc.name]
parent = loc.parent
# Iterate up the tree
while parent is not None:
path = [parent.name] + path
parent = parent.parent
pathstring = constructPathString(path)
loc.pathstring = pathstring
loc.save()
print(f"\n--- Updated 'pathstring' for {n} StockLocation objects ---\n")
def nupdate_pathstring(apps, schema_editor):
"""Empty function for reverse migration compatibility"""
pass
class Migration(migrations.Migration):
dependencies = [
('stock', '0080_stocklocation_pathstring'),
]
operations = [
migrations.RunPython(
update_pathstring,
reverse_code=nupdate_pathstring
)
]

View File

@@ -18,6 +18,7 @@ import company.models
import InvenTree.helpers
import InvenTree.serializers
import part.models as part_models
import stock.filters
from common.settings import currency_code_default, currency_code_mappings
from company.serializers import SupplierPartSerializer
from InvenTree.models import extract_int
@@ -575,9 +576,20 @@ class LocationTreeSerializer(InvenTree.serializers.InvenTreeModelSerializer):
class LocationSerializer(InvenTree.serializers.InvenTreeModelSerializer):
"""Detailed information about a stock location."""
@staticmethod
def annotate_queryset(queryset):
"""Annotate extra information to the queryset"""
# Annotate the number of stock items which exist in this category (including subcategories)
queryset = queryset.annotate(
items=stock.filters.annotate_location_items()
)
return queryset
url = serializers.CharField(source='get_absolute_url', read_only=True)
items = serializers.IntegerField(source='item_count', read_only=True)
items = serializers.IntegerField(read_only=True)
level = serializers.IntegerField(read_only=True)

View File

@@ -125,6 +125,10 @@ class StockTest(InvenTreeTestCase):
def test_parent_locations(self):
"""Test parent."""
# Ensure pathstring gets updated
self.drawer3.save()
self.assertEqual(self.office.parent, None)
self.assertEqual(self.drawer1.parent, self.office)
self.assertEqual(self.drawer2.parent, self.office)

View File

@@ -174,6 +174,12 @@ function updateNotificationReadState(btn, panel_caller=false) {
} else {
count = count + 1;
}
// Prevent negative notification count
if (count < 0) {
count = 0;
}
// update notification indicator now
updateNotificationIndicator(count);

View File

@@ -1778,6 +1778,7 @@ function loadPartCategoryTable(table, options) {
name: 'category',
original: original,
showColumns: true,
sortable: true,
buttons: options.allowTreeView ? [
{
icon: 'fas fa-bars',
@@ -1882,13 +1883,13 @@ function loadPartCategoryTable(table, options) {
title: '{% trans "Path" %}',
switchable: !tree_view,
visible: !tree_view,
sortable: false,
sortable: true,
},
{
field: 'parts',
field: 'part_count',
title: '{% trans "Parts" %}',
switchable: true,
sortable: false,
sortable: true,
}
]
});

View File

@@ -2264,6 +2264,7 @@ function loadStockLocationTable(table, options) {
queryParams: filters,
name: 'location',
original: original,
sortable: true,
showColumns: true,
onPostBody: function() {
@@ -2360,14 +2361,13 @@ function loadStockLocationTable(table, options) {
field: 'pathstring',
title: '{% trans "Path" %}',
switchable: true,
sortable: false,
sortable: true,
},
{
field: 'items',
title: '{% trans "Stock Items" %}',
switchable: true,
sortable: false,
sortName: 'item_count',
sortable: true,
}
]
});