kopia lustrzana https://github.com/jedie/PyInventory
commit
b50210bb72
|
@ -4,7 +4,7 @@
|
|||
:license: GNU GPL v3 or above, see LICENSE for more details.
|
||||
"""
|
||||
|
||||
__version__ = "0.0.1"
|
||||
__version__ = "0.1.0"
|
||||
|
||||
# https://docs.djangoproject.com/en/2.0/ref/applications/#configuring-applications-ref
|
||||
default_app_config = "inventory.apps.InventoryConfig"
|
||||
|
|
|
@ -1,9 +1,70 @@
|
|||
import tagulous
|
||||
from adminsortable2.admin import SortableInlineAdminMixin
|
||||
from django.contrib import admin
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from inventory.admin.base import BaseUserAdmin
|
||||
from inventory.models import ItemModel
|
||||
from inventory.models import ItemLinkModel, ItemModel
|
||||
|
||||
|
||||
class ItemLinkModelInline(SortableInlineAdminMixin, admin.TabularInline):
|
||||
model = ItemLinkModel
|
||||
extra = 1
|
||||
|
||||
|
||||
@admin.register(ItemModel)
|
||||
class ItemModelAdmin(BaseUserAdmin):
|
||||
pass
|
||||
date_hierarchy = 'create_dt'
|
||||
list_display = (
|
||||
'kind', 'producer',
|
||||
'parent', 'name',
|
||||
'location', 'received_date', 'update_dt'
|
||||
)
|
||||
list_display_links = ('name',)
|
||||
list_filter = ('kind', 'location', 'producer', 'tags')
|
||||
search_fields = ('name', 'description')
|
||||
fieldsets = (
|
||||
(_('Internals'), {
|
||||
'classes': ('collapse',),
|
||||
'fields': (
|
||||
'id',
|
||||
'user',
|
||||
)
|
||||
}),
|
||||
(_('Meta'), {
|
||||
'classes': ('collapse',),
|
||||
'fields': (
|
||||
'create_dt', 'update_dt'
|
||||
)
|
||||
}),
|
||||
(_('Basic'), {'fields': (
|
||||
'kind',
|
||||
('producer', 'name'),
|
||||
'description',
|
||||
'tags',
|
||||
'fcc_id',
|
||||
'parent',
|
||||
'location',
|
||||
)}),
|
||||
(_('Lent'), {
|
||||
'classes': ('collapse',),
|
||||
'fields': (
|
||||
'lent_to',
|
||||
('lent_from_date', 'lent_until_date',)
|
||||
)}),
|
||||
(_('Received'), {
|
||||
'classes': ('collapse',),
|
||||
'fields': (
|
||||
('received_from', 'received_date', 'received_price'),
|
||||
)}),
|
||||
(_('Handed over'), {
|
||||
'classes': ('collapse',),
|
||||
'fields': (
|
||||
('handed_over_to', 'handed_over_date', 'handed_over_price'),
|
||||
)}),
|
||||
)
|
||||
readonly_fields = ('id', 'create_dt', 'update_dt', 'user')
|
||||
inlines = (ItemLinkModelInline,)
|
||||
|
||||
|
||||
tagulous.admin.enhance(ItemModel, ItemModelAdmin)
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
from inventory.models.item import ItemModel # noqa
|
||||
from inventory.models.item import ItemLinkModel, ItemModel # noqa
|
||||
from inventory.models.location import LocationModel # noqa
|
||||
|
|
|
@ -30,11 +30,14 @@ class BaseModel(TimetrackingBaseModel):
|
|||
)
|
||||
tags = TagField(
|
||||
blank=True,
|
||||
force_lowercase=True,
|
||||
force_lowercase=False,
|
||||
max_count=10,
|
||||
verbose_name=_('BaseModel.tags.verbose_name'),
|
||||
help_text=_('BaseModel.tags.help_text')
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
|
|
@ -1,14 +1,28 @@
|
|||
from ckeditor_uploader.fields import RichTextUploadingField
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from tagulous.models import TagField
|
||||
|
||||
from inventory.models.base import BaseModel
|
||||
from inventory.models.links import BaseLink
|
||||
|
||||
|
||||
class ItemModel(BaseModel):
|
||||
"""
|
||||
A Item that can be described and store somewhere ;)
|
||||
"""
|
||||
kind = TagField(
|
||||
force_lowercase=False,
|
||||
max_count=3,
|
||||
verbose_name=_('ItemModel.kind.verbose_name'),
|
||||
help_text=_('ItemModel.kind.help_text')
|
||||
)
|
||||
producer = TagField(
|
||||
force_lowercase=False, blank=True,
|
||||
max_count=1,
|
||||
verbose_name=_('ItemModel.producer.verbose_name'),
|
||||
help_text=_('ItemModel.producer.help_text')
|
||||
)
|
||||
description = RichTextUploadingField(
|
||||
config_name='ItemModel.description',
|
||||
verbose_name=_('ItemModel.description.verbose_name'),
|
||||
|
@ -26,13 +40,107 @@ class ItemModel(BaseModel):
|
|||
verbose_name=_('ItemModel.location.verbose_name'),
|
||||
help_text=_('ItemModel.location.help_text')
|
||||
)
|
||||
parent = models.ForeignKey(
|
||||
'self',
|
||||
on_delete=models.SET_NULL,
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.parent.verbose_name'),
|
||||
help_text=_('ItemModel.parent.help_text')
|
||||
)
|
||||
|
||||
# ________________________________________________________________________
|
||||
# lent
|
||||
|
||||
lent_to = models.CharField(
|
||||
max_length=64,
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.lent_to.verbose_name'),
|
||||
help_text=_('ItemModel.lent_to.help_text')
|
||||
)
|
||||
lent_from_date = models.DateField(
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.lent_from_date.verbose_name'),
|
||||
help_text=_('ItemModel.lent_from_date.help_text')
|
||||
)
|
||||
lent_until_date = models.DateField(
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.lent_until_date.verbose_name'),
|
||||
help_text=_('ItemModel.lent_until_date.help_text')
|
||||
)
|
||||
|
||||
# ________________________________________________________________________
|
||||
# received
|
||||
|
||||
received_from = models.CharField(
|
||||
max_length=64,
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.received_from.verbose_name'),
|
||||
help_text=_('ItemModel.received_from.help_text')
|
||||
)
|
||||
received_date = models.DateField(
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.received_date.verbose_name'),
|
||||
help_text=_('ItemModel.received_date.help_text')
|
||||
)
|
||||
received_price = models.DecimalField(
|
||||
decimal_places=2, max_digits=6, # up to 9999 with a resolution of 2 decimal places
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.received_price.verbose_name'),
|
||||
help_text=_('ItemModel.received_price.help_text')
|
||||
)
|
||||
|
||||
# ________________________________________________________________________
|
||||
# handed over
|
||||
|
||||
handed_over_to = models.CharField(
|
||||
max_length=64,
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.handed_over_to.verbose_name'),
|
||||
help_text=_('ItemModel.handed_over_to.help_text')
|
||||
)
|
||||
handed_over_date = models.DateField(
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.handed_over_date.verbose_name'),
|
||||
help_text=_('ItemModel.handed_over_date.help_text')
|
||||
)
|
||||
handed_over_price = models.DecimalField(
|
||||
decimal_places=2, max_digits=6, # up to 9999 with a resolution of 2 decimal places
|
||||
blank=True, null=True,
|
||||
verbose_name=_('ItemModel.handed_over_price.verbose_name'),
|
||||
help_text=_('ItemModel.handed_over_price.help_text')
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
if self.location_id is None:
|
||||
return self.name
|
||||
if self.parent_id is None:
|
||||
title = self.name
|
||||
else:
|
||||
return f'{self.name} ({self.location})'
|
||||
title = f'{self.name} › {self.parent}'
|
||||
|
||||
if self.producer:
|
||||
title = f'{self.producer} - {title}'
|
||||
|
||||
if self.location_id is not None:
|
||||
title = f'{title} ({self.location})'
|
||||
|
||||
return title
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('ItemModel.verbose_name')
|
||||
verbose_name_plural = _('ItemModel.verbose_name_plural')
|
||||
|
||||
|
||||
class ItemLinkModel(BaseLink):
|
||||
item = models.ForeignKey(
|
||||
ItemModel, on_delete=models.CASCADE
|
||||
)
|
||||
|
||||
def full_clean(self, **kwargs):
|
||||
if self.user_id is None:
|
||||
# inherit owner of this link from item instance
|
||||
self.user_id = self.item.user_id
|
||||
return super().full_clean(**kwargs)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('ItemLinkModel.verbose_name')
|
||||
verbose_name_plural = _('ItemLinkModel.verbose_name_plural')
|
||||
ordering = ('position',)
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
import logging
|
||||
import re
|
||||
|
||||
import requests
|
||||
from django.db import models
|
||||
from django.template.defaultfilters import striptags
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from urllib3.exceptions import HTTPError
|
||||
|
||||
from inventory.models.base import BaseModel
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class BaseLink(BaseModel):
|
||||
name = models.CharField(
|
||||
max_length=255, blank=True, null=True,
|
||||
verbose_name=_('BaseLink.name.verbose_name'),
|
||||
help_text=_('BaseLink.name.help_text')
|
||||
)
|
||||
url = models.URLField(
|
||||
verbose_name=_('Link.url.verbose_name'),
|
||||
help_text=_('Link.url.help_text')
|
||||
)
|
||||
last_check = models.DateField(
|
||||
blank=True, null=True, editable=False,
|
||||
verbose_name=_('Link.url.verbose_name'),
|
||||
help_text=_('Link.url.help_text')
|
||||
)
|
||||
status_code = models.PositiveSmallIntegerField(
|
||||
blank=True, null=True, editable=False,
|
||||
verbose_name=_('Link.status_code.verbose_name'),
|
||||
help_text=_('Link.status_code.help_text')
|
||||
)
|
||||
page_title = models.CharField(
|
||||
max_length=255, blank=True, null=True, editable=False,
|
||||
verbose_name=_('Link.page_title.verbose_name'),
|
||||
help_text=_('Link.page_title.help_text')
|
||||
)
|
||||
|
||||
position = models.PositiveSmallIntegerField(
|
||||
# Note: Will be set in admin via adminsortable2
|
||||
# The JavaScript which performs the sorting is 1-indexed !
|
||||
default=0, blank=False, null=False
|
||||
)
|
||||
|
||||
def update_response_info(self):
|
||||
try:
|
||||
r = requests.get(url=self.url, allow_redirects=True, timeout=10)
|
||||
except HTTPError as err:
|
||||
logger.exception(f'Error get {self.url!r}', err)
|
||||
self.status_code = None
|
||||
self.page_title = None
|
||||
return
|
||||
|
||||
logger.debug('%r: %r', self.url, r.headers)
|
||||
|
||||
self.last_check = timezone.now()
|
||||
self.status_code = r.status_code
|
||||
|
||||
if r.status_code == 200:
|
||||
titles = re.findall(r'<title>(.+?)</title>', r.text)
|
||||
if not titles:
|
||||
logger.warning(f'No title found in {self.url!r}')
|
||||
else:
|
||||
title = titles[0]
|
||||
logger.info('Found title: %r', title)
|
||||
|
||||
self.page_title = striptags(title) # TODO: remove with a better clean method!
|
||||
if not self.name:
|
||||
logger.debug('set name to: %r', self.page_title)
|
||||
self.name = self.page_title
|
||||
|
||||
def full_clean(self, **kwargs):
|
||||
if self.url is not None:
|
||||
self.update_response_info()
|
||||
return super().full_clean(**kwargs)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
|
@ -26,7 +26,7 @@ class LocationModel(BaseModel):
|
|||
if self.parent_id is None:
|
||||
return self.name
|
||||
else:
|
||||
return f'{self.name} -> {self.parent}'
|
||||
return f'{self.name} › {self.parent}'
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('LocationModel.verbose_name')
|
||||
|
|
|
@ -39,12 +39,14 @@ INSTALLED_APPS = (
|
|||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.sites',
|
||||
'debug_toolbar', # https://github.com/jazzband/django-debug-toolbar/
|
||||
'debug_toolbar', # https://github.com/jazzband/django-debug-toolbar
|
||||
'bx_py_utils', # https://github.com/boxine/bx_py_utils
|
||||
'import_export', # https://github.com/django-import-export/django-import-export
|
||||
'ckeditor', # https://github.com/django-ckeditor/django-ckeditor
|
||||
'reversion', # https://github.com/etianen/django-reversion
|
||||
'reversion_compare', # https://github.com/jedie/django-reversion-compare
|
||||
'tagulous', # https://github.com/radiac/django-tagulous
|
||||
'adminsortable2', # https://github.com/jrief/django-admin-sortable2
|
||||
|
||||
'inventory.apps.InventoryConfig',
|
||||
)
|
||||
|
|
Plik binarny nie jest wyświetlany.
|
@ -7,17 +7,49 @@ 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"
|
||||
"POT-Creation-Date: 2020-10-17 18:03+0200\n"
|
||||
"PO-Revision-Date: 2020-10-17 18:05+0200\n"
|
||||
"Last-Translator: Jens Diemer\n"
|
||||
"Language-Team: \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/admin/item.py:18 inventory/models/item.py:17
|
||||
msgid "ItemModel.kind.verbose_name"
|
||||
msgstr "Art"
|
||||
|
||||
#: inventory/admin/item.py:23 inventory/models/item.py:23
|
||||
msgid "ItemModel.producer.verbose_name"
|
||||
msgstr "Hersteller"
|
||||
|
||||
#: inventory/admin/item.py:34
|
||||
msgid "Internals"
|
||||
msgstr "Intern"
|
||||
|
||||
#: inventory/admin/item.py:41
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/admin/item.py:47
|
||||
msgid "Basic"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/admin/item.py:56
|
||||
msgid "Lent"
|
||||
msgstr "Verleih"
|
||||
|
||||
#: inventory/admin/item.py:62
|
||||
msgid "Received"
|
||||
msgstr "Erhalt"
|
||||
|
||||
#: inventory/admin/item.py:67
|
||||
msgid "Handed over"
|
||||
msgstr "Abgabe"
|
||||
|
||||
#: inventory/models/base.py:15
|
||||
msgid "BaseModel.id.verbose_name"
|
||||
msgstr "ID"
|
||||
|
@ -32,7 +64,9 @@ 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)"
|
||||
msgstr ""
|
||||
" Der Benutzer dem dieser Eintrag gehört und verwalten kann (Wird automatisch "
|
||||
"gesetzt)"
|
||||
|
||||
#: inventory/models/base.py:28
|
||||
msgid "BaseModel.name.verbose_name"
|
||||
|
@ -50,38 +84,168 @@ msgstr "Tags"
|
|||
msgid "BaseModel.tags.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:14
|
||||
#: inventory/models/item.py:18
|
||||
msgid "ItemModel.kind.help_text"
|
||||
msgstr "Type / Sorte / Gattung"
|
||||
|
||||
#: inventory/models/item.py:24
|
||||
msgid "ItemModel.producer.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:28
|
||||
msgid "ItemModel.description.verbose_name"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: inventory/models/item.py:15
|
||||
#: inventory/models/item.py:29
|
||||
msgid "ItemModel.description.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:20
|
||||
#: inventory/models/item.py:34
|
||||
msgid "ItemModel.fcc_id.verbose_name"
|
||||
msgstr "FCC ID"
|
||||
|
||||
#: inventory/models/item.py:21
|
||||
#: inventory/models/item.py:35
|
||||
msgid "ItemModel.fcc_id.help_text"
|
||||
msgstr "Eindeutige Nummer der FCC"
|
||||
|
||||
#: inventory/models/item.py:26
|
||||
#: inventory/models/item.py:40
|
||||
msgid "ItemModel.location.verbose_name"
|
||||
msgstr "Standort"
|
||||
|
||||
#: inventory/models/item.py:27
|
||||
#: inventory/models/item.py:41
|
||||
msgid "ItemModel.location.help_text"
|
||||
msgstr "Wo ist dieser Gegenstand eingelagert?"
|
||||
|
||||
#: inventory/models/item.py:34
|
||||
#: inventory/models/item.py:47
|
||||
msgid "ItemModel.parent.verbose_name"
|
||||
msgstr "Übergeordnet"
|
||||
|
||||
#: inventory/models/item.py:48
|
||||
msgid "ItemModel.parent.help_text"
|
||||
msgstr ""
|
||||
"Eingebaut in einem anderen Gegenstand? (e.g.: Grafikkarte eingebaut in "
|
||||
"Rechner)"
|
||||
|
||||
#: inventory/models/item.py:57
|
||||
msgid "ItemModel.lent_to.verbose_name"
|
||||
msgstr "Verliehen an"
|
||||
|
||||
#: inventory/models/item.py:58
|
||||
msgid "ItemModel.lent_to.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:62
|
||||
msgid "ItemModel.lent_from_date.verbose_name"
|
||||
msgstr "Verleih Abgabe Datum"
|
||||
|
||||
#: inventory/models/item.py:63
|
||||
msgid "ItemModel.lent_from_date.help_text"
|
||||
msgstr "Zeitpunkt ab dem dieser Gegenstand verliehen wurde"
|
||||
|
||||
#: inventory/models/item.py:67
|
||||
msgid "ItemModel.lent_until_date.verbose_name"
|
||||
msgstr "Verliehen bis"
|
||||
|
||||
#: inventory/models/item.py:68
|
||||
msgid "ItemModel.lent_until_date.help_text"
|
||||
msgstr "Bis wann sollte der Gegenstand wieder zurück sein?"
|
||||
|
||||
#: inventory/models/item.py:77
|
||||
msgid "ItemModel.received_from.verbose_name"
|
||||
msgstr "Erhalten von"
|
||||
|
||||
#: inventory/models/item.py:78
|
||||
msgid "ItemModel.received_from.help_text"
|
||||
msgstr "Von wem wurde dieser Gegenstand erhalten?"
|
||||
|
||||
#: inventory/models/item.py:82
|
||||
msgid "ItemModel.received_date.verbose_name"
|
||||
msgstr "Erhalten am"
|
||||
|
||||
#: inventory/models/item.py:83
|
||||
msgid "ItemModel.received_date.help_text"
|
||||
msgstr "Wann wurde dieser Gegenstand erhalten?"
|
||||
|
||||
#: inventory/models/item.py:88
|
||||
msgid "ItemModel.received_price.verbose_name"
|
||||
msgstr "Preis"
|
||||
|
||||
#: inventory/models/item.py:89
|
||||
msgid "ItemModel.received_price.help_text"
|
||||
msgstr "Welcher Preis wurde für diesen Gegenstand gezahlt?"
|
||||
|
||||
#: inventory/models/item.py:98
|
||||
msgid "ItemModel.handed_over_to.verbose_name"
|
||||
msgstr "Abgabe an"
|
||||
|
||||
#: inventory/models/item.py:99
|
||||
msgid "ItemModel.handed_over_to.help_text"
|
||||
msgstr "An wem wurde dieser Gegenstand abgegeben?"
|
||||
|
||||
#: inventory/models/item.py:103
|
||||
msgid "ItemModel.handed_over_date.verbose_name"
|
||||
msgstr "Abgabedatum"
|
||||
|
||||
#: inventory/models/item.py:104
|
||||
msgid "ItemModel.handed_over_date.help_text"
|
||||
msgstr "Zeitpunkt der Abgabe"
|
||||
|
||||
#: inventory/models/item.py:109
|
||||
msgid "ItemModel.handed_over_price.verbose_name"
|
||||
msgstr "Abgabepreis"
|
||||
|
||||
#: inventory/models/item.py:110
|
||||
msgid "ItemModel.handed_over_price.help_text"
|
||||
msgstr "Wurde bei der Abgabe Geld eingenommen?"
|
||||
|
||||
#: inventory/models/item.py:128
|
||||
msgid "ItemModel.verbose_name"
|
||||
msgstr "Gegenstand"
|
||||
|
||||
#: inventory/models/item.py:35
|
||||
#: inventory/models/item.py:129
|
||||
msgid "ItemModel.verbose_name_plural"
|
||||
msgstr "Gegenstände"
|
||||
|
||||
#: inventory/models/item.py:144
|
||||
msgid "ItemLinkModel.verbose_name"
|
||||
msgstr "Link"
|
||||
|
||||
#: inventory/models/item.py:145
|
||||
msgid "ItemLinkModel.verbose_name_plural"
|
||||
msgstr "Links"
|
||||
|
||||
#: inventory/models/links.py:20
|
||||
msgid "BaseLink.name.verbose_name"
|
||||
msgstr "Name"
|
||||
|
||||
#: inventory/models/links.py:21
|
||||
msgid "BaseLink.name.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/links.py:24 inventory/models/links.py:29
|
||||
msgid "Link.url.verbose_name"
|
||||
msgstr "URL"
|
||||
|
||||
#: inventory/models/links.py:25 inventory/models/links.py:30
|
||||
msgid "Link.url.help_text"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/models/links.py:34
|
||||
msgid "Link.status_code.verbose_name"
|
||||
msgstr "Status-Code"
|
||||
|
||||
#: inventory/models/links.py:35
|
||||
msgid "Link.status_code.help_text"
|
||||
msgstr "Der Server meldete diesen Status-Code beim letzten abruf zurück."
|
||||
|
||||
#: inventory/models/links.py:39
|
||||
msgid "Link.page_title.verbose_name"
|
||||
msgstr "Seitentitel"
|
||||
|
||||
#: inventory/models/links.py:40
|
||||
msgid "Link.page_title.help_text"
|
||||
msgstr "Der Seiten-Titel wird automatisch ermittelt."
|
||||
|
||||
#: inventory/models/location.py:14
|
||||
msgid "LocationModel.description.verbose_name"
|
||||
msgstr "Beschreibung"
|
||||
|
@ -98,18 +262,38 @@ msgstr "Übergeordneter Standort"
|
|||
msgid "LocationModel.parent.help_text"
|
||||
msgstr "Standorte können verschachtelt werden. Bsp: Der Karton 12 in Schrank 3"
|
||||
|
||||
#: inventory/models/location.py:29
|
||||
#: inventory/models/location.py:32
|
||||
msgid "LocationModel.verbose_name"
|
||||
msgstr "Standort"
|
||||
|
||||
#: inventory/models/location.py:30
|
||||
#: inventory/models/location.py:33
|
||||
msgid "LocationModel.verbose_name_plural"
|
||||
msgstr "Standorte"
|
||||
|
||||
#: inventory_project/settings.py:110
|
||||
#: inventory_project/settings.py:111
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: inventory_project/settings.py:111
|
||||
#: inventory_project/settings.py:112
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.fcc_id.verbose_name"
|
||||
#~ msgid "ItemModel.received_url.verbose_name"
|
||||
#~ msgstr "FCC ID"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.fcc_id.help_text"
|
||||
#~ msgid "ItemModel.received_url.help_text"
|
||||
#~ msgstr "Eindeutige Nummer der FCC"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.verbose_name"
|
||||
#~ msgid "ItemModel.handed_over_url.verbose_name"
|
||||
#~ msgstr "Gegenstand"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.location.help_text"
|
||||
#~ msgid "ItemModel.handed_over_url.help_text"
|
||||
#~ msgstr "Wo ist dieser Gegenstand eingelagert?"
|
||||
|
|
Plik binarny nie jest wyświetlany.
|
@ -7,17 +7,53 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-10-16 19:49+0200\n"
|
||||
"POT-Creation-Date: 2020-10-17 18:03+0200\n"
|
||||
"PO-Revision-Date: 2020-10-16 19:58+0200\n"
|
||||
"Last-Translator: Jens Diemer\n"
|
||||
"Language-Team: \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/admin/item.py:18 inventory/models/item.py:17
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.verbose_name"
|
||||
msgid "ItemModel.kind.verbose_name"
|
||||
msgstr "Item"
|
||||
|
||||
#: inventory/admin/item.py:23 inventory/models/item.py:23
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.verbose_name"
|
||||
msgid "ItemModel.producer.verbose_name"
|
||||
msgstr "Item"
|
||||
|
||||
#: inventory/admin/item.py:34
|
||||
msgid "Internals"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/admin/item.py:41
|
||||
msgid "Meta"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/admin/item.py:47
|
||||
msgid "Basic"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/admin/item.py:56
|
||||
msgid "Lent"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/admin/item.py:62
|
||||
msgid "Received"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/admin/item.py:67
|
||||
msgid "Handed over"
|
||||
msgstr ""
|
||||
|
||||
#: inventory/models/base.py:15
|
||||
msgid "BaseModel.id.verbose_name"
|
||||
msgstr "ID"
|
||||
|
@ -32,7 +68,9 @@ 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)"
|
||||
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"
|
||||
|
@ -50,38 +88,230 @@ msgstr "Tags"
|
|||
msgid "BaseModel.tags.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:14
|
||||
#: inventory/models/item.py:18
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.help_text"
|
||||
msgid "ItemModel.kind.help_text"
|
||||
msgstr "Unique number from the FCC"
|
||||
|
||||
#: inventory/models/item.py:24
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.help_text"
|
||||
msgid "ItemModel.producer.help_text"
|
||||
msgstr "Unique number from the FCC"
|
||||
|
||||
#: inventory/models/item.py:28
|
||||
msgid "ItemModel.description.verbose_name"
|
||||
msgstr "Description"
|
||||
|
||||
#: inventory/models/item.py:15
|
||||
#: inventory/models/item.py:29
|
||||
msgid "ItemModel.description.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:20
|
||||
#: inventory/models/item.py:34
|
||||
msgid "ItemModel.fcc_id.verbose_name"
|
||||
msgstr "FCC ID"
|
||||
|
||||
#: inventory/models/item.py:21
|
||||
#: inventory/models/item.py:35
|
||||
msgid "ItemModel.fcc_id.help_text"
|
||||
msgstr "Unique number from the FCC"
|
||||
|
||||
#: inventory/models/item.py:26
|
||||
#: inventory/models/item.py:40
|
||||
msgid "ItemModel.location.verbose_name"
|
||||
msgstr "Location"
|
||||
|
||||
#: inventory/models/item.py:27
|
||||
#: inventory/models/item.py:41
|
||||
msgid "ItemModel.location.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:34
|
||||
#: inventory/models/item.py:47
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.verbose_name"
|
||||
msgid "ItemModel.parent.verbose_name"
|
||||
msgstr "FCC ID"
|
||||
|
||||
#: inventory/models/item.py:48
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.help_text"
|
||||
msgid "ItemModel.parent.help_text"
|
||||
msgstr "Unique number from the FCC"
|
||||
|
||||
#: inventory/models/item.py:57
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.location.verbose_name"
|
||||
msgid "ItemModel.lent_to.verbose_name"
|
||||
msgstr "Location"
|
||||
|
||||
#: inventory/models/item.py:58
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.location.help_text"
|
||||
msgid "ItemModel.lent_to.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:62
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.location.verbose_name"
|
||||
msgid "ItemModel.lent_from_date.verbose_name"
|
||||
msgstr "Location"
|
||||
|
||||
#: inventory/models/item.py:63
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.location.help_text"
|
||||
msgid "ItemModel.lent_from_date.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:67
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.location.verbose_name"
|
||||
msgid "ItemModel.lent_until_date.verbose_name"
|
||||
msgstr "Location"
|
||||
|
||||
#: inventory/models/item.py:68
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.location.help_text"
|
||||
msgid "ItemModel.lent_until_date.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:77
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.verbose_name"
|
||||
msgid "ItemModel.received_from.verbose_name"
|
||||
msgstr "FCC ID"
|
||||
|
||||
#: inventory/models/item.py:78
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.help_text"
|
||||
msgid "ItemModel.received_from.help_text"
|
||||
msgstr "Unique number from the FCC"
|
||||
|
||||
#: inventory/models/item.py:82
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.verbose_name"
|
||||
msgid "ItemModel.received_date.verbose_name"
|
||||
msgstr "FCC ID"
|
||||
|
||||
#: inventory/models/item.py:83
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.fcc_id.help_text"
|
||||
msgid "ItemModel.received_date.help_text"
|
||||
msgstr "Unique number from the FCC"
|
||||
|
||||
#: inventory/models/item.py:88
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.verbose_name"
|
||||
msgid "ItemModel.received_price.verbose_name"
|
||||
msgstr "Description"
|
||||
|
||||
#: inventory/models/item.py:89
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.help_text"
|
||||
msgid "ItemModel.received_price.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:98
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.verbose_name"
|
||||
msgid "ItemModel.handed_over_to.verbose_name"
|
||||
msgstr "Description"
|
||||
|
||||
#: inventory/models/item.py:99
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.help_text"
|
||||
msgid "ItemModel.handed_over_to.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:103
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.verbose_name"
|
||||
msgid "ItemModel.handed_over_date.verbose_name"
|
||||
msgstr "Description"
|
||||
|
||||
#: inventory/models/item.py:104
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.help_text"
|
||||
msgid "ItemModel.handed_over_date.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:109
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.verbose_name"
|
||||
msgid "ItemModel.handed_over_price.verbose_name"
|
||||
msgstr "Description"
|
||||
|
||||
#: inventory/models/item.py:110
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.description.help_text"
|
||||
msgid "ItemModel.handed_over_price.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/item.py:128
|
||||
msgid "ItemModel.verbose_name"
|
||||
msgstr "Item"
|
||||
|
||||
#: inventory/models/item.py:35
|
||||
#: inventory/models/item.py:129
|
||||
msgid "ItemModel.verbose_name_plural"
|
||||
msgstr "Items"
|
||||
|
||||
#: inventory/models/item.py:144
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.verbose_name"
|
||||
msgid "ItemLinkModel.verbose_name"
|
||||
msgstr "Item"
|
||||
|
||||
#: inventory/models/item.py:145
|
||||
#, fuzzy
|
||||
#| msgid "ItemModel.verbose_name_plural"
|
||||
msgid "ItemLinkModel.verbose_name_plural"
|
||||
msgstr "Items"
|
||||
|
||||
#: inventory/models/links.py:20
|
||||
#, fuzzy
|
||||
#| msgid "BaseModel.name.verbose_name"
|
||||
msgid "BaseLink.name.verbose_name"
|
||||
msgstr "Name"
|
||||
|
||||
#: inventory/models/links.py:21
|
||||
#, fuzzy
|
||||
#| msgid "BaseModel.name.help_text"
|
||||
msgid "BaseLink.name.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/links.py:24 inventory/models/links.py:29
|
||||
#, fuzzy
|
||||
#| msgid "LocationModel.verbose_name"
|
||||
msgid "Link.url.verbose_name"
|
||||
msgstr "Location"
|
||||
|
||||
#: inventory/models/links.py:25 inventory/models/links.py:30
|
||||
#, fuzzy
|
||||
#| msgid "LocationModel.parent.help_text"
|
||||
msgid "Link.url.help_text"
|
||||
msgstr "Locations can be nested. Example: The box 12 in cupboard 3"
|
||||
|
||||
#: inventory/models/links.py:34
|
||||
#, fuzzy
|
||||
#| msgid "LocationModel.verbose_name"
|
||||
msgid "Link.status_code.verbose_name"
|
||||
msgstr "Location"
|
||||
|
||||
#: inventory/models/links.py:35
|
||||
#, fuzzy
|
||||
#| msgid "BaseModel.id.help_text"
|
||||
msgid "Link.status_code.help_text"
|
||||
msgstr " "
|
||||
|
||||
#: inventory/models/links.py:39
|
||||
#, fuzzy
|
||||
#| msgid "LocationModel.parent.verbose_name"
|
||||
msgid "Link.page_title.verbose_name"
|
||||
msgstr "Parent"
|
||||
|
||||
#: inventory/models/links.py:40
|
||||
#, fuzzy
|
||||
#| msgid "LocationModel.parent.help_text"
|
||||
msgid "Link.page_title.help_text"
|
||||
msgstr "Locations can be nested. Example: The box 12 in cupboard 3"
|
||||
|
||||
#: inventory/models/location.py:14
|
||||
msgid "LocationModel.description.verbose_name"
|
||||
msgstr "Description"
|
||||
|
@ -98,18 +328,38 @@ msgstr "Parent"
|
|||
msgid "LocationModel.parent.help_text"
|
||||
msgstr "Locations can be nested. Example: The box 12 in cupboard 3"
|
||||
|
||||
#: inventory/models/location.py:29
|
||||
#: inventory/models/location.py:32
|
||||
msgid "LocationModel.verbose_name"
|
||||
msgstr "Location"
|
||||
|
||||
#: inventory/models/location.py:30
|
||||
#: inventory/models/location.py:33
|
||||
msgid "LocationModel.verbose_name_plural"
|
||||
msgstr "Locations"
|
||||
|
||||
#: inventory_project/settings.py:110
|
||||
#: inventory_project/settings.py:111
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
#: inventory_project/settings.py:111
|
||||
#: inventory_project/settings.py:112
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.fcc_id.verbose_name"
|
||||
#~ msgid "ItemModel.received_url.verbose_name"
|
||||
#~ msgstr "FCC ID"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.fcc_id.help_text"
|
||||
#~ msgid "ItemModel.received_url.help_text"
|
||||
#~ msgstr "Unique number from the FCC"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.verbose_name"
|
||||
#~ msgid "ItemModel.handed_over_url.verbose_name"
|
||||
#~ msgstr "Item"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "ItemModel.location.help_text"
|
||||
#~ msgid "ItemModel.handed_over_url.help_text"
|
||||
#~ msgstr " "
|
||||
|
|
|
@ -63,7 +63,7 @@ webencodings = "*"
|
|||
|
||||
[[package]]
|
||||
name = "bx-py-utils"
|
||||
version = "0.0.1"
|
||||
version = "0.0.2"
|
||||
description = "Various Python / Django utility functions"
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -204,6 +204,17 @@ sqlparse = ">=0.2.2"
|
|||
argon2 = ["argon2-cffi (>=16.1.0)"]
|
||||
bcrypt = ["bcrypt"]
|
||||
|
||||
[[package]]
|
||||
name = "django-admin-sortable2"
|
||||
version = "0.7.7"
|
||||
description = "Generic drag-and-drop sorting for the List, the Stacked- and the Tabular-Inlines Views in the Django Admin"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[package.dependencies]
|
||||
Django = ">=1.8,<3.2"
|
||||
|
||||
[[package]]
|
||||
name = "django-ckeditor"
|
||||
version = "6.0.0"
|
||||
|
@ -968,7 +979,7 @@ testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pyt
|
|||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = ">=3.7,<4.0.0"
|
||||
content-hash = "81bfc3b102483db10838f298a425e9436883c93f06940662e7e7b85b4b9d8308"
|
||||
content-hash = "d164a00462dfbb50f85ba6882679350cdfc82ff65e48a0d5d2b0fda6068a4b30"
|
||||
|
||||
[metadata.files]
|
||||
appdirs = [
|
||||
|
@ -995,8 +1006,8 @@ bleach = [
|
|||
{file = "bleach-3.2.1.tar.gz", hash = "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080"},
|
||||
]
|
||||
bx-py-utils = [
|
||||
{file = "bx_py_utils-0.0.1-py3-none-any.whl", hash = "sha256:f553db431f98482abf6a7cf4b416af882922ddd7487bcf0713fd3031b5855a09"},
|
||||
{file = "bx_py_utils-0.0.1.tar.gz", hash = "sha256:8ed6cd3c6dd31da01ff72b06f2d85983f5680d494c37d058ae6ba2a82f0ab3e5"},
|
||||
{file = "bx_py_utils-0.0.2-py3-none-any.whl", hash = "sha256:c39c6be8d18c959dd314febfc8a3b7d8f73315cd1cba91fbbb4e602e5e97fd0c"},
|
||||
{file = "bx_py_utils-0.0.2.tar.gz", hash = "sha256:f956772cbf84329c3d9cd22b00d5e01a37ca578104bd9474e15dabc6e6bf6529"},
|
||||
]
|
||||
certifi = [
|
||||
{file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"},
|
||||
|
@ -1131,6 +1142,9 @@ django = [
|
|||
{file = "Django-2.2.16-py3-none-any.whl", hash = "sha256:83ced795a0f239f41d8ecabf51cc5fad4b97462a6008dc12e5af3cb9288724ec"},
|
||||
{file = "Django-2.2.16.tar.gz", hash = "sha256:62cf45e5ee425c52e411c0742e641a6588b7e8af0d2c274a27940931b2786594"},
|
||||
]
|
||||
django-admin-sortable2 = [
|
||||
{file = "django-admin-sortable2-0.7.7.tar.gz", hash = "sha256:65c8a02300e178b4a02c904b6f4dce6e528c58f5ecab3907dfba3540da51b862"},
|
||||
]
|
||||
django-ckeditor = [
|
||||
{file = "django-ckeditor-6.0.0.tar.gz", hash = "sha256:29fd1a333cb9741ac2c3fd4e427a5c00115ed33a2389716a09af7656022dcdde"},
|
||||
{file = "django_ckeditor-6.0.0-py2.py3-none-any.whl", hash = "sha256:cc2d377f1bdcd4ca1540caeebe85f7e2cd006198d57328ef6c718d3eaa5a0846"},
|
||||
|
|
|
@ -50,6 +50,8 @@ django-reversion-compare = "*" # https://github.com/jedie/django-reversion-comp
|
|||
django-ckeditor = "*" # https://github.com/django-ckeditor/django-ckeditor
|
||||
bx_py_utils = "*" # https://github.com/boxine/bx_py_utils
|
||||
django-tagulous = "*" # https://github.com/radiac/django-tagulous
|
||||
django-admin-sortable2 = "*" # https://github.com/jrief/django-admin-sortable2
|
||||
requests = "*" # https://github.com/psf/requests
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
poetry-publish = "*" # https://github.com/jedie/poetry-publish
|
||||
|
|
Ładowanie…
Reference in New Issue