kopia lustrzana https://github.com/jedie/PyInventory
commit
c620756372
|
@ -9,8 +9,8 @@
|
||||||
!.coveralls.yml
|
!.coveralls.yml
|
||||||
|
|
||||||
# from test projects:
|
# from test projects:
|
||||||
inventory_project/static/
|
/static/
|
||||||
inventory_project/media/
|
/media/
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
|
|
||||||
# Coverage HTML Report files:
|
# Coverage HTML Report files:
|
||||||
|
@ -53,7 +53,6 @@ coverage.xml
|
||||||
*,cover
|
*,cover
|
||||||
|
|
||||||
# Translations
|
# Translations
|
||||||
*.mo
|
|
||||||
*.pot
|
*.pot
|
||||||
|
|
||||||
# Django stuff:
|
# Django stuff:
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -77,6 +77,10 @@ publish: ## Release new version to PyPi
|
||||||
run-dev-server: ## Run the django dev server in endless loop.
|
run-dev-server: ## Run the django dev server in endless loop.
|
||||||
./manage.sh runserver
|
./manage.sh runserver
|
||||||
|
|
||||||
|
messages: ## Make and compile locales message files
|
||||||
|
./manage.sh makemessages --all
|
||||||
|
./manage.sh compilemessages
|
||||||
|
|
||||||
run-server: ## Run the gunicorn server in endless loop.
|
run-server: ## Run the gunicorn server in endless loop.
|
||||||
poetry run inventory run-server
|
poetry run inventory run-server
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
"""
|
||||||
|
Auto fill "verbose_name" translations:
|
||||||
|
Just copy the model field name as translation.
|
||||||
|
"""
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
MESSAGE_MAP = {
|
||||||
|
'id': 'ID',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def fill(po_file_path):
|
||||||
|
old_content = []
|
||||||
|
new_content = []
|
||||||
|
with po_file_path.open('r') as f:
|
||||||
|
for line in f:
|
||||||
|
old_content.append(line)
|
||||||
|
|
||||||
|
if line.startswith('msgid "'):
|
||||||
|
msgstr = ''
|
||||||
|
msgid = line[7:-2]
|
||||||
|
try:
|
||||||
|
model, attribute, kind = msgid.strip().split('.')
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if kind == 'verbose_name':
|
||||||
|
if attribute in MESSAGE_MAP:
|
||||||
|
msgstr = MESSAGE_MAP[attribute]
|
||||||
|
else:
|
||||||
|
words = attribute.replace('_', ' ').split(' ')
|
||||||
|
msgstr = ' '.join(i.capitalize() for i in words)
|
||||||
|
elif kind == 'help_text':
|
||||||
|
msgstr = ' ' # "hide" empty "help_text"
|
||||||
|
|
||||||
|
elif (line == 'msgstr ""\n' or line == 'msgstr " "\n') and msgstr:
|
||||||
|
line = f'msgstr "{msgstr}"\n'
|
||||||
|
|
||||||
|
line = line.replace('Content Tonie', 'Content-Tonie')
|
||||||
|
new_content.append(line)
|
||||||
|
|
||||||
|
if new_content == old_content:
|
||||||
|
print('Nothing to do, ok.')
|
||||||
|
return
|
||||||
|
|
||||||
|
with po_file_path.open('w') as f:
|
||||||
|
f.write(''.join(new_content))
|
||||||
|
|
||||||
|
print(f'updated: {po_file_path}')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
for dir in ('de', 'en'):
|
||||||
|
print('_' * 100)
|
||||||
|
print(dir)
|
||||||
|
fill(Path(f'locale/{dir}/LC_MESSAGES/django.po'))
|
|
@ -1 +1,2 @@
|
||||||
from inventory.admin.item import ItemModelAdmin # noqa
|
from inventory.admin.item import ItemModelAdmin # noqa
|
||||||
|
from inventory.admin.location import LocationModelAdmin # noqa
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
from reversion_compare.admin import CompareVersionAdmin
|
||||||
|
|
||||||
|
|
||||||
|
class BaseUserAdmin(CompareVersionAdmin):
|
||||||
|
def save_model(self, request, obj, form, change):
|
||||||
|
if obj.user_id is None:
|
||||||
|
obj.user = request.user
|
||||||
|
|
||||||
|
super().save_model(request, obj, form, change)
|
|
@ -1,9 +1,9 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from reversion_compare.admin import CompareVersionAdmin
|
|
||||||
|
|
||||||
|
from inventory.admin.base import BaseUserAdmin
|
||||||
from inventory.models import ItemModel
|
from inventory.models import ItemModel
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ItemModel)
|
@admin.register(ItemModel)
|
||||||
class ItemModelAdmin(CompareVersionAdmin):
|
class ItemModelAdmin(BaseUserAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
from inventory.admin.base import BaseUserAdmin
|
||||||
|
from inventory.models import LocationModel
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(LocationModel)
|
||||||
|
class LocationModelAdmin(BaseUserAdmin):
|
||||||
|
pass
|
|
@ -1 +1,2 @@
|
||||||
from inventory.models.item import ItemModel # noqa
|
from inventory.models.item import ItemModel # noqa
|
||||||
|
from inventory.models.location import LocationModel # noqa
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from bx_py_utils.models.timetracking import TimetrackingBaseModel
|
from bx_py_utils.models.timetracking import TimetrackingBaseModel
|
||||||
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from tagulous.models import TagField
|
||||||
|
|
||||||
|
|
||||||
class BaseModel(TimetrackingBaseModel):
|
class BaseModel(TimetrackingBaseModel):
|
||||||
|
@ -10,7 +12,28 @@ class BaseModel(TimetrackingBaseModel):
|
||||||
primary_key=True,
|
primary_key=True,
|
||||||
default=uuid.uuid4,
|
default=uuid.uuid4,
|
||||||
editable=False,
|
editable=False,
|
||||||
verbose_name=_('ID')
|
verbose_name=_('BaseModel.id.verbose_name'),
|
||||||
|
help_text=_('BaseModel.id.help_text')
|
||||||
|
)
|
||||||
|
user = models.ForeignKey( # "Owner" of this entry
|
||||||
|
settings.AUTH_USER_MODEL,
|
||||||
|
related_name='+',
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
editable=False, # Must be set automatically and never changed
|
||||||
|
verbose_name=_('BaseModel.user.verbose_name'),
|
||||||
|
help_text=_('BaseModel.user.help_text')
|
||||||
|
)
|
||||||
|
name = models.CharField(
|
||||||
|
max_length=255,
|
||||||
|
verbose_name=_('BaseModel.name.verbose_name'),
|
||||||
|
help_text=_('BaseModel.name.help_text')
|
||||||
|
)
|
||||||
|
tags = TagField(
|
||||||
|
blank=True,
|
||||||
|
force_lowercase=True,
|
||||||
|
max_count=10,
|
||||||
|
verbose_name=_('BaseModel.tags.verbose_name'),
|
||||||
|
help_text=_('BaseModel.tags.help_text')
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -10,11 +10,29 @@ class ItemModel(BaseModel):
|
||||||
A Item that can be described and store somewhere ;)
|
A Item that can be described and store somewhere ;)
|
||||||
"""
|
"""
|
||||||
description = RichTextUploadingField(
|
description = RichTextUploadingField(
|
||||||
config_name='ItemModel.description'
|
config_name='ItemModel.description',
|
||||||
|
verbose_name=_('ItemModel.description.verbose_name'),
|
||||||
|
help_text=_('ItemModel.description.help_text')
|
||||||
)
|
)
|
||||||
fcc_id = models.CharField(
|
fcc_id = models.CharField(
|
||||||
max_length=20,
|
max_length=20,
|
||||||
blank=True, null=True,
|
blank=True, null=True,
|
||||||
verbose_name='FCC ID',
|
verbose_name=_('ItemModel.fcc_id.verbose_name'),
|
||||||
help_text=_('FCC ID-Number for links to: https://fccid.io/')
|
help_text=_('ItemModel.fcc_id.help_text')
|
||||||
)
|
)
|
||||||
|
location = models.ForeignKey(
|
||||||
|
'inventory.LocationModel',
|
||||||
|
blank=True, null=True, on_delete=models.SET_NULL,
|
||||||
|
verbose_name=_('ItemModel.location.verbose_name'),
|
||||||
|
help_text=_('ItemModel.location.help_text')
|
||||||
|
)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.location_id is None:
|
||||||
|
return self.name
|
||||||
|
else:
|
||||||
|
return f'{self.name} ({self.location})'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('ItemModel.verbose_name')
|
||||||
|
verbose_name_plural = _('ItemModel.verbose_name_plural')
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
from ckeditor_uploader.fields import RichTextUploadingField
|
||||||
|
from django.db import models
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from inventory.models.base import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class LocationModel(BaseModel):
|
||||||
|
"""
|
||||||
|
A Storage for items.
|
||||||
|
"""
|
||||||
|
description = RichTextUploadingField(
|
||||||
|
config_name='LocationModel.description',
|
||||||
|
verbose_name=_('LocationModel.description.verbose_name'),
|
||||||
|
help_text=_('LocationModel.description.help_text')
|
||||||
|
)
|
||||||
|
parent = models.ForeignKey(
|
||||||
|
'self',
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
blank=True, null=True,
|
||||||
|
verbose_name=_('LocationModel.parent.verbose_name'),
|
||||||
|
help_text=_('LocationModel.parent.help_text')
|
||||||
|
)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.parent_id is None:
|
||||||
|
return self.name
|
||||||
|
else:
|
||||||
|
return f'{self.name} -> {self.parent}'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('LocationModel.verbose_name')
|
||||||
|
verbose_name_plural = _('LocationModel.verbose_name_plural')
|
|
@ -4,9 +4,11 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from django import __version__ as django_version
|
||||||
|
|
||||||
from inventory import __version__
|
from inventory import __version__
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "inventory_project":
|
if __name__ == 'inventory_project':
|
||||||
if "--version" not in sys.argv:
|
if '--version' not in sys.argv:
|
||||||
print(f"PyInventory v{__version__}")
|
print(f'PyInventory v{__version__} (Django v{django_version})')
|
||||||
|
|
|
@ -44,6 +44,7 @@ INSTALLED_APPS = (
|
||||||
'ckeditor', # https://github.com/django-ckeditor/django-ckeditor
|
'ckeditor', # https://github.com/django-ckeditor/django-ckeditor
|
||||||
'reversion', # https://github.com/etianen/django-reversion
|
'reversion', # https://github.com/etianen/django-reversion
|
||||||
'reversion_compare', # https://github.com/jedie/django-reversion-compare
|
'reversion_compare', # https://github.com/jedie/django-reversion-compare
|
||||||
|
'tagulous', # https://github.com/radiac/django-tagulous
|
||||||
|
|
||||||
'inventory.apps.InventoryConfig',
|
'inventory.apps.InventoryConfig',
|
||||||
)
|
)
|
||||||
|
@ -109,7 +110,9 @@ LANGUAGES = [
|
||||||
('de', _('German')),
|
('de', _('German')),
|
||||||
('en', _('English')),
|
('en', _('English')),
|
||||||
]
|
]
|
||||||
|
LOCALE_PATHS = [
|
||||||
|
__Path(BASE_PATH, 'locale')
|
||||||
|
]
|
||||||
USE_I18N = True
|
USE_I18N = True
|
||||||
USE_L10N = True
|
USE_L10N = True
|
||||||
TIME_ZONE = 'Europe/Paris'
|
TIME_ZONE = 'Europe/Paris'
|
||||||
|
@ -117,6 +120,7 @@ USE_TZ = True
|
||||||
|
|
||||||
# _____________________________________________________________________________
|
# _____________________________________________________________________________
|
||||||
# Static files (CSS, JavaScript, Images)
|
# Static files (CSS, JavaScript, Images)
|
||||||
|
|
||||||
STATIC_URL = '/static/'
|
STATIC_URL = '/static/'
|
||||||
STATIC_ROOT = str(__Path(BASE_PATH, 'static'))
|
STATIC_ROOT = str(__Path(BASE_PATH, 'static'))
|
||||||
|
|
||||||
|
@ -138,37 +142,24 @@ DEBUG_TOOLBAR_CONFIG['SHOW_COLLAPSED'] = True # Show toolbar collapsed by defau
|
||||||
# _____________________________________________________________________________
|
# _____________________________________________________________________________
|
||||||
# django-ckeditor
|
# django-ckeditor
|
||||||
|
|
||||||
CKEDITOR_BASEPATH = STATIC_URL + 'ckeditor/'
|
CKEDITOR_BASEPATH = STATIC_URL + 'ckeditor/ckeditor/'
|
||||||
CKEDITOR_UPLOAD_PATH = 'uploads/'
|
CKEDITOR_UPLOAD_PATH = 'uploads/'
|
||||||
CKEDITOR_FILENAME_GENERATOR = 'utils.get_filename'
|
CKEDITOR_FILENAME_GENERATOR = 'utils.get_filename'
|
||||||
CKEDITOR_CONFIGS = {
|
CKEDITOR_CONFIGS = {
|
||||||
# 'ItemModel.description': {
|
|
||||||
# 'toolbar': 'full',
|
|
||||||
# 'height': '25em',
|
|
||||||
# 'width': '100%',
|
|
||||||
# 'removeButtons': 'Language,Flash,iframes,bidiltr'
|
|
||||||
# },
|
|
||||||
'ItemModel.description': {
|
'ItemModel.description': {
|
||||||
'skin': 'moono-lisa',
|
'skin': 'moono-lisa',
|
||||||
# 'toolbar_Basic': [['Source', '-', 'Bold', 'Italic']],
|
'removeButtons': 'Language',
|
||||||
# 'toolbar_Full': [
|
|
||||||
# [
|
# plugins are here: site-packages/ckeditor/static/ckeditor/ckeditor/plugins
|
||||||
# 'Styles',
|
'removePlugins': 'wsc,div,flash,iframe,bidi',
|
||||||
# 'Format',
|
'toolbar': 'full',
|
||||||
# 'Bold',
|
'height': '25em',
|
||||||
# 'Italic',
|
'width': '100%',
|
||||||
# 'Underline',
|
'filebrowserWindowWidth': 940,
|
||||||
# 'Strike',
|
'filebrowserWindowHeight': 725,
|
||||||
# 'SpellChecker',
|
},
|
||||||
# 'Undo',
|
'LocationModel.description': {
|
||||||
# 'Redo',
|
'skin': 'moono-lisa',
|
||||||
# ],
|
|
||||||
# ['Link', 'Unlink', 'Anchor'],
|
|
||||||
# ['Image', 'Flash', 'Table', 'HorizontalRule'],
|
|
||||||
# ['TextColor', 'BGColor'],
|
|
||||||
# ['Smiley', 'SpecialChar'],
|
|
||||||
# ['Source'],
|
|
||||||
# ],
|
|
||||||
'removeButtons': 'Language',
|
'removeButtons': 'Language',
|
||||||
|
|
||||||
# plugins are here: site-packages/ckeditor/static/ckeditor/ckeditor/plugins
|
# plugins are here: site-packages/ckeditor/static/ckeditor/ckeditor/plugins
|
||||||
|
@ -181,6 +172,15 @@ CKEDITOR_CONFIGS = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# _____________________________________________________________________________
|
||||||
|
# http://radiac.net/projects/django-tagulous/documentation/installation/#settings
|
||||||
|
|
||||||
|
TAGULOUS_NAME_MAX_LENGTH = 255
|
||||||
|
TAGULOUS_SLUG_MAX_LENGTH = 50
|
||||||
|
TAGULOUS_LABEL_MAX_LENGTH = TAGULOUS_NAME_MAX_LENGTH
|
||||||
|
TAGULOUS_SLUG_TRUNCATE_UNIQUE = 5
|
||||||
|
TAGULOUS_SLUG_ALLOW_UNICODE = False
|
||||||
|
|
||||||
# _____________________________________________________________________________
|
# _____________________________________________________________________________
|
||||||
# cut 'pathname' in log output
|
# cut 'pathname' in log output
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
from django.conf.urls import include, static, url
|
from django.conf.urls import include, static, url
|
||||||
from django.conf.urls.i18n import i18n_patterns
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
from django.views.generic import RedirectView
|
from django.views.generic import RedirectView
|
||||||
|
@ -9,13 +8,13 @@ from inventory_project import settings
|
||||||
|
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
|
||||||
urlpatterns = i18n_patterns(
|
urlpatterns = [ # Don't use i18n_patterns() here
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
|
|
||||||
url(r'^$', RedirectView.as_view(url='/admin/')),
|
url(r'^$', RedirectView.as_view(url='/admin/')),
|
||||||
|
|
||||||
path('ckeditor/', include('ckeditor_uploader.urls')), # TODO: check permissions?
|
path('ckeditor/', include('ckeditor_uploader.urls')), # TODO: check permissions?
|
||||||
)
|
]
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
||||||
|
|
|
@ -9,9 +9,9 @@ class AdminAnonymousTests(TestCase):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def test_login_en(self):
|
def test_login_en(self):
|
||||||
response = self.client.get("/en/admin/", HTTP_ACCEPT_LANGUAGE="en")
|
response = self.client.get("/admin/", HTTP_ACCEPT_LANGUAGE="en")
|
||||||
self.assertRedirects(response, expected_url="/en/admin/login/?next=/en/admin/")
|
self.assertRedirects(response, expected_url="/admin/login/?next=/admin/")
|
||||||
|
|
||||||
def test_login_de(self):
|
def test_login_de(self):
|
||||||
response = self.client.get("/de/admin/", HTTP_ACCEPT_LANGUAGE="de")
|
response = self.client.get("/admin/", HTTP_ACCEPT_LANGUAGE="de")
|
||||||
self.assertRedirects(response, expected_url="/de/admin/login/?next=/de/admin/")
|
self.assertRedirects(response, expected_url="/admin/login/?next=/admin/")
|
||||||
|
|
Plik binarny nie jest wyświetlany.
|
@ -0,0 +1,115 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2020-10-16 19:49+0200\n"
|
||||||
|
"PO-Revision-Date: 2020-10-16 19:56+0200\n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"Last-Translator: Jens Diemer\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"X-Generator: Poedit 2.3\n"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:15
|
||||||
|
msgid "BaseModel.id.verbose_name"
|
||||||
|
msgstr "ID"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:16
|
||||||
|
msgid "BaseModel.id.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/base.py:23
|
||||||
|
msgid "BaseModel.user.verbose_name"
|
||||||
|
msgstr "Benutzer"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:24
|
||||||
|
msgid "BaseModel.user.help_text"
|
||||||
|
msgstr "Der Benutzer dem dieser Eintrag gehört und verwalten kann (Wird automatisch gesetzt)"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:28
|
||||||
|
msgid "BaseModel.name.verbose_name"
|
||||||
|
msgstr "Name"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:29
|
||||||
|
msgid "BaseModel.name.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/base.py:35
|
||||||
|
msgid "BaseModel.tags.verbose_name"
|
||||||
|
msgstr "Tags"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:36
|
||||||
|
msgid "BaseModel.tags.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/item.py:14
|
||||||
|
msgid "ItemModel.description.verbose_name"
|
||||||
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:15
|
||||||
|
msgid "ItemModel.description.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/item.py:20
|
||||||
|
msgid "ItemModel.fcc_id.verbose_name"
|
||||||
|
msgstr "FCC ID"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:21
|
||||||
|
msgid "ItemModel.fcc_id.help_text"
|
||||||
|
msgstr "Eindeutige Nummer der FCC"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:26
|
||||||
|
msgid "ItemModel.location.verbose_name"
|
||||||
|
msgstr "Standort"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:27
|
||||||
|
msgid "ItemModel.location.help_text"
|
||||||
|
msgstr "Wo ist dieser Gegenstand eingelagert?"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:34
|
||||||
|
msgid "ItemModel.verbose_name"
|
||||||
|
msgstr "Gegenstand"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:35
|
||||||
|
msgid "ItemModel.verbose_name_plural"
|
||||||
|
msgstr "Gegenstände"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:14
|
||||||
|
msgid "LocationModel.description.verbose_name"
|
||||||
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:15
|
||||||
|
msgid "LocationModel.description.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/location.py:21
|
||||||
|
msgid "LocationModel.parent.verbose_name"
|
||||||
|
msgstr "Übergeordneter Standort"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:22
|
||||||
|
msgid "LocationModel.parent.help_text"
|
||||||
|
msgstr "Standorte können verschachtelt werden. Bsp: Der Karton 12 in Schrank 3"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:29
|
||||||
|
msgid "LocationModel.verbose_name"
|
||||||
|
msgstr "Standort"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:30
|
||||||
|
msgid "LocationModel.verbose_name_plural"
|
||||||
|
msgstr "Standorte"
|
||||||
|
|
||||||
|
#: inventory_project/settings.py:110
|
||||||
|
msgid "German"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: inventory_project/settings.py:111
|
||||||
|
msgid "English"
|
||||||
|
msgstr ""
|
Plik binarny nie jest wyświetlany.
|
@ -0,0 +1,115 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2020-10-16 19:49+0200\n"
|
||||||
|
"PO-Revision-Date: 2020-10-16 19:58+0200\n"
|
||||||
|
"Language: en\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"Last-Translator: Jens Diemer\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"X-Generator: Poedit 2.3\n"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:15
|
||||||
|
msgid "BaseModel.id.verbose_name"
|
||||||
|
msgstr "ID"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:16
|
||||||
|
msgid "BaseModel.id.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/base.py:23
|
||||||
|
msgid "BaseModel.user.verbose_name"
|
||||||
|
msgstr "User"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:24
|
||||||
|
msgid "BaseModel.user.help_text"
|
||||||
|
msgstr "The user who is the owner of this entry and can manage it (will be set automatically)"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:28
|
||||||
|
msgid "BaseModel.name.verbose_name"
|
||||||
|
msgstr "Name"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:29
|
||||||
|
msgid "BaseModel.name.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/base.py:35
|
||||||
|
msgid "BaseModel.tags.verbose_name"
|
||||||
|
msgstr "Tags"
|
||||||
|
|
||||||
|
#: inventory/models/base.py:36
|
||||||
|
msgid "BaseModel.tags.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/item.py:14
|
||||||
|
msgid "ItemModel.description.verbose_name"
|
||||||
|
msgstr "Description"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:15
|
||||||
|
msgid "ItemModel.description.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/item.py:20
|
||||||
|
msgid "ItemModel.fcc_id.verbose_name"
|
||||||
|
msgstr "FCC ID"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:21
|
||||||
|
msgid "ItemModel.fcc_id.help_text"
|
||||||
|
msgstr "Unique number from the FCC"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:26
|
||||||
|
msgid "ItemModel.location.verbose_name"
|
||||||
|
msgstr "Location"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:27
|
||||||
|
msgid "ItemModel.location.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/item.py:34
|
||||||
|
msgid "ItemModel.verbose_name"
|
||||||
|
msgstr "Item"
|
||||||
|
|
||||||
|
#: inventory/models/item.py:35
|
||||||
|
msgid "ItemModel.verbose_name_plural"
|
||||||
|
msgstr "Items"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:14
|
||||||
|
msgid "LocationModel.description.verbose_name"
|
||||||
|
msgstr "Description"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:15
|
||||||
|
msgid "LocationModel.description.help_text"
|
||||||
|
msgstr " "
|
||||||
|
|
||||||
|
#: inventory/models/location.py:21
|
||||||
|
msgid "LocationModel.parent.verbose_name"
|
||||||
|
msgstr "Parent"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:22
|
||||||
|
msgid "LocationModel.parent.help_text"
|
||||||
|
msgstr "Locations can be nested. Example: The box 12 in cupboard 3"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:29
|
||||||
|
msgid "LocationModel.verbose_name"
|
||||||
|
msgstr "Location"
|
||||||
|
|
||||||
|
#: inventory/models/location.py:30
|
||||||
|
msgid "LocationModel.verbose_name_plural"
|
||||||
|
msgstr "Locations"
|
||||||
|
|
||||||
|
#: inventory_project/settings.py:110
|
||||||
|
msgid "German"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: inventory_project/settings.py:111
|
||||||
|
msgid "English"
|
||||||
|
msgstr ""
|
|
@ -272,6 +272,22 @@ diff-match-patch = "*"
|
||||||
django = ">=2.2,<3.1"
|
django = ">=2.2,<3.1"
|
||||||
django-reversion = "*"
|
django-reversion = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "django-tagulous"
|
||||||
|
version = "1.0.0"
|
||||||
|
description = "Fabulous Tagging for Django"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
Django = ">=1.11"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
dev = ["tox", "jasmine"]
|
||||||
|
devdb = ["psycopg2", "mysqlclient"]
|
||||||
|
i18n = ["unidecode"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "django-tools"
|
name = "django-tools"
|
||||||
version = "0.46.1"
|
version = "0.46.1"
|
||||||
|
@ -952,7 +968,7 @@ testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pyt
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = ">=3.7,<4.0.0"
|
python-versions = ">=3.7,<4.0.0"
|
||||||
content-hash = "464ca363f2392ed7c45d131f91148bd1cffb4536f5f88c390d502054d06e95ea"
|
content-hash = "81bfc3b102483db10838f298a425e9436883c93f06940662e7e7b85b4b9d8308"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
appdirs = [
|
appdirs = [
|
||||||
|
@ -1139,6 +1155,9 @@ django-reversion-compare = [
|
||||||
{file = "django-reversion-compare-0.12.2.tar.gz", hash = "sha256:9ec6c764a2bcb2be52fa1b4ef4365f8226a89c7b572ab984afe24b76d6247b5f"},
|
{file = "django-reversion-compare-0.12.2.tar.gz", hash = "sha256:9ec6c764a2bcb2be52fa1b4ef4365f8226a89c7b572ab984afe24b76d6247b5f"},
|
||||||
{file = "django_reversion_compare-0.12.2-py3-none-any.whl", hash = "sha256:5ce8d402add477a3c38aae8335af22b3abdfffa83ef5333c06c865abb89e9cbd"},
|
{file = "django_reversion_compare-0.12.2-py3-none-any.whl", hash = "sha256:5ce8d402add477a3c38aae8335af22b3abdfffa83ef5333c06c865abb89e9cbd"},
|
||||||
]
|
]
|
||||||
|
django-tagulous = [
|
||||||
|
{file = "django-tagulous-1.0.0.tar.gz", hash = "sha256:9b4fa1773845a1cf33d21b27f9cdafc6f3fe29a480428bdd8f8717e7d4742396"},
|
||||||
|
]
|
||||||
django-tools = [
|
django-tools = [
|
||||||
{file = "django-tools-0.46.1.tar.gz", hash = "sha256:0a289c230d908417a0a72d1a7884ebc0508894b1ac7be888ed333170d4c97291"},
|
{file = "django-tools-0.46.1.tar.gz", hash = "sha256:0a289c230d908417a0a72d1a7884ebc0508894b1ac7be888ed333170d4c97291"},
|
||||||
{file = "django_tools-0.46.1-py3-none-any.whl", hash = "sha256:e10c13b382b14ecfb589fd194719d44210a26a542869cbb298e0c2a1ede7f90d"},
|
{file = "django_tools-0.46.1-py3-none-any.whl", hash = "sha256:e10c13b382b14ecfb589fd194719d44210a26a542869cbb298e0c2a1ede7f90d"},
|
||||||
|
|
|
@ -49,6 +49,7 @@ django-tools = "*" # https://github.com/jedie/django-tools/
|
||||||
django-reversion-compare = "*" # https://github.com/jedie/django-reversion-compare/
|
django-reversion-compare = "*" # https://github.com/jedie/django-reversion-compare/
|
||||||
django-ckeditor = "*" # https://github.com/django-ckeditor/django-ckeditor
|
django-ckeditor = "*" # https://github.com/django-ckeditor/django-ckeditor
|
||||||
bx_py_utils = "*" # https://github.com/boxine/bx_py_utils
|
bx_py_utils = "*" # https://github.com/boxine/bx_py_utils
|
||||||
|
django-tagulous = "*" # https://github.com/radiac/django-tagulous
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
poetry-publish = "*" # https://github.com/jedie/poetry-publish
|
poetry-publish = "*" # https://github.com/jedie/poetry-publish
|
||||||
|
|
Ładowanie…
Reference in New Issue