diff --git a/.travis.yml b/.travis.yml
index 91d1431f2f..00d049b7a1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,7 +2,8 @@ dist: xenial
language: python
python:
- - 3.5
+ - 3.6
+ - 3.7
addons:
apt-packages:
diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py
index 699671642f..dc6e484ec0 100644
--- a/InvenTree/build/api.py
+++ b/InvenTree/build/api.py
@@ -26,7 +26,7 @@ class BuildList(generics.ListCreateAPIView):
serializer_class = BuildSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -47,7 +47,7 @@ class BuildDetail(generics.RetrieveUpdateAPIView):
serializer_class = BuildSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
@@ -80,7 +80,7 @@ class BuildItemList(generics.ListCreateAPIView):
return query
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
diff --git a/InvenTree/company/api.py b/InvenTree/company/api.py
index 50048eb322..e1b02a76fa 100644
--- a/InvenTree/company/api.py
+++ b/InvenTree/company/api.py
@@ -32,7 +32,7 @@ class CompanyList(generics.ListCreateAPIView):
serializer_class = CompanySerializer
queryset = Company.objects.all()
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -66,7 +66,7 @@ class CompanyDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = CompanySerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
@@ -102,7 +102,7 @@ class SupplierPartList(generics.ListCreateAPIView):
serializer_class = SupplierPartSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -135,7 +135,7 @@ class SupplierPartDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = SupplierPart.objects.all()
serializer_class = SupplierPartSerializer
- permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+ permission_classes = (permissions.IsAuthenticated,)
read_only_fields = [
]
@@ -152,7 +152,7 @@ class SupplierPriceBreakList(generics.ListCreateAPIView):
serializer_class = SupplierPriceBreakSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
diff --git a/InvenTree/company/templates/company/partdetail.html b/InvenTree/company/templates/company/partdetail.html
index 681ba25074..d945ec31c4 100644
--- a/InvenTree/company/templates/company/partdetail.html
+++ b/InvenTree/company/templates/company/partdetail.html
@@ -10,19 +10,26 @@ InvenTree | {{ company.name }} - Parts
@@ -30,17 +37,18 @@ InvenTree | {{ company.name }} - Parts
+
Supplier Part Details
- Supplier | {{ part.supplier.name }} |
- SKU | {{ part.SKU }} |
Internal Part |
- {% if part.part %}
- {{ part.part.full_name }}
- {% endif %}
+ {% if part.part %}
+ {{ part.part.full_name }}
+ {% endif %}
|
+ Supplier | {{ part.supplier.name }} |
+ SKU | {{ part.SKU }} |
{% if part.URL %}
URL | {{ part.URL }} |
{% endif %}
@@ -58,10 +66,8 @@ InvenTree | {{ company.name }} - Parts
+
Pricing Information
-
- Pricing |
-
Order Multiple | {{ part.multiple }} |
{% if part.base_cost > 0 %}
Base Price (Flat Fee) | {{ part.base_cost }} |
diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py
index f7b02ccfa4..1c6678f2d3 100644
--- a/InvenTree/part/api.py
+++ b/InvenTree/part/api.py
@@ -54,7 +54,7 @@ class CategoryList(generics.ListCreateAPIView):
serializer_class = CategorySerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -91,7 +91,7 @@ class PartDetail(generics.RetrieveUpdateAPIView):
serializer_class = PartSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
@@ -178,7 +178,7 @@ class PartList(generics.ListCreateAPIView):
return parts_list
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -243,7 +243,7 @@ class PartStarList(generics.ListCreateAPIView):
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -292,7 +292,7 @@ class BomList(generics.ListCreateAPIView):
return queryset
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -314,7 +314,7 @@ class BomDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = BomItemSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py
index 8d08b8da7d..fffcf5aef1 100644
--- a/InvenTree/stock/api.py
+++ b/InvenTree/stock/api.py
@@ -57,7 +57,7 @@ class StockDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = StockItem.objects.all()
serializer_class = StockItemSerializer
- permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+ permission_classes = (permissions.IsAuthenticated,)
class StockFilter(FilterSet):
@@ -83,7 +83,7 @@ class StockStocktake(APIView):
"""
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
def post(self, request, *args, **kwargs):
@@ -153,7 +153,7 @@ class StockMove(APIView):
""" API endpoint for performing stock movements """
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
def post(self, request, *args, **kwargs):
@@ -227,7 +227,7 @@ class StockLocationList(generics.ListCreateAPIView):
serializer_class = LocationSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -390,7 +390,7 @@ class StockList(generics.ListCreateAPIView):
serializer_class = StockItemSerializer
permission_classes = [
- permissions.IsAuthenticatedOrReadOnly,
+ permissions.IsAuthenticated,
]
filter_backends = [
@@ -412,7 +412,7 @@ class StockStocktakeEndpoint(generics.UpdateAPIView):
queryset = StockItem.objects.all()
serializer_class = StockQuantitySerializer
- permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+ permission_classes = (permissions.IsAuthenticated,)
def update(self, request, *args, **kwargs):
object = self.get_object()
@@ -434,7 +434,7 @@ class StockTrackingList(generics.ListCreateAPIView):
queryset = StockItemTracking.objects.all()
serializer_class = StockTrackingSerializer
- permission_classes = [permissions.IsAuthenticatedOrReadOnly]
+ permission_classes = [permissions.IsAuthenticated]
filter_backends = [
DjangoFilterBackend,
@@ -469,7 +469,7 @@ class LocationDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = StockLocation.objects.all()
serializer_class = LocationSerializer
- permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+ permission_classes = (permissions.IsAuthenticated,)
stock_endpoints = [
diff --git a/InvenTree/users/views.py b/InvenTree/users/views.py
index e10fe2c615..a4920b717e 100644
--- a/InvenTree/users/views.py
+++ b/InvenTree/users/views.py
@@ -12,7 +12,7 @@ class UserDetail(generics.RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
- permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+ permission_classes = (permissions.IsAuthenticated,)
class UserList(generics.ListAPIView):
@@ -20,7 +20,7 @@ class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
- permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
+ permission_classes = (permissions.IsAuthenticated,)
class GetAuthToken(ObtainAuthToken):