From 0fbf39f1bce17670bba3c1c98e53e71aa97ae3e1 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 20 Apr 2021 10:59:28 +1000 Subject: [PATCH] More fixes --- InvenTree/part/models.py | 23 ++++++++++++++++++++--- InvenTree/part/serializers.py | 8 +++++++- InvenTree/users/models.py | 4 +++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index be2d31063f..137781ba2b 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -1163,7 +1163,16 @@ class Part(MPTTModel): Return the total amount of this part allocated to build orders """ - query = self.build_order_allocations().aggregate(total=Coalesce(Sum('quantity'), 0)) + query = self.build_order_allocations().aggregate( + total=Coalesce( + Sum( + 'quantity', + output_field=models.DecimalField() + ), + 0, + output_field=models.DecimalField(), + ) + ) return query['total'] @@ -1179,7 +1188,16 @@ class Part(MPTTModel): Return the tutal quantity of this part allocated to sales orders """ - query = self.sales_order_allocations().aggregate(total=Coalesce(Sum('quantity'), 0)) + query = self.sales_order_allocations().aggregate( + total=Coalesce( + Sum( + 'quantity', + output_field=models.DecimalField(), + ), + 0, + output_field=models.DecimalField(), + ) + ) return query['total'] @@ -1194,7 +1212,6 @@ class Part(MPTTModel): self.build_order_allocation_count(), self.sales_order_allocation_count(), ], - output_field=models.DecimalField() ) def stock_entries(self, include_variants=True, in_stock=None): diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 1ada816357..58df62283a 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -4,6 +4,7 @@ JSON serializers for Part app import imghdr from decimal import Decimal +from django.db import models from django.db.models import Q from django.db.models.functions import Coalesce from InvenTree.serializers import (InvenTreeAttachmentSerializerField, @@ -208,7 +209,8 @@ class PartSerializer(InvenTreeModelSerializer): queryset = queryset.annotate( in_stock=Coalesce( SubquerySum('stock_items__quantity', filter=StockItem.IN_STOCK_FILTER), - Decimal(0) + Decimal(0), + output_field=models.DecimalField(), ), ) @@ -227,6 +229,7 @@ class PartSerializer(InvenTreeModelSerializer): building=Coalesce( SubquerySum('builds__quantity', filter=build_filter), Decimal(0), + output_field=models.DecimalField(), ) ) @@ -240,9 +243,11 @@ class PartSerializer(InvenTreeModelSerializer): ordering=Coalesce( SubquerySum('supplier_parts__purchase_order_line_items__quantity', filter=order_filter), Decimal(0), + output_field=models.DecimalField(), ) - Coalesce( SubquerySum('supplier_parts__purchase_order_line_items__received', filter=order_filter), Decimal(0), + output_field=models.DecimalField(), ) ) @@ -251,6 +256,7 @@ class PartSerializer(InvenTreeModelSerializer): suppliers=Coalesce( SubqueryCount('supplier_parts'), Decimal(0), + output_field=models.DecimalField(), ), ) diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index 55f2b00007..73388a88bc 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -57,6 +57,7 @@ class RuleSet(models.Model): 'auth_user', 'auth_permission', 'authtoken_token', + 'authtoken_tokenproxy', 'users_ruleset', ], 'part_category': [ @@ -199,7 +200,8 @@ class RuleSet(models.Model): if check_user_role(user, role, permission): return True - print("failed permission check for", table, permission) + # Print message instead of throwing an error + print("Failed permission check for", table, permission) return False @staticmethod