Merge remote-tracking branch 'inventree/master'

This commit is contained in:
Oliver Walters 2020-02-02 22:26:18 +11:00
commit 8412885e09
21 changed files with 733 additions and 223 deletions

View File

@ -29,6 +29,8 @@ class InvenTreeTree(MPTTModel):
class Meta:
abstract = True
# Names must be unique at any given level in the tree
unique_together = ('name', 'parent')
class MPTTMeta:
@ -37,7 +39,6 @@ class InvenTreeTree(MPTTModel):
name = models.CharField(
blank=False,
max_length=100,
unique=True,
validators=[validate_tree_name]
)

View File

@ -41,6 +41,13 @@ function inventreeDocReady() {
modal.modal('show');
});
// Callback to launch the 'Database Stats' window
$('#launch-stats').click(function() {
launchModalForm("/stats/", {
no_post: true,
});
});
}
function isFileTransfer(transfer) {

View File

@ -33,7 +33,8 @@ from django.conf.urls.static import static
from django.views.generic.base import RedirectView
from rest_framework.documentation import include_docs_urls
from .views import IndexView, SearchView, SettingsView, EditUserView, SetPasswordView
from .views import IndexView, SearchView, DatabaseStatsView
from .views import SettingsView, EditUserView, SetPasswordView
from .views import InfoView
from users.urls import user_urls
@ -97,6 +98,7 @@ urlpatterns = [
url(r'^index/', IndexView.as_view(), name='index'),
url(r'^search/', SearchView.as_view(), name='search'),
url(r'^stats/', DatabaseStatsView.as_view(), name='stats'),
url(r'^api/', include(apipatterns)),
url(r'^api-doc/', include_docs_urls(title='InvenTree API')),

View File

@ -8,6 +8,7 @@ as JSON objects and passing them to modal forms (using jQuery / bootstrap).
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.utils.translation import gettext_lazy as _
from django.template.loader import render_to_string
from django.http import JsonResponse, HttpResponseRedirect
@ -15,7 +16,8 @@ from django.views import View
from django.views.generic import UpdateView, CreateView
from django.views.generic.base import TemplateView
from part.models import Part
from part.models import Part, PartCategory
from stock.models import StockLocation, StockItem
from common.models import InvenTreeSetting
from .forms import DeleteForm, EditUserForm, SetPasswordForm
@ -537,3 +539,33 @@ class SettingsView(TemplateView):
ctx['settings'] = InvenTreeSetting.objects.all().order_by('key')
return ctx
class DatabaseStatsView(AjaxView):
""" View for displaying database statistics """
ajax_template_name = "stats.html"
ajax_form_title = _("Database Statistics")
def get_context_data(self, **kwargs):
ctx = {}
# Part stats
ctx['part_count'] = Part.objects.count()
ctx['part_cat_count'] = PartCategory.objects.count()
# Stock stats
ctx['stock_item_count'] = StockItem.objects.count()
ctx['stock_loc_count'] = StockLocation.objects.count()
"""
TODO: Other ideas for database metrics
- "Popular" parts (used to make other parts?)
- Most ordered part
- Most sold part
- etc etc etc
"""
return ctx

View File

@ -1,9 +1,10 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block page_title %}
InvenTree | Company - {{ company.name }}
InvenTree | {% trans "Company" %} - {{ company.name }}
{% endblock %}
{% block content %}
@ -44,27 +45,27 @@ InvenTree | Company - {{ company.name }}
<table class="table">
{% if company.website %}
<tr>
<td>Website</td><td><a href="{{ company.website }}">{{ company.website }}</a></td>
<td>{% trans "Website" %}</td><td><a href="{{ company.website }}">{{ company.website }}</a></td>
</tr>
{% endif %}
{% if company.address %}
<tr>
<td>Address</td><td>{{ company.address }}</td>
<td>{% trans "Address" %}</td><td>{{ company.address }}</td>
</tr>
{% endif %}
{% if company.phone %}
<tr>
<td>Phone</td><td>{{ company.phone }}</td>
<td>{% trans "Phone" %}</td><td>{{ company.phone }}</td>
</tr>
{% endif %}
{% if company.email %}
<tr>
<td>Email</td><td>{{ company.email }}</td>
<td>{% trans "Email" %}</td><td>{{ company.email }}</td>
</tr>
{% endif %}
{% if company.contact %}
<tr>
<td>Contact</td><td>{{ company.contact }}</td>
<td>{% trans "Contact" %}</td><td>{{ company.contact }}</td>
</tr>
{% endif %}
</table>

View File

@ -1,19 +1,20 @@
{% extends "company/company_base.html" %}
{% load static %}
{% load i18n %}}
{% block details %}
{% include 'company/tabs.html' with tab='details' %}
<h4>Company Details</h4>
<h4>{% trans "Company Details" %}</h4>
<hr>
<table class='table table-striped'>
<tr>
<td>Customer</td>
<td>{% trans "Customer" %}</td>
<td>{% include 'yesnolabel.html' with value=company.is_customer %}</td>
</tr>
<tr>
<td>Supplier</td>
<td>{% trans "Supplier" %}</td>
<td>{% include 'yesnolabel.html' with value=company.is_supplier %}</td>
</tr>
</table>

View File

@ -1,21 +1,22 @@
{% extends "company/company_base.html" %}
{% load static %}
{% block details %}
{% load i18n %}
{% include 'company/tabs.html' with tab='parts' %}
<h4>Supplier Parts</h4>
<h4>{% trans "Supplier Parts" %}</h4>
<hr>
<div id='button-toolbar'>
<button class="btn btn-success" id='part-create'>New Supplier Part</button>
<button class="btn btn-success" id='part-create'>{% trans "New Supplier Part" %}</button>
<div class="dropdown" style="float: right;">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Options
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">{% trans "Options" %}
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href='#' id='multi-part-order' title='Order parts'>Order Parts</a></li>
<li><a href='#' id='multi-part-delete' title='Delete parts'>Delete Parts</a></li>
<li><a href='#' id='multi-part-order' title='Order parts'>{% trans "Order Parts" %}</a></li>
<li><a href='#' id='multi-part-delete' title='Delete parts'>{% trans "Delete Parts" %}</a></li>
</ul>
</div>
</div>
@ -61,7 +62,7 @@
{
sortable: true,
field: 'part_detail.full_name',
title: 'Part',
title: '{% trans "Part" %}',
formatter: function(value, row, index, field) {
return imageHoverIcon(row.part_detail.image_url) + renderLink(value, '/part/' + row.part + '/suppliers/');
}
@ -69,7 +70,7 @@
{
sortable: true,
field: 'SKU',
title: 'SKU',
title: '{% trans "SKU" %}',
formatter: function(value, row, index, field) {
return renderLink(value, row.url);
}
@ -77,7 +78,7 @@
{
sortable: true,
field: 'manufacturer',
title: 'Manufacturer',
title: '{% trans "Manufacturer" %}',
},
{
sortable: true,
@ -86,7 +87,7 @@
},
{
field: 'URL',
title: 'URL',
title: '{% trans "URL" %}',
formatter: function(value, row, index, field) {
if (value) {
return renderLink(value, value);

View File

@ -1,15 +1,16 @@
{% extends "company/company_base.html" %}
{% load static %}
{% block details %}
{% load i18n %}
{% include 'company/tabs.html' with tab='po' %}
<h4>Open Purchase Orders</h4>
<h4>{% trans "Purchase Orders" %}</h4>
<hr>
<div id='button-bar'>
<div class='btn-group'>
<button class='btn btn-primary' type='button' id='company-order2' title='Create new purchase order'>New Purchase Order</button>
<button class='btn btn-primary' type='button' id='company-order2' title='Create new purchase order'>{% trans "New Purchase Order" %}</button>
</div>
</div>

View File

@ -1,11 +1,12 @@
{% extends "company/company_base.html" %}
{% load static %}
{% load i18n %}
{% block details %}
{% include "company/tabs.html" with tab='stock' %}
<h4>Supplier Stock</h4>
<h4>{% trans "Supplier Stock" %}</h4>
<hr>
@ -29,7 +30,7 @@
$("#stock-export").click(function() {
launchModalForm("{% url 'stock-export-options' %}", {
submit_text: "Export",
submit_text: '{% trans "Export" %}',
success: function(response) {
var url = "{% url 'stock-export' %}";

View File

@ -1,19 +1,20 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block page_title %}
InvenTree | Supplier List
InvenTree | {% trans "Supplier List" %}
{% endblock %}
{% block content %}
<h3>Supplier List</h3>
<h3>{% trans "Supplier List" %}</h3>
<hr>
<div id='button-toolbar'>
<div class='btn-group'>
<button type='button' class="btn btn-success" id='new-company' title='Add new supplier'>New Supplier</button>
<button type='button' class="btn btn-success" id='new-company' title='Add new supplier'>{% trans "New Supplier" %}</button>
</div>
</div>
@ -37,12 +38,12 @@ InvenTree | Supplier List
columns: [
{
field: 'pk',
title: 'ID',
title: '{% trans "ID" %}',
visible: false,
},
{
field: 'name',
title: 'Supplier',
title: '{% trans "Supplier" %}',
sortable: true,
formatter: function(value, row, index, field) {
return imageHoverIcon(row.image) + renderLink(value, row.url);
@ -50,12 +51,12 @@ InvenTree | Supplier List
},
{
field: 'description',
title: 'Description',
title: '{% trans "Description" %}',
sortable: true,
},
{
field: 'website',
title: 'Website',
title: '{% trans "Website" %}',
formatter: function(value, row, index, field) {
if (value) {
return renderLink(value, value);
@ -65,7 +66,7 @@ InvenTree | Supplier List
},
{
field: 'part_count',
title: 'Parts',
title: '{% trans "Parts" %}',
sortable: true,
formatter: function(value, row, index, field) {
return renderLink(value, row.url + 'parts/');

View File

@ -1,49 +0,0 @@
{% extends "base.html" %}
{% block content %}
<h3>Supplier Order Details</h3>
<table class='table table-striped'>
<tr>
<td>Reference</td>
<td>{{ order.internal_ref }}</td>
</tr>
<tr>
<td>Supplier</td>
<td>
{% if order.supplier %}
<a href="{% url 'supplier-detail-orders' order.supplier.id %}">{{ order.supplier.name }}</a>
{% endif %}
</td>
</tr>
<tr>
<td>Status</td>
<td>{% include "supplier/order_status.html" with order=order %}</td>
</tr>
<tr>
<td>Created Date</td>
<td>{{ order.created_date }}</td>
</tr>
<tr>
<td>Issued Date</td>
<td>{{ order.issued_date }}</td>
</tr>
<tr>
<td>Delivered Date</td>
<td>{{ order.delivery_date }}</td>
</tr>
</table>
{% if order.notes %}
<div class="panel panel-default">
<div class="panel-heading"><b>Notes</b></div>
<div class="panel-body">{{ order.notes }}</div>
</div>
{% endif %}
<h2>TODO</h2>
Here we list all the line ites which exist under this order...
{% endblock %}

View File

@ -1,15 +1,16 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block page_title %}
InvenTree | {{ company.name }} - Parts
InvenTree | {{ company.name }} - {% trans "Parts" %}
{% endblock %}
{% block content %}
<div class='row'>
<div class='col-sm-6'>
<h3>Supplier Part</h3>
<h3>{% trans "Supplier Part" %}</h3>
<div class='btn-row'>
<div class='btn-group'>
<button type='button' class='btn btn-default btn-glyph' id='edit-part' title='Edit supplier part'>
@ -37,52 +38,52 @@ InvenTree | {{ company.name }} - Parts
<div class='row'>
<div class='col-sm-6'>
<h4>Supplier Part Details</h4>
<h4>{% trans "Supplier Part Details" %}</h4>
<table class="table table-striped table-condensed">
<tr>
<td>Internal Part</td>
<td>{% trans "Internal Part" %}</td>
<td>
{% if part.part %}
<a href="{% url 'part-suppliers' part.part.id %}">{{ part.part.full_name }}</a>
{% endif %}
</td>
</tr>
<tr><td>Supplier</td><td><a href="{% url 'company-detail-parts' part.supplier.id %}">{{ part.supplier.name }}</a></td></tr>
<tr><td>SKU</td><td>{{ part.SKU }}</tr></tr>
<tr><td>{% trans "Supplier" %}</td><td><a href="{% url 'company-detail-parts' part.supplier.id %}">{{ part.supplier.name }}</a></td></tr>
<tr><td>{% trans "SKU" %}</td><td>{{ part.SKU }}</tr></tr>
{% if part.URL %}
<tr><td>URL</td><td><a href="{{ part.URL }}">{{ part.URL }}</a></td></tr>
<tr><td>{% trans "URL" %}</td><td><a href="{{ part.URL }}">{{ part.URL }}</a></td></tr>
{% endif %}
{% if part.description %}
<tr><td>Description</td><td>{{ part.description }}</td></tr>
<tr><td>{% trans "Description" %}</td><td>{{ part.description }}</td></tr>
{% endif %}
{% if part.manufacturer %}
<tr><td>Manufacturer</td><td>{{ part.manufacturer }}</td></tr>
<tr><td>MPN</td><td>{{ part.MPN }}</td></tr>
<tr><td>{% trans "Manufacturer" %}</td><td>{{ part.manufacturer }}</td></tr>
<tr><td>{% trans "MPN" %}</td><td>{{ part.MPN }}</td></tr>
{% endif %}
{% if part.note %}
<tr><td>Note</td><td>{{ part.note }}</td></tr>
<tr><td>{% trans "Note" %}</td><td>{{ part.note }}</td></tr>
{% endif %}
</table>
</div>
<div class='col-sm-6'>
<h4>Pricing Information</h4>
<h4>{% trans "Pricing Information" %}</h4>
<table class="table table-striped table-condensed">
<tr><td>Order Multiple</td><td>{{ part.multiple }}</td></tr>
<tr><td>{% trans "Order Multiple" %}</td><td>{{ part.multiple }}</td></tr>
{% if part.base_cost > 0 %}
<tr><td>Base Price (Flat Fee)</td><td>{{ part.base_cost }}</td></tr>
<tr><td>{% trans "Base Price (Flat Fee)" %}</td><td>{{ part.base_cost }}</td></tr>
{% endif %}
<tr>
<th>Price Breaks</th>
<th>{% trans "Price Breaks" %}</th>
<th>
<div style='float: right;'>
<button class='btn btn-primary' id='new-price-break' type='button'>New Price Break</button>
<button class='btn btn-primary' id='new-price-break' type='button'>{% trans "New Price Break" %}</button>
</div>
</th>
</tr>
<tr>
<th>Quantity</th>
<th>Price</th>
<th>{% trans "Quantity" %}</th>
<th>{% trans "Price" %}</th>
</tr>
{% if part.price_breaks.all %}
{% for pb in part.price_breaks.all %}
@ -102,7 +103,7 @@ InvenTree | {{ company.name }} - Parts
{% else %}
<tr>
<td colspan='2'>
<span class='warning-msg'><i>No price breaks have been added for this part</i></span>
<span class='warning-msg'><i>{% trans "No price breaks have been added for this part" %}</i></span>
</td>
</tr>
{% endif %}
@ -112,7 +113,7 @@ InvenTree | {{ company.name }} - Parts
<hr>
<h4>Purchase Orders</h4>
<h4>{% trans "Purchase Orders" %}</h4>
{% include "order/po_table.html" with orders=part.purchase_orders %}
{% endblock %}

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-02 07:07+0000\n"
"POT-Creation-Date: 2020-02-02 10:40+0000\n"
"PO-Revision-Date: 2020-02-02 08:07+0100\n"
"Last-Translator: Christian Schlüter <chschlue@gmail.com>\n"
"Language-Team: C <kde-i18n-doc@kde.org>\n"
@ -216,6 +216,7 @@ msgstr "Zuweisung aufheben"
#: build/templates/build/allocate_edit.html:19
#: build/templates/build/allocate_view.html:17
#: build/templates/build/detail.html:17
#: company/templates/company/detail_part.html:65
#: order/templates/order/purchase_order_detail.html:25
msgid "Part"
msgstr "Teil"
@ -239,10 +240,13 @@ msgid "Allocate"
msgstr "zuweisen"
#: build/templates/build/allocate_view.html:10
#: company/templates/company/detail_part.html:18
msgid "Order Parts"
msgstr "Teile bestellen"
#: build/templates/build/allocate_view.html:18
#: company/templates/company/index.html:54
#: company/templates/company/partdetail.html:57
#: order/templates/order/purchase_order_detail.html:26
#: part/templates/part/detail.html:33
msgid "Description"
@ -262,6 +266,7 @@ msgid "Title"
msgstr "Titel"
#: build/templates/build/detail.html:20
#: company/templates/company/partdetail.html:85
#: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:90
#: stock/templates/stock/stock_adjust.html:18
@ -286,8 +291,10 @@ msgstr "Status"
msgid "Batch"
msgstr "Los"
#: build/templates/build/detail.html:42 part/templates/part/detail.html:50
#: part/templates/part/part_base.html:91
#: build/templates/build/detail.html:42
#: company/templates/company/detail_part.html:90
#: company/templates/company/partdetail.html:54
#: part/templates/part/detail.html:50 part/templates/part/part_base.html:91
#: stock/templates/stock/item_base.html:120
msgid "URL"
msgstr "URL"
@ -439,7 +446,8 @@ msgstr "Zulieferer auswählen"
msgid "Supplier stock keeping unit"
msgstr "Stock Keeping Units (SKU) des Zulieferers"
#: company/models.py:240
#: company/models.py:240 company/templates/company/detail_part.html:81
#: company/templates/company/partdetail.html:60
msgid "Manufacturer"
msgstr "Hersteller"
@ -463,6 +471,121 @@ msgstr "Mindestpreis"
msgid "Part packaging"
msgstr "Teile-Packaging"
#: company/templates/company/company_base.html:7 order/models.py:128
msgid "Company"
msgstr "Firma"
#: company/templates/company/company_base.html:48
#: company/templates/company/index.html:59
msgid "Website"
msgstr ""
#: company/templates/company/company_base.html:53
msgid "Address"
msgstr ""
#: company/templates/company/company_base.html:58
msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:63
msgid "Email"
msgstr ""
#: company/templates/company/company_base.html:68
msgid "Contact"
msgstr ""
#: company/templates/company/detail.html:8
#, fuzzy
#| msgid "Company Notes"
msgid "Company Details"
msgstr "Firmenbemerkungen"
#: company/templates/company/detail.html:13
#: stock/templates/stock/item_base.html:114
msgid "Customer"
msgstr "Kunde"
#: company/templates/company/detail.html:17
#: company/templates/company/index.html:46
#: company/templates/company/partdetail.html:51
#: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126
msgid "Supplier"
msgstr "Zulieferer"
#: company/templates/company/detail_part.html:8
#: company/templates/company/tabs.html:9
msgid "Supplier Parts"
msgstr "Zulieferer-Teile"
#: company/templates/company/detail_part.html:13
#, fuzzy
#| msgid "Supplier Part"
msgid "New Supplier Part"
msgstr "Zulieferer-Teil"
#: company/templates/company/detail_part.html:15
msgid "Options"
msgstr ""
#: company/templates/company/detail_part.html:19
#, fuzzy
#| msgid "Delete attachment"
msgid "Delete Parts"
msgstr "Anhang löschen"
#: company/templates/company/detail_part.html:73
#: company/templates/company/partdetail.html:52
msgid "SKU"
msgstr ""
#: company/templates/company/detail_purchase_orders.html:8
#: company/templates/company/partdetail.html:116
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders"
msgstr "Bestellungen"
#: company/templates/company/detail_purchase_orders.html:13
#, fuzzy
#| msgid "Purchase Order"
msgid "New Purchase Order"
msgstr "Kaufvertrag"
#: company/templates/company/detail_stock.html:9
#, fuzzy
#| msgid "Supplier part"
msgid "Supplier Stock"
msgstr "Zulieferer-Teil"
#: company/templates/company/detail_stock.html:33
msgid "Export"
msgstr ""
#: company/templates/company/index.html:7
#: company/templates/company/index.html:12
#, fuzzy
#| msgid "Suppliers"
msgid "Supplier List"
msgstr "Zulieferer"
#: company/templates/company/index.html:17
#, fuzzy
#| msgid "Supplier"
msgid "New Supplier"
msgstr "Zulieferer"
#: company/templates/company/index.html:41
msgid "ID"
msgstr ""
#: company/templates/company/index.html:69
#: company/templates/company/partdetail.html:6
#: part/templates/part/category.html:73
msgid "Parts"
msgstr "Teile"
#: company/templates/company/notes.html:10
#: company/templates/company/notes.html:27
msgid "Company Notes"
@ -473,18 +596,70 @@ msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr ""
"Sind Sie sicher, dass sie die folgenden Zulieferer-Teile löschen möchten?"
#: company/templates/company/tabs.html:9
msgid "Supplier Parts"
#: company/templates/company/partdetail.html:13
#: stock/templates/stock/item_base.html:130
msgid "Supplier Part"
msgstr "Zulieferer-Teil"
#: company/templates/company/partdetail.html:41
#, fuzzy
#| msgid "Supplier Parts"
msgid "Supplier Part Details"
msgstr "Zulieferer-Teile"
#: company/templates/company/partdetail.html:44
#, fuzzy
#| msgid "Internal Part Number"
msgid "Internal Part"
msgstr "Interne Teilenummer"
#: company/templates/company/partdetail.html:61
#, fuzzy
#| msgid "IPN"
msgid "MPN"
msgstr "IPN (Interne Produktnummer)"
#: company/templates/company/partdetail.html:64
#: order/templates/order/purchase_order_detail.html:33
msgid "Note"
msgstr "Notiz"
#: company/templates/company/partdetail.html:70
#, fuzzy
#| msgid "Show pricing information"
msgid "Pricing Information"
msgstr "Kosteninformationen ansehen"
#: company/templates/company/partdetail.html:72
#, fuzzy
#| msgid "Order notes"
msgid "Order Multiple"
msgstr "Bestell-Notizen"
#: company/templates/company/partdetail.html:74
msgid "Base Price (Flat Fee)"
msgstr ""
#: company/templates/company/partdetail.html:77
msgid "Price Breaks"
msgstr ""
#: company/templates/company/partdetail.html:80
msgid "New Price Break"
msgstr ""
#: company/templates/company/partdetail.html:86
msgid "Price"
msgstr ""
#: company/templates/company/partdetail.html:106
msgid "No price breaks have been added for this part"
msgstr ""
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17
msgid "Stock"
msgstr "Lagerbestand"
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders"
msgstr "Bestellungen"
#: company/templates/company/tabs.html:21
msgid "Sales Orders"
msgstr "Bestellungen"
@ -521,10 +696,6 @@ msgstr "Link auf externe Seite"
msgid "Order notes"
msgstr "Bestell-Notizen"
#: order/models.py:128
msgid "Company"
msgstr "Firma"
#: order/models.py:159 order/models.py:210 part/views.py:1065
#: stock/models.py:440
msgid "Quantity must be greater than zero"
@ -566,11 +737,6 @@ msgstr "Empfangene Objekt-Anzahl"
msgid "Purchase Order Details"
msgstr "Bestelldetails"
#: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126
msgid "Supplier"
msgstr "Zulieferer"
#: order/templates/order/order_base.html:80
msgid "Issued"
msgstr "Aufgegeben"
@ -605,10 +771,6 @@ msgstr "Bestellnummer"
msgid "Reference"
msgstr "Referenz"
#: order/templates/order/purchase_order_detail.html:33
msgid "Note"
msgstr "Notiz"
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr "Positionen"
@ -939,10 +1101,6 @@ msgstr "Teile (inklusive Unter-Kategorien)"
msgid "Part Details"
msgstr "Teile-Details"
#: part/templates/part/category.html:73
msgid "Parts"
msgstr "Teile"
#: part/templates/part/detail.html:22 part/templates/part/part_base.html:85
msgid "IPN"
msgstr "IPN (Interne Produktnummer)"
@ -1317,14 +1475,6 @@ msgstr "Standort"
msgid "Serial Number"
msgstr "Seriennummer"
#: stock/templates/stock/item_base.html:114
msgid "Customer"
msgstr "Kunde"
#: stock/templates/stock/item_base.html:130
msgid "Supplier Part"
msgstr "Zulieferer-Teil"
#: stock/templates/stock/item_base.html:135
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
@ -1363,6 +1513,7 @@ msgid "Stock Details"
msgstr "Objekt-Details"
#: stock/templates/stock/location.html:60
#: templates/InvenTree/search_stock_location.html:6
msgid "Stock Locations"
msgstr "Lagerobjekt-Standorte"
@ -1512,6 +1663,16 @@ msgstr "Lagerbestands-Tracking-Eintrag bearbeiten"
msgid "Add Stock Tracking Entry"
msgstr "Lagerbestands-Tracking-Eintrag hinzufügen"
#: templates/InvenTree/search.html:12
msgid "Search Results"
msgstr ""
#: templates/InvenTree/search.html:22
#, fuzzy
#| msgid "No serial numbers found"
msgid "No results found"
msgstr "Keine Seriennummern gefunden"
#: templates/about.html:18
msgid "InvenTree Version Information"
msgstr "InvenTree-Versionsinformationen"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-02 01:39+0000\n"
"POT-Creation-Date: 2020-02-02 10:40+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"
@ -212,6 +212,7 @@ msgstr ""
#: build/templates/build/allocate_edit.html:19
#: build/templates/build/allocate_view.html:17
#: build/templates/build/detail.html:17
#: company/templates/company/detail_part.html:65
#: order/templates/order/purchase_order_detail.html:25
msgid "Part"
msgstr ""
@ -235,10 +236,13 @@ msgid "Allocate"
msgstr ""
#: build/templates/build/allocate_view.html:10
#: company/templates/company/detail_part.html:18
msgid "Order Parts"
msgstr ""
#: build/templates/build/allocate_view.html:18
#: company/templates/company/index.html:54
#: company/templates/company/partdetail.html:57
#: order/templates/order/purchase_order_detail.html:26
#: part/templates/part/detail.html:33
msgid "Description"
@ -258,6 +262,7 @@ msgid "Title"
msgstr ""
#: build/templates/build/detail.html:20
#: company/templates/company/partdetail.html:85
#: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:90
#: stock/templates/stock/stock_adjust.html:18
@ -282,8 +287,10 @@ msgstr ""
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:42 part/templates/part/detail.html:50
#: part/templates/part/part_base.html:91
#: build/templates/build/detail.html:42
#: company/templates/company/detail_part.html:90
#: company/templates/company/partdetail.html:54
#: part/templates/part/detail.html:50 part/templates/part/part_base.html:91
#: stock/templates/stock/item_base.html:120
msgid "URL"
msgstr ""
@ -332,7 +339,7 @@ msgstr ""
#: build/templates/build/tabs.html:8 company/models.py:248
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:8
#: part/templates/part/tabs.html:58 stock/templates/stock/tabs.html:8
#: part/templates/part/tabs.html:58 stock/templates/stock/tabs.html:14
msgid "Notes"
msgstr ""
@ -433,7 +440,8 @@ msgstr ""
msgid "Supplier stock keeping unit"
msgstr ""
#: company/models.py:240
#: company/models.py:240 company/templates/company/detail_part.html:81
#: company/templates/company/partdetail.html:60
msgid "Manufacturer"
msgstr ""
@ -457,6 +465,107 @@ msgstr ""
msgid "Part packaging"
msgstr ""
#: company/templates/company/company_base.html:7 order/models.py:128
msgid "Company"
msgstr ""
#: company/templates/company/company_base.html:48
#: company/templates/company/index.html:59
msgid "Website"
msgstr ""
#: company/templates/company/company_base.html:53
msgid "Address"
msgstr ""
#: company/templates/company/company_base.html:58
msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:63
msgid "Email"
msgstr ""
#: company/templates/company/company_base.html:68
msgid "Contact"
msgstr ""
#: company/templates/company/detail.html:8
msgid "Company Details"
msgstr ""
#: company/templates/company/detail.html:13
#: stock/templates/stock/item_base.html:114
msgid "Customer"
msgstr ""
#: company/templates/company/detail.html:17
#: company/templates/company/index.html:46
#: company/templates/company/partdetail.html:51
#: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126
msgid "Supplier"
msgstr ""
#: company/templates/company/detail_part.html:8
#: company/templates/company/tabs.html:9
msgid "Supplier Parts"
msgstr ""
#: company/templates/company/detail_part.html:13
msgid "New Supplier Part"
msgstr ""
#: company/templates/company/detail_part.html:15
msgid "Options"
msgstr ""
#: company/templates/company/detail_part.html:19
msgid "Delete Parts"
msgstr ""
#: company/templates/company/detail_part.html:73
#: company/templates/company/partdetail.html:52
msgid "SKU"
msgstr ""
#: company/templates/company/detail_purchase_orders.html:8
#: company/templates/company/partdetail.html:116
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders"
msgstr ""
#: company/templates/company/detail_purchase_orders.html:13
msgid "New Purchase Order"
msgstr ""
#: company/templates/company/detail_stock.html:9
msgid "Supplier Stock"
msgstr ""
#: company/templates/company/detail_stock.html:33
msgid "Export"
msgstr ""
#: company/templates/company/index.html:7
#: company/templates/company/index.html:12
msgid "Supplier List"
msgstr ""
#: company/templates/company/index.html:17
msgid "New Supplier"
msgstr ""
#: company/templates/company/index.html:41
msgid "ID"
msgstr ""
#: company/templates/company/index.html:69
#: company/templates/company/partdetail.html:6
#: part/templates/part/category.html:73
msgid "Parts"
msgstr ""
#: company/templates/company/notes.html:10
#: company/templates/company/notes.html:27
msgid "Company Notes"
@ -466,18 +575,60 @@ msgstr ""
msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr ""
#: company/templates/company/tabs.html:9
msgid "Supplier Parts"
#: company/templates/company/partdetail.html:13
#: stock/templates/stock/item_base.html:130
msgid "Supplier Part"
msgstr ""
#: company/templates/company/partdetail.html:41
msgid "Supplier Part Details"
msgstr ""
#: company/templates/company/partdetail.html:44
msgid "Internal Part"
msgstr ""
#: company/templates/company/partdetail.html:61
msgid "MPN"
msgstr ""
#: company/templates/company/partdetail.html:64
#: order/templates/order/purchase_order_detail.html:33
msgid "Note"
msgstr ""
#: company/templates/company/partdetail.html:70
msgid "Pricing Information"
msgstr ""
#: company/templates/company/partdetail.html:72
msgid "Order Multiple"
msgstr ""
#: company/templates/company/partdetail.html:74
msgid "Base Price (Flat Fee)"
msgstr ""
#: company/templates/company/partdetail.html:77
msgid "Price Breaks"
msgstr ""
#: company/templates/company/partdetail.html:80
msgid "New Price Break"
msgstr ""
#: company/templates/company/partdetail.html:86
msgid "Price"
msgstr ""
#: company/templates/company/partdetail.html:106
msgid "No price breaks have been added for this part"
msgstr ""
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17
msgid "Stock"
msgstr ""
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders"
msgstr ""
#: company/templates/company/tabs.html:21
msgid "Sales Orders"
msgstr ""
@ -514,10 +665,6 @@ msgstr ""
msgid "Order notes"
msgstr ""
#: order/models.py:128
msgid "Company"
msgstr ""
#: order/models.py:159 order/models.py:210 part/views.py:1065
#: stock/models.py:440
msgid "Quantity must be greater than zero"
@ -559,11 +706,6 @@ msgstr ""
msgid "Purchase Order Details"
msgstr ""
#: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126
msgid "Supplier"
msgstr ""
#: order/templates/order/order_base.html:80
msgid "Issued"
msgstr ""
@ -598,10 +740,6 @@ msgstr ""
msgid "Reference"
msgstr ""
#: order/templates/order/purchase_order_detail.html:33
msgid "Note"
msgstr ""
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr ""
@ -928,10 +1066,6 @@ msgstr ""
msgid "Part Details"
msgstr ""
#: part/templates/part/category.html:73
msgid "Parts"
msgstr ""
#: part/templates/part/detail.html:22 part/templates/part/part_base.html:85
msgid "IPN"
msgstr ""
@ -1299,14 +1433,6 @@ msgstr ""
msgid "Serial Number"
msgstr ""
#: stock/templates/stock/item_base.html:114
msgid "Customer"
msgstr ""
#: stock/templates/stock/item_base.html:130
msgid "Supplier Part"
msgstr ""
#: stock/templates/stock/item_base.html:135
msgid "Last Updated"
msgstr ""
@ -1345,6 +1471,7 @@ msgid "Stock Details"
msgstr ""
#: stock/templates/stock/location.html:60
#: templates/InvenTree/search_stock_location.html:6
msgid "Stock Locations"
msgstr ""
@ -1352,6 +1479,10 @@ msgstr ""
msgid "Stock Item"
msgstr ""
#: stock/templates/stock/tabs.html:10
msgid "Builds"
msgstr ""
#: stock/views.py:117
msgid "Edit Stock Location"
msgstr ""
@ -1490,6 +1621,14 @@ msgstr ""
msgid "Add Stock Tracking Entry"
msgstr ""
#: templates/InvenTree/search.html:12
msgid "Search Results"
msgstr ""
#: templates/InvenTree/search.html:22
msgid "No results found"
msgstr ""
#: templates/about.html:18
msgid "InvenTree Version Information"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-02 01:39+0000\n"
"POT-Creation-Date: 2020-02-02 10:40+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"
@ -212,6 +212,7 @@ msgstr ""
#: build/templates/build/allocate_edit.html:19
#: build/templates/build/allocate_view.html:17
#: build/templates/build/detail.html:17
#: company/templates/company/detail_part.html:65
#: order/templates/order/purchase_order_detail.html:25
msgid "Part"
msgstr ""
@ -235,10 +236,13 @@ msgid "Allocate"
msgstr ""
#: build/templates/build/allocate_view.html:10
#: company/templates/company/detail_part.html:18
msgid "Order Parts"
msgstr ""
#: build/templates/build/allocate_view.html:18
#: company/templates/company/index.html:54
#: company/templates/company/partdetail.html:57
#: order/templates/order/purchase_order_detail.html:26
#: part/templates/part/detail.html:33
msgid "Description"
@ -258,6 +262,7 @@ msgid "Title"
msgstr ""
#: build/templates/build/detail.html:20
#: company/templates/company/partdetail.html:85
#: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:90
#: stock/templates/stock/stock_adjust.html:18
@ -282,8 +287,10 @@ msgstr ""
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:42 part/templates/part/detail.html:50
#: part/templates/part/part_base.html:91
#: build/templates/build/detail.html:42
#: company/templates/company/detail_part.html:90
#: company/templates/company/partdetail.html:54
#: part/templates/part/detail.html:50 part/templates/part/part_base.html:91
#: stock/templates/stock/item_base.html:120
msgid "URL"
msgstr ""
@ -332,7 +339,7 @@ msgstr ""
#: build/templates/build/tabs.html:8 company/models.py:248
#: company/templates/company/tabs.html:26 order/templates/order/tabs.html:8
#: part/templates/part/tabs.html:58 stock/templates/stock/tabs.html:8
#: part/templates/part/tabs.html:58 stock/templates/stock/tabs.html:14
msgid "Notes"
msgstr ""
@ -433,7 +440,8 @@ msgstr ""
msgid "Supplier stock keeping unit"
msgstr ""
#: company/models.py:240
#: company/models.py:240 company/templates/company/detail_part.html:81
#: company/templates/company/partdetail.html:60
msgid "Manufacturer"
msgstr ""
@ -457,6 +465,107 @@ msgstr ""
msgid "Part packaging"
msgstr ""
#: company/templates/company/company_base.html:7 order/models.py:128
msgid "Company"
msgstr ""
#: company/templates/company/company_base.html:48
#: company/templates/company/index.html:59
msgid "Website"
msgstr ""
#: company/templates/company/company_base.html:53
msgid "Address"
msgstr ""
#: company/templates/company/company_base.html:58
msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:63
msgid "Email"
msgstr ""
#: company/templates/company/company_base.html:68
msgid "Contact"
msgstr ""
#: company/templates/company/detail.html:8
msgid "Company Details"
msgstr ""
#: company/templates/company/detail.html:13
#: stock/templates/stock/item_base.html:114
msgid "Customer"
msgstr ""
#: company/templates/company/detail.html:17
#: company/templates/company/index.html:46
#: company/templates/company/partdetail.html:51
#: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126
msgid "Supplier"
msgstr ""
#: company/templates/company/detail_part.html:8
#: company/templates/company/tabs.html:9
msgid "Supplier Parts"
msgstr ""
#: company/templates/company/detail_part.html:13
msgid "New Supplier Part"
msgstr ""
#: company/templates/company/detail_part.html:15
msgid "Options"
msgstr ""
#: company/templates/company/detail_part.html:19
msgid "Delete Parts"
msgstr ""
#: company/templates/company/detail_part.html:73
#: company/templates/company/partdetail.html:52
msgid "SKU"
msgstr ""
#: company/templates/company/detail_purchase_orders.html:8
#: company/templates/company/partdetail.html:116
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders"
msgstr ""
#: company/templates/company/detail_purchase_orders.html:13
msgid "New Purchase Order"
msgstr ""
#: company/templates/company/detail_stock.html:9
msgid "Supplier Stock"
msgstr ""
#: company/templates/company/detail_stock.html:33
msgid "Export"
msgstr ""
#: company/templates/company/index.html:7
#: company/templates/company/index.html:12
msgid "Supplier List"
msgstr ""
#: company/templates/company/index.html:17
msgid "New Supplier"
msgstr ""
#: company/templates/company/index.html:41
msgid "ID"
msgstr ""
#: company/templates/company/index.html:69
#: company/templates/company/partdetail.html:6
#: part/templates/part/category.html:73
msgid "Parts"
msgstr ""
#: company/templates/company/notes.html:10
#: company/templates/company/notes.html:27
msgid "Company Notes"
@ -466,18 +575,60 @@ msgstr ""
msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr ""
#: company/templates/company/tabs.html:9
msgid "Supplier Parts"
#: company/templates/company/partdetail.html:13
#: stock/templates/stock/item_base.html:130
msgid "Supplier Part"
msgstr ""
#: company/templates/company/partdetail.html:41
msgid "Supplier Part Details"
msgstr ""
#: company/templates/company/partdetail.html:44
msgid "Internal Part"
msgstr ""
#: company/templates/company/partdetail.html:61
msgid "MPN"
msgstr ""
#: company/templates/company/partdetail.html:64
#: order/templates/order/purchase_order_detail.html:33
msgid "Note"
msgstr ""
#: company/templates/company/partdetail.html:70
msgid "Pricing Information"
msgstr ""
#: company/templates/company/partdetail.html:72
msgid "Order Multiple"
msgstr ""
#: company/templates/company/partdetail.html:74
msgid "Base Price (Flat Fee)"
msgstr ""
#: company/templates/company/partdetail.html:77
msgid "Price Breaks"
msgstr ""
#: company/templates/company/partdetail.html:80
msgid "New Price Break"
msgstr ""
#: company/templates/company/partdetail.html:86
msgid "Price"
msgstr ""
#: company/templates/company/partdetail.html:106
msgid "No price breaks have been added for this part"
msgstr ""
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17
msgid "Stock"
msgstr ""
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders"
msgstr ""
#: company/templates/company/tabs.html:21
msgid "Sales Orders"
msgstr ""
@ -514,10 +665,6 @@ msgstr ""
msgid "Order notes"
msgstr ""
#: order/models.py:128
msgid "Company"
msgstr ""
#: order/models.py:159 order/models.py:210 part/views.py:1065
#: stock/models.py:440
msgid "Quantity must be greater than zero"
@ -559,11 +706,6 @@ msgstr ""
msgid "Purchase Order Details"
msgstr ""
#: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126
msgid "Supplier"
msgstr ""
#: order/templates/order/order_base.html:80
msgid "Issued"
msgstr ""
@ -598,10 +740,6 @@ msgstr ""
msgid "Reference"
msgstr ""
#: order/templates/order/purchase_order_detail.html:33
msgid "Note"
msgstr ""
#: order/templates/order/tabs.html:5
msgid "Items"
msgstr ""
@ -928,10 +1066,6 @@ msgstr ""
msgid "Part Details"
msgstr ""
#: part/templates/part/category.html:73
msgid "Parts"
msgstr ""
#: part/templates/part/detail.html:22 part/templates/part/part_base.html:85
msgid "IPN"
msgstr ""
@ -1299,14 +1433,6 @@ msgstr ""
msgid "Serial Number"
msgstr ""
#: stock/templates/stock/item_base.html:114
msgid "Customer"
msgstr ""
#: stock/templates/stock/item_base.html:130
msgid "Supplier Part"
msgstr ""
#: stock/templates/stock/item_base.html:135
msgid "Last Updated"
msgstr ""
@ -1345,6 +1471,7 @@ msgid "Stock Details"
msgstr ""
#: stock/templates/stock/location.html:60
#: templates/InvenTree/search_stock_location.html:6
msgid "Stock Locations"
msgstr ""
@ -1352,6 +1479,10 @@ msgstr ""
msgid "Stock Item"
msgstr ""
#: stock/templates/stock/tabs.html:10
msgid "Builds"
msgstr ""
#: stock/views.py:117
msgid "Edit Stock Location"
msgstr ""
@ -1490,6 +1621,14 @@ msgstr ""
msgid "Add Stock Tracking Entry"
msgstr ""
#: templates/InvenTree/search.html:12
msgid "Search Results"
msgstr ""
#: templates/InvenTree/search.html:22
msgid "No results found"
msgstr ""
#: templates/about.html:18
msgid "InvenTree Version Information"
msgstr ""

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2.9 on 2020-02-02 10:24
import InvenTree.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('part', '0026_auto_20200131_1022'),
]
operations = [
migrations.AlterField(
model_name='partcategory',
name='name',
field=models.CharField(max_length=100, validators=[InvenTree.validators.validate_tree_name]),
),
]

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2.9 on 2020-02-02 10:24
import InvenTree.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('stock', '0018_auto_20200202_0103'),
]
operations = [
migrations.AlterField(
model_name='stocklocation',
name='name',
field=models.CharField(max_length=100, validators=[InvenTree.validators.validate_tree_name]),
),
]

View File

@ -1,6 +1,7 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block page_title %}
InvenTree | Search Results
@ -8,7 +9,7 @@ InvenTree | Search Results
{% block content %}
<h3>Search Results</h3>
<h3>{% trans "Search Results" %}</h3>
<div>
{% include "search_form.html" with query_text=query %}
@ -18,7 +19,7 @@ InvenTree | Search Results
<hr>
<div id='no-search-results'>
<h4><i>No results found</i></h4>
<h4><i>{% trans "No results found" %}</i></h4>
</div>
{% include "InvenTree/search_part_category.html" with collapse_id="categories" %}
@ -113,7 +114,7 @@ InvenTree | Search Results
field: 'name',
title: 'Name',
formatter: function(value, row, index, field) {
return renderLink(value, '/stock/location/' + row.pk + '/');
return renderLink(row.pathstring, '/stock/location/' + row.pk + '/');
},
},
{

View File

@ -1,7 +1,9 @@
{% extends "collapse.html" %}
{% load i18n %}
{% block collapse_title %}
<h4>Stock Locations</h4>
<h4>{% trans "Stock Locations" %}</h4>
{% endblock %}
{% block collapse_heading %}

View File

@ -1,4 +1,5 @@
{% load static %}
{% load i18n %}
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
@ -6,11 +7,11 @@
<a class="navbar-brand" id='logo' href="{% url 'index' %}" style="padding-top: 7px; padding-bottom: 5px;"><img src="{% static 'img/inventree.png' %}" width="40" height="40" style="display:block; margin: auto;"/></a>
</div>
<ul class="nav navbar-nav">
<li><a href="{% url 'part-index' %}">Parts</a></li>
<li><a href="{% url 'stock-index' %}">Stock</a></li>
<li><a href="{% url 'build-index' %}">Build</a></li>
<li><a href="{% url 'company-index' %}">Suppliers</a></li>
<li><a href="{% url 'purchase-order-index' %}">Orders</a></li>
<li><a href="{% url 'part-index' %}">{% trans "Parts" %}</a></li>
<li><a href="{% url 'stock-index' %}">{% trans "Stock" %}</a></li>
<li><a href="{% url 'build-index' %}">{% trans "Build" %}</a></li>
<li><a href="{% url 'company-index' %}">{% trans "Suppliers" %}</a></li>
<li><a href="{% url 'purchase-order-index' %}">{% trans "Orders" %}</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
{% include "search_form.html" %}
@ -19,16 +20,17 @@
<ul class='dropdown-menu'>
{% if user.is_authenticated %}
{% if user.is_staff %}
<li><a href="/admin/"><span class="glyphicon glyphicon-edit"></span> Admin</a></li>
<li><a href="/admin/"><span class="glyphicon glyphicon-edit"></span> {% trans "Admin" %}</a></li>
<hr>
{% endif %}
<li><a href="{% url 'settings' %}"><span class="glyphicon glyphicon-cog"></span> Settings</a></li>
<li><a href="{% url 'logout' %}"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li>
<li><a href="{% url 'settings' %}"><span class="glyphicon glyphicon-cog"></span> {% trans "Settings" %}</a></li>
<li><a href="{% url 'logout' %}"><span class="glyphicon glyphicon-log-out"></span> {% trans "Logout" %}</a></li>
{% else %}
<li><a href="{% url 'login' %}"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
<li><a href="{% url 'login' %}"><span class="glyphicon glyphicon-log-in"></span> {% trans "Login" %}</a></li>
{% endif %}
<hr>
<li id='launch-about'><a href='#'><span class="glyphicon glyphicon-info-sign"></span> About InvenTree</a></li>
<li id='launch-about'><a href='#'><span class="glyphicon glyphicon-info-sign"></span> {% trans "About InvenTree" %}</a></li>
<li id='launch-stats'><a href='#'><span class='glyphicon glyphicon-stats'></span> {% trans "Statistics" %}</a></li>
</ul>
</li>
</ul>

View File

@ -0,0 +1,28 @@
{% load static %}
{% load inventree_extras %}
{% load i18n %}
<table class='table table-striped table-condensed'>
<tr>
<td colspan='2'><b>{% trans "Parts" %}</b></td>
</tr>
<tr>
<td>{% trans "Parts" %}</td>
<td>{{ part_count }}</td>
</tr>
<tr>
<td>{% trans "Part Categories" %}</td>
<td>{{ part_cat_count }}</td>
</tr>
<tr>
<td colspan="2"><b>{% trans "Stock Items" %}</b></td>
</tr>
<tr>
<td>{% trans "Stock Items" %}</td>
<td>{{ stock_item_count }}</td>
</tr>
<tr>
<td>{% trans "Stock Locations" %}</td>
<td>{{ stock_loc_count }}</td>
</tr>
</table>