From e98c20048b80b30639c554f9c08536eb8a9953e2 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Mon, 27 Mar 2017 21:04:15 +1100 Subject: [PATCH] Added stock page --- InvenTree/InvenTree/urls.py | 1 + InvenTree/stock/__init__.py | 0 InvenTree/stock/admin.py | 6 ++++ InvenTree/stock/apps.py | 7 +++++ InvenTree/stock/models.py | 36 ++++++++++++++++++++++ InvenTree/stock/templates/stock/index.html | 8 +++++ InvenTree/stock/tests.py | 3 ++ InvenTree/stock/urls.py | 7 +++++ InvenTree/stock/views.py | 12 ++++++++ 9 files changed, 80 insertions(+) create mode 100644 InvenTree/stock/__init__.py create mode 100644 InvenTree/stock/admin.py create mode 100644 InvenTree/stock/apps.py create mode 100644 InvenTree/stock/models.py create mode 100644 InvenTree/stock/templates/stock/index.html create mode 100644 InvenTree/stock/tests.py create mode 100644 InvenTree/stock/urls.py create mode 100644 InvenTree/stock/views.py diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index c49507de99..331b0e973e 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -17,6 +17,7 @@ from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ + url(r'^stock/', include('stock.urls')), url(r'^part/', include('part.urls')), url(r'^admin/', admin.site.urls), ] diff --git a/InvenTree/stock/__init__.py b/InvenTree/stock/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/InvenTree/stock/admin.py b/InvenTree/stock/admin.py new file mode 100644 index 0000000000..0ddf5d0b3e --- /dev/null +++ b/InvenTree/stock/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin + +from .models import Warehouse, StockItem + +admin.site.register(Warehouse) +admin.site.register(StockItem) \ No newline at end of file diff --git a/InvenTree/stock/apps.py b/InvenTree/stock/apps.py new file mode 100644 index 0000000000..de8e50cc26 --- /dev/null +++ b/InvenTree/stock/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class StockConfig(AppConfig): + name = 'stock' diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py new file mode 100644 index 0000000000..9d7c90daca --- /dev/null +++ b/InvenTree/stock/models.py @@ -0,0 +1,36 @@ +from __future__ import unicode_literals + +from django.db import models + +from part.models import Part + +class Warehouse(models.Model): + name = models.CharField(max_length=100) + description = models.CharField(max_length=250, blank=True) + parent = models.ForeignKey('self', on_delete=models.CASCADE, blank=True, null=True) + + def __str__(self): + if self.parent: + return "/".join([p.name for p in self.path]) + "/" + self.name + else: + return self.name + + # Return path of this category + @property + def path(self): + if self.parent: + return self.parent.path + [self.parent] + else: + return [] + +class StockItem(models.Model): + part = models.ForeignKey(Part, on_delete=models.CASCADE) + location = models.ForeignKey(Warehouse, on_delete=models.CASCADE) + quantity = models.IntegerField() + updated = models.DateField(auto_now=True) + + def __str__(self): + return "{n} x {part} @ {loc}".format( + n = self.quantity, + part = self.part.name, + loc = self.location.name) \ No newline at end of file diff --git a/InvenTree/stock/templates/stock/index.html b/InvenTree/stock/templates/stock/index.html new file mode 100644 index 0000000000..234cd000dc --- /dev/null +++ b/InvenTree/stock/templates/stock/index.html @@ -0,0 +1,8 @@ +Warehouses: + +{% for warehouse in warehouse %} + +
+{{ warehouse.name }} + +{% endfor %} \ No newline at end of file diff --git a/InvenTree/stock/tests.py b/InvenTree/stock/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/InvenTree/stock/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/InvenTree/stock/urls.py b/InvenTree/stock/urls.py new file mode 100644 index 0000000000..d878de5869 --- /dev/null +++ b/InvenTree/stock/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url(r'^$', views.index, name='index') +] \ No newline at end of file diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py new file mode 100644 index 0000000000..2f76a07800 --- /dev/null +++ b/InvenTree/stock/views.py @@ -0,0 +1,12 @@ +from django.shortcuts import render, get_object_or_404 +from django.http import HttpResponse + +from .models import Warehouse, StockItem + +def index(request): + + warehouses = Warehouse.objects.filter(parent = None) + + return render(request, 'stock/index.html', + {'warehouses': warehouses + }) \ No newline at end of file