mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Skeleton for part tracking
- Added list and detail view - Fixed some links
This commit is contained in:
parent
9f42085731
commit
9e6c7350f9
@ -9,6 +9,7 @@
|
||||
<li class="active"><a href="/part/">Parts</a></li>
|
||||
<li><a href="/stock/">Stock</a></li>
|
||||
<li><a href="/supplier/">Suppliers</a></li>
|
||||
<li><a href="/track/">Tracking</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
@ -1,12 +1,12 @@
|
||||
<div class='navigation'>
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item{% if category is None %} active" aria-current="page{% endif %}"><a href="/part/list/">Parts</a></li>
|
||||
<li class="breadcrumb-item{% if category is None %} active" aria-current="page{% endif %}"><a href="/part/">Parts</a></li>
|
||||
{% if category %}
|
||||
{% for path_item in category.parentpath %}
|
||||
<li class="breadcrumb-item"><a href="/part/list/?category={{ path_item.id }}">{{ path_item.name }}</a></li>
|
||||
<li class="breadcrumb-item"><a href="{% url 'category-detail' path_item.id %}">{{ path_item.name }}</a></li>
|
||||
{% endfor %}
|
||||
<li class="breadcrumb-item active" aria-current="page"><a href="/part/list/?category={{ category.id }}">{{ category.name }}</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page"><a href="{% url 'category-detail' category.id %}">{{ category.name }}</a></li>
|
||||
{% endif %}
|
||||
</ol>
|
||||
</nav>
|
||||
|
@ -1,10 +1,16 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import UniquePart
|
||||
from .models import UniquePart, PartTrackingInfo
|
||||
|
||||
|
||||
class UniquePartAdmin(admin.ModelAdmin):
|
||||
list_display = ('part', 'serial', 'status', 'creation_date')
|
||||
|
||||
|
||||
|
||||
class PartTrackingAdmin(admin.ModelAdmin):
|
||||
list_display = ('part', 'date', 'title')
|
||||
|
||||
|
||||
admin.site.register(UniquePart, UniquePartAdmin)
|
||||
admin.site.register(PartTrackingInfo, PartTrackingAdmin)
|
@ -52,7 +52,8 @@ class UniquePart(models.Model):
|
||||
status = models.IntegerField(default=PART_IN_PROGRESS, choices=PART_STATUS_CODES.items())
|
||||
|
||||
def __str__(self):
|
||||
return self.part.name
|
||||
return "{pn} - # {sn}".format(pn = self.part.name,
|
||||
sn = self.serial)
|
||||
|
||||
|
||||
class PartTrackingInfo(models.Model):
|
||||
|
26
InvenTree/track/templates/track/detail.html
Normal file
26
InvenTree/track/templates/track/detail.html
Normal file
@ -0,0 +1,26 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
Part: <a href="{% url 'part-detail' part.part.id %}">{{ part.part.name }}</a><br>
|
||||
Serial number: {{ part.serial }}
|
||||
|
||||
{% if part.tracking_info.all|length > 0 %}
|
||||
<p>Tracking information:</p>
|
||||
<ul class='list-group'>
|
||||
{% for info in part.tracking_info.all %}
|
||||
<li class='list-group-item'>
|
||||
<div class='panel panel-default'>
|
||||
<div class='panel-heading'>
|
||||
{{ info.title }}<span class="badge">{{ info.date }}</span>
|
||||
</div>
|
||||
{% if info.notes %}
|
||||
<div class='panel-body'>{{ info.notes }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
5
InvenTree/track/templates/track/edit.html
Normal file
5
InvenTree/track/templates/track/edit.html
Normal file
@ -0,0 +1,5 @@
|
||||
{% extends "base.html"% }
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% endblock %}
|
@ -1,4 +1,4 @@
|
||||
{% include "base.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
@ -7,7 +7,9 @@
|
||||
<ul class='list-group'>
|
||||
{% for part in parts.all %}
|
||||
<li class='list-group-item'>
|
||||
<a href="{% url 'track-detail' part.id %}">
|
||||
{{ part.part.name }} - SN {{ part.serial }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
5
InvenTree/track/templates/track/new.html
Normal file
5
InvenTree/track/templates/track/new.html
Normal file
@ -0,0 +1,5 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% endblock %}
|
@ -23,7 +23,13 @@ unique_api_urls = [
|
||||
]
|
||||
"""
|
||||
|
||||
track_detail_urls = [
|
||||
url('^.*$', views.TrackDetail.as_view(), name='track-detail'),
|
||||
]
|
||||
|
||||
tracking_urls = [
|
||||
# Detail view
|
||||
url(r'^(?P<pk>\d+)/', include(track_detail_urls)),
|
||||
|
||||
# List ALL tracked items
|
||||
url('', views.TrackIndex.as_view(), name='track-index'),
|
||||
|
@ -15,4 +15,11 @@ class TrackIndex(ListView):
|
||||
paginate_by = 50
|
||||
|
||||
def get_queryset(self):
|
||||
return UniquePart.objects.order_by('part__name', 'serial')
|
||||
return UniquePart.objects.order_by('part__name', 'serial')
|
||||
|
||||
|
||||
class TrackDetail(DetailView):
|
||||
queryset = UniquePart.objects.all()
|
||||
template_name = 'track/detail.html'
|
||||
context_object_name='part'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user