2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-05-04 06:18:48 +00:00

Add detail pane to top-level part view

This commit is contained in:
Oliver Walters 2019-09-27 10:04:20 +10:00
parent 3e2a5263a5
commit 427f47310b
5 changed files with 183 additions and 36 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-26 23:58+0000\n" "POT-Creation-Date: 2019-09-27 00:03+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -222,7 +222,7 @@ msgstr ""
msgid "Company" msgid "Company"
msgstr "" msgstr ""
#: order/models.py:156 order/models.py:201 part/views.py:1030 #: order/models.py:156 order/models.py:201 part/views.py:1032
#: stock/models.py:437 #: stock/models.py:437
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "" msgstr ""
@ -345,32 +345,76 @@ msgstr ""
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "" msgstr ""
#: part/views.py:194 #: part/templates/part/category.html:13 part/templates/part/category.html:69
msgid "Part Categories"
msgstr ""
#: part/templates/part/category.html:14
msgid "All parts"
msgstr ""
#: part/templates/part/category.html:34
msgid "Category Details"
msgstr ""
#: part/templates/part/category.html:37
msgid "Category Path"
msgstr ""
#: part/templates/part/category.html:41
msgid "Category Description"
msgstr ""
#: part/templates/part/category.html:46
msgid "Default Location"
msgstr ""
#: part/templates/part/category.html:52
msgid "Keywords"
msgstr ""
#: part/templates/part/category.html:57
msgid "Subcategories"
msgstr ""
#: part/templates/part/category.html:61
msgid "Parts (Including subcategories)"
msgstr ""
#: part/templates/part/category.html:66
msgid "Part Details"
msgstr ""
#: part/templates/part/category.html:73
msgid "Parts"
msgstr ""
#: part/views.py:196
#, python-brace-format #, python-brace-format
msgid "Set category for {n} parts" msgid "Set category for {n} parts"
msgstr "" msgstr ""
#: part/views.py:771 #: part/views.py:773
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "" msgstr ""
#: part/views.py:1032 #: part/views.py:1034
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "" msgstr ""
#: part/views.py:1056 part/views.py:1059 #: part/views.py:1058 part/views.py:1061
msgid "Select valid part" msgid "Select valid part"
msgstr "" msgstr ""
#: part/views.py:1065 #: part/views.py:1067
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "" msgstr ""
#: part/views.py:1093 #: part/views.py:1095
msgid "Select a part" msgid "Select a part"
msgstr "" msgstr ""
#: part/views.py:1097 #: part/views.py:1099
msgid "Specify quantity" msgid "Specify quantity"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-26 23:58+0000\n" "POT-Creation-Date: 2019-09-27 00:03+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -222,7 +222,7 @@ msgstr ""
msgid "Company" msgid "Company"
msgstr "" msgstr ""
#: order/models.py:156 order/models.py:201 part/views.py:1030 #: order/models.py:156 order/models.py:201 part/views.py:1032
#: stock/models.py:437 #: stock/models.py:437
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "" msgstr ""
@ -345,32 +345,76 @@ msgstr ""
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "" msgstr ""
#: part/views.py:194 #: part/templates/part/category.html:13 part/templates/part/category.html:69
msgid "Part Categories"
msgstr ""
#: part/templates/part/category.html:14
msgid "All parts"
msgstr ""
#: part/templates/part/category.html:34
msgid "Category Details"
msgstr ""
#: part/templates/part/category.html:37
msgid "Category Path"
msgstr ""
#: part/templates/part/category.html:41
msgid "Category Description"
msgstr ""
#: part/templates/part/category.html:46
msgid "Default Location"
msgstr ""
#: part/templates/part/category.html:52
msgid "Keywords"
msgstr ""
#: part/templates/part/category.html:57
msgid "Subcategories"
msgstr ""
#: part/templates/part/category.html:61
msgid "Parts (Including subcategories)"
msgstr ""
#: part/templates/part/category.html:66
msgid "Part Details"
msgstr ""
#: part/templates/part/category.html:73
msgid "Parts"
msgstr ""
#: part/views.py:196
#, python-brace-format #, python-brace-format
msgid "Set category for {n} parts" msgid "Set category for {n} parts"
msgstr "" msgstr ""
#: part/views.py:771 #: part/views.py:773
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "" msgstr ""
#: part/views.py:1032 #: part/views.py:1034
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "" msgstr ""
#: part/views.py:1056 part/views.py:1059 #: part/views.py:1058 part/views.py:1061
msgid "Select valid part" msgid "Select valid part"
msgstr "" msgstr ""
#: part/views.py:1065 #: part/views.py:1067
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "" msgstr ""
#: part/views.py:1093 #: part/views.py:1095
msgid "Select a part" msgid "Select a part"
msgstr "" msgstr ""
#: part/views.py:1097 #: part/views.py:1099
msgid "Specify quantity" msgid "Specify quantity"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-26 23:58+0000\n" "POT-Creation-Date: 2019-09-27 00:03+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -222,7 +222,7 @@ msgstr ""
msgid "Company" msgid "Company"
msgstr "" msgstr ""
#: order/models.py:156 order/models.py:201 part/views.py:1030 #: order/models.py:156 order/models.py:201 part/views.py:1032
#: stock/models.py:437 #: stock/models.py:437
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "" msgstr ""
@ -345,32 +345,76 @@ msgstr ""
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "" msgstr ""
#: part/views.py:194 #: part/templates/part/category.html:13 part/templates/part/category.html:69
msgid "Part Categories"
msgstr ""
#: part/templates/part/category.html:14
msgid "All parts"
msgstr ""
#: part/templates/part/category.html:34
msgid "Category Details"
msgstr ""
#: part/templates/part/category.html:37
msgid "Category Path"
msgstr ""
#: part/templates/part/category.html:41
msgid "Category Description"
msgstr ""
#: part/templates/part/category.html:46
msgid "Default Location"
msgstr ""
#: part/templates/part/category.html:52
msgid "Keywords"
msgstr ""
#: part/templates/part/category.html:57
msgid "Subcategories"
msgstr ""
#: part/templates/part/category.html:61
msgid "Parts (Including subcategories)"
msgstr ""
#: part/templates/part/category.html:66
msgid "Part Details"
msgstr ""
#: part/templates/part/category.html:73
msgid "Parts"
msgstr ""
#: part/views.py:196
#, python-brace-format #, python-brace-format
msgid "Set category for {n} parts" msgid "Set category for {n} parts"
msgstr "" msgstr ""
#: part/views.py:771 #: part/views.py:773
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "" msgstr ""
#: part/views.py:1032 #: part/views.py:1034
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "" msgstr ""
#: part/views.py:1056 part/views.py:1059 #: part/views.py:1058 part/views.py:1061
msgid "Select valid part" msgid "Select valid part"
msgstr "" msgstr ""
#: part/views.py:1065 #: part/views.py:1067
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "" msgstr ""
#: part/views.py:1093 #: part/views.py:1095
msgid "Select a part" msgid "Select a part"
msgstr "" msgstr ""
#: part/views.py:1097 #: part/views.py:1099
msgid "Specify quantity" msgid "Specify quantity"
msgstr "" msgstr ""

View File

@ -1,5 +1,6 @@
{% extends "part/part_app_base.html" %} {% extends "part/part_app_base.html" %}
{% load static %} {% load static %}
{% load i18n %}
{% block content %} {% block content %}
@ -9,8 +10,8 @@
<h3>{{ category.name }}</h3> <h3>{{ category.name }}</h3>
<p>{{ category.description }}</p> <p>{{ category.description }}</p>
{% else %} {% else %}
<h3>Part Categories</h3> <h3>{% trans "Part Categories" %}</h3>
<p>All parts</p> <p>{% trans "All parts" %}</p>
{% endif %} {% endif %}
<p> <p>
<div class='btn-group'> <div class='btn-group'>
@ -30,37 +31,49 @@
</div> </div>
<div class='col-sm-6'> <div class='col-sm-6'>
{% if category %} {% if category %}
<h3>Category Details</h3> <h3>{% trans "Category Details" %}</h3>
<table class='table table-condensed table-striped'> <table class='table table-condensed table-striped'>
<tr> <tr>
<td>Category Path</td> <td>{% trans "Category Path" %}</td>
<td>{{ category.pathstring }}</td> <td>{{ category.pathstring }}</td>
</tr> </tr>
<tr> <tr>
<td>Category Description</td> <td>{% trans "Category Description" %}</td>
<td>{{ category.description }}</td> <td>{{ category.description }}</td>
</tr> </tr>
{% if category.default_location %} {% if category.default_location %}
<tr> <tr>
<td>Default Location</td> <td>{% trans "Default Location" %}</td>
<td><a href="{% url 'stock-location-detail' category.default_location.pk %}">{{ category.default_location.pathstring }}</a></td> <td><a href="{% url 'stock-location-detail' category.default_location.pk %}">{{ category.default_location.pathstring }}</a></td>
</tr> </tr>
{% endif %} {% endif %}
{% if category.default_keywords %} {% if category.default_keywords %}
<tr> <tr>
<td>Keywords</td> <td>{% trans "Keywords" %}</td>
<td>{{ category.default_keywords }}</td> <td>{{ category.default_keywords }}</td>
</tr> </tr>
{% endif %} {% endif %}
<tr> <tr>
<td>Subcategories</td> <td>{% trans "Subcategories" %}</td>
<td>{{ category.children.count }}</td> <td>{{ category.children.count }}</td>
</tr> </tr>
<tr> <tr>
<td>Parts (Including subcategories)</td> <td>{% trans "Parts (Including subcategories)" %}</td>
<td>{{ category.partcount }}</td> <td>{{ category.partcount }}</td>
</tr> </tr>
</table> </table>
{% else %}
<h3>{% trans "Part Details" %}</h3>
<table class='table table-striped table-condensed'>
<tr>
<td>{% trans "Part Categories" %}</td>
<td>{{ category_count }}</td>
</tr>
<tr>
<td>{% trans "Parts" %}</td>
<td>{{ part_count }}</td>
</tr>
</table>
{% endif %} {% endif %}
</div> </div>
</div> </div>

View File

@ -56,6 +56,8 @@ class PartIndex(ListView):
children = PartCategory.objects.filter(parent=None) children = PartCategory.objects.filter(parent=None)
context['children'] = children context['children'] = children
context['category_count'] = PartCategory.objects.count()
context['part_count'] = Part.objects.count()
return context return context