diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 2c945bdd09..ac26c8e961 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -39,7 +39,8 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'part.apps.PartConfig', - 'stock.apps.StockConfig' + 'stock.apps.StockConfig', + 'supplier.apps.SupplierConfig' ] MIDDLEWARE = [ diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index c067b168c7..415590eb3a 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -21,5 +21,6 @@ admin.site.site_header = "InvenTree Admin" urlpatterns = [ url(r'^stock/', include('stock.urls')), url(r'^part/', include('part.urls')), + url(r'^supplier/', include('supplier.urls')), url(r'^admin/', admin.site.urls), ] diff --git a/InvenTree/supplier/__init__.py b/InvenTree/supplier/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/InvenTree/supplier/admin.py b/InvenTree/supplier/admin.py new file mode 100644 index 0000000000..74b182d9f8 --- /dev/null +++ b/InvenTree/supplier/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin + +from .models import Supplier, SupplierPart + +admin.site.register(Supplier) +admin.site.register(SupplierPart) \ No newline at end of file diff --git a/InvenTree/supplier/apps.py b/InvenTree/supplier/apps.py new file mode 100644 index 0000000000..28384c66fc --- /dev/null +++ b/InvenTree/supplier/apps.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +from django.apps import AppConfig + + +class SupplierConfig(AppConfig): + name = 'supplier' diff --git a/InvenTree/supplier/models.py b/InvenTree/supplier/models.py new file mode 100644 index 0000000000..caab06b2a3 --- /dev/null +++ b/InvenTree/supplier/models.py @@ -0,0 +1,53 @@ +from __future__ import unicode_literals + +from django.db import models + +from part.models import Part + +class Supplier(models.Model): + name = models.CharField(max_length=100) + URL = models.URLField(blank=True) + address = models.CharField(max_length=200, + blank=True) + phone = models.CharField(max_length=50, + blank=True) + email = models.EmailField(blank=True) + contact = models.CharField(max_length=100, + blank=True) + notes = models.CharField(max_length=500, + blank=True) + + def __str__(self): + return self.name + +class SupplierPart(models.Model): + supplier = models.ForeignKey(Supplier, + on_delete=models.CASCADE) + part = models.ForeignKey(Part, + on_delete=models.CASCADE) + + MPN = models.CharField(max_length=100) + URL = models.URLField(blank=True) + description = models.CharField(max_length=250, + blank=True) + + def __str__(self): + return "{mpn} - {supplier}".format( + mpn = self.MPN, + supplier = self.supplier.name) + + +class SupplierPriceBreak(models.Model): + part = models.ForeignKey(SupplierPart, + on_delete=models.CASCADE) + quantity = models.IntegerField() + cost = models.DecimalField(max_digits=10, decimal_places=3) + currency = models.CharField(max_length=10, + blank=True) + + def __str__(self): + return "{mpn} - {cost}{currency} @ {quan}".format( + mpn = part.MPN, + cost = self.cost, + currency = self.currency if self.currency else '', + quan = self.quantity) \ No newline at end of file diff --git a/InvenTree/supplier/tests.py b/InvenTree/supplier/tests.py new file mode 100644 index 0000000000..7ce503c2dd --- /dev/null +++ b/InvenTree/supplier/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/InvenTree/supplier/urls.py b/InvenTree/supplier/urls.py new file mode 100644 index 0000000000..59e5d723c9 --- /dev/null +++ b/InvenTree/supplier/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/supplier/views.py b/InvenTree/supplier/views.py new file mode 100644 index 0000000000..599496c891 --- /dev/null +++ b/InvenTree/supplier/views.py @@ -0,0 +1,5 @@ +from django.shortcuts import render, get_object_or_404 +from django.http import HttpResponse + +def index(request): + return HttpResponse("This is the suppliers page") \ No newline at end of file