mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Added views for part and part category
- Worked out simple linking - Category path displaying correctly - Category page lists parts in category
This commit is contained in:
parent
ffb9132de2
commit
ddd927c436
@ -9,10 +9,20 @@ class PartCategory(models.Model):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
if self.parent:
|
if self.parent:
|
||||||
return str(self.parent) + "/" + self.name
|
return "/".join([p.name for p in self.path]) + "/" + self.name
|
||||||
else:
|
else:
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
# Return the parent path of this category
|
||||||
|
@property
|
||||||
|
def path(self):
|
||||||
|
parent_path = []
|
||||||
|
|
||||||
|
if self.parent:
|
||||||
|
parent_path = self.parent.path + [self.parent]
|
||||||
|
|
||||||
|
return parent_path
|
||||||
|
|
||||||
class Part(models.Model):
|
class Part(models.Model):
|
||||||
name = models.CharField(max_length=100)
|
name = models.CharField(max_length=100)
|
||||||
description = models.CharField(max_length=250, blank=True)
|
description = models.CharField(max_length=250, blank=True)
|
||||||
@ -26,3 +36,6 @@ class Part(models.Model):
|
|||||||
name = self.name)
|
name = self.name)
|
||||||
else:
|
else:
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
|
17
InvenTree/part/templates/part/category.html
Normal file
17
InvenTree/part/templates/part/category.html
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<h1>Category: {{ category.name }}</h1>
|
||||||
|
|
||||||
|
<h2>Path: {{ category }}</h2>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
Path<br>
|
||||||
|
|
||||||
|
{# Construct the category path #}
|
||||||
|
{% for path_item in category.path %}
|
||||||
|
<a href="../{{path_item.pk}}">{{path_item.name}}</a>/
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<br>Parts:<br>
|
||||||
|
|
||||||
|
{% for part in category.part_set.all %}
|
||||||
|
<a href="/part/{{part.pk}}">{{part.name}}</a><br>
|
||||||
|
{% endfor %}
|
1
InvenTree/part/templates/part/detail.html
Normal file
1
InvenTree/part/templates/part/detail.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
{{part}}
|
@ -3,5 +3,10 @@ from django.conf.urls import url
|
|||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
# Display part detail
|
||||||
|
url(r'^(?P<part_id>[0-9]+)/$', views.partdetail, name='detail'),
|
||||||
|
|
||||||
|
# Display a part category
|
||||||
|
url(r'^category/(?P<category_id>[0-9]+)/$', views.category, name='category'),
|
||||||
url(r'^$', views.index, name='index')
|
url(r'^$', views.index, name='index')
|
||||||
]
|
]
|
@ -1,5 +1,22 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render, get_object_or_404
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
|
||||||
|
from .models import PartCategory, Part
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
return HttpResponse("Hello world. This is the parts page")
|
return HttpResponse("Hello world. This is the parts page")
|
||||||
|
|
||||||
|
def partdetail(request, part_id):
|
||||||
|
|
||||||
|
part = get_object_or_404(Part, pk=part_id)
|
||||||
|
|
||||||
|
return render(request, 'part/detail.html',
|
||||||
|
{'part': part})
|
||||||
|
|
||||||
|
def category(request, category_id):
|
||||||
|
|
||||||
|
# Find the category
|
||||||
|
cat = get_object_or_404(PartCategory, pk=category_id)
|
||||||
|
|
||||||
|
return render(request, 'part/category.html',
|
||||||
|
{'category': cat})
|
Loading…
Reference in New Issue
Block a user