From a1db0c90e4e4347716b187b39176863055bf5142 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 14 Apr 2017 23:53:27 +1000 Subject: [PATCH] Tracking API is hyperlinked --- InvenTree/supplier/serializers.py | 1 - InvenTree/track/models.py | 17 +++++------------ InvenTree/track/serializers.py | 8 ++++---- InvenTree/track/urls.py | 12 ++++++------ 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/InvenTree/supplier/serializers.py b/InvenTree/supplier/serializers.py index 517ea940d2..88c23a573c 100644 --- a/InvenTree/supplier/serializers.py +++ b/InvenTree/supplier/serializers.py @@ -45,7 +45,6 @@ class SupplierPartSerializer(serializers.ModelSerializer): class Meta: model = SupplierPart - #extra_kwargs = {'url': {'view_name': 'supplier-part-detail'}} fields = ['url', 'part', 'supplier', diff --git a/InvenTree/track/models.py b/InvenTree/track/models.py index d50b6d7578..d0e8a5aa46 100644 --- a/InvenTree/track/models.py +++ b/InvenTree/track/models.py @@ -37,6 +37,10 @@ class UniquePart(models.Model): and tracking all events in the life of a part """ + class Meta: + # Cannot have multiple parts with same serial number + unique_together = ('part', 'serial') + objects = UniquePartManager() part = models.ForeignKey(Part, on_delete=models.CASCADE) @@ -50,7 +54,7 @@ class UniquePart(models.Model): editable=False) serial = models.IntegerField() - createdBy = models.ForeignKey(User) + # createdBy = models.ForeignKey(User) customer = models.ForeignKey(Customer, blank=True, null=True) @@ -76,17 +80,6 @@ class UniquePart(models.Model): def __str__(self): return self.part.name - def save(self, *args, **kwargs): - - # Disallow saving a serial number that already exists - matches = UniquePart.objects.filter(serial=self.serial, part=self.part) - matches = matches.filter(~models.Q(id=self.id)) - - if len(matches) > 0: - raise ValidationError(_("Matching serial number already exists")) - - super(UniquePart, self).save(*args, **kwargs) - class PartTrackingInfo(models.Model): """ Single data-point in the life of a UniquePart diff --git a/InvenTree/track/serializers.py b/InvenTree/track/serializers.py index 6e958acbf3..3bd84aa0e7 100644 --- a/InvenTree/track/serializers.py +++ b/InvenTree/track/serializers.py @@ -3,24 +3,24 @@ from rest_framework import serializers from .models import UniquePart, PartTrackingInfo -class UniquePartSerializer(serializers.ModelSerializer): +class UniquePartSerializer(serializers.HyperlinkedModelSerializer): tracking_info = serializers.PrimaryKeyRelatedField(many=True, read_only=True) class Meta: model = UniquePart - fields = ['pk', + fields = ['url', 'part', 'revision', 'creation_date', 'serial', - 'createdBy', + # 'createdBy', 'customer', 'status', 'tracking_info'] -class PartTrackingInfoSerializer(serializers.ModelSerializer): +class PartTrackingInfoSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = PartTrackingInfo diff --git a/InvenTree/track/urls.py b/InvenTree/track/urls.py index 35410a653a..aaf3b539ce 100644 --- a/InvenTree/track/urls.py +++ b/InvenTree/track/urls.py @@ -3,19 +3,19 @@ from django.conf.urls import url, include from . import views infopatterns = [ - url(r'^(?P[0-9]+)/?$', views.PartTrackingDetail.as_view(), name='tracking-detail'), + url(r'^(?P[0-9]+)/?$', views.PartTrackingDetail.as_view(), name='parttrackinginfo-detail'), - url(r'^\?.*/?$', views.PartTrackingList.as_view(), name='tracking-list'), - url(r'^$', views.PartTrackingList.as_view(), name='tracking-list') + url(r'^\?.*/?$', views.PartTrackingList.as_view()), + url(r'^$', views.PartTrackingList.as_view()) ] urlpatterns = [ url(r'info/', include(infopatterns)), # Detail for a single unique part - url(r'^(?P[0-9]+)/?$', views.UniquePartDetail.as_view(), name='unique-detail'), + url(r'^(?P[0-9]+)/?$', views.UniquePartDetail.as_view(), name='uniquepart-detail'), # List all unique parts, with optional filters - url(r'^\?.*/?$', views.UniquePartList.as_view(), name='unique-list'), - url(r'^$', views.UniquePartList.as_view(), name='unique-list'), + url(r'^\?.*/?$', views.UniquePartList.as_view()), + url(r'^$', views.UniquePartList.as_view()), ]