From 0c6d66e7ced5f1c7843eba4221b08db79e56a021 Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Thu, 1 Oct 2015 00:31:02 +0300 Subject: Inventory bug fixes and performance enhancements --- servo/views/order.py | 20 +++++++++++--------- servo/views/purchases.py | 8 ++++++-- servo/views/shipments.py | 15 +++++++++------ 3 files changed, 26 insertions(+), 17 deletions(-) (limited to 'servo/views') diff --git a/servo/views/order.py b/servo/views/order.py index 1712ba0..cc6d430 100644 --- a/servo/views/order.py +++ b/servo/views/order.py @@ -310,7 +310,8 @@ def toggle_task(request, order_id, item_id): checklist_item = get_object_or_404(ChecklistItem, pk=item_id) try: - item = ChecklistItemValue.objects.get(order_id=order_id, item=checklist_item) + item = ChecklistItemValue.objects.get(order_id=order_id, + item=checklist_item) item.delete() except ChecklistItemValue.DoesNotExist: item = ChecklistItemValue() @@ -348,6 +349,7 @@ def repair(request, order_id, repair_id): @permission_required("servo.change_order") def complete_repair(request, order_id, repair_id): repair = get_object_or_404(Repair, pk=repair_id) + if request.method == 'POST': try: repair.close(request.user) @@ -414,7 +416,8 @@ def delete(request, pk): return redirect(return_to) except Exception as e: ed = {'order': order.code, 'error': e} - messages.error(request, _(u'Cannot delete order %(order)s: %(error)s') % ed) + msg = _(u'Cannot delete order %(order)s: %(error)s') % ed + messages.error(request, msg) return redirect(order) action = request.path @@ -450,13 +453,14 @@ def remove_user(request, pk, user_id): Removes this user from the follower list, unsets assignee """ order = get_object_or_404(Order, pk=pk) - user = get_object_or_404(User, pk=user_id) + user = get_object_or_404(User, pk=user_id) try: order.remove_follower(user) if user == order.user: order.set_user(None, request.user) - order.notify("unset_user", _('User %s removed from followers') % user, request.user) + msg = _('User %s removed from followers') % user + order.notify("unset_user", msg, request.user) except Exception as e: messages.error(request, e) @@ -623,7 +627,7 @@ def device_from_product(request, pk, item_id): """ Turns a SOI into a device and attaches it to this order """ - order = Order.objects.get(pk=pk) + order = get_object_or_404(Order, pk=pk) soi = ServiceOrderItem.objects.get(pk=item_id) try: @@ -640,8 +644,7 @@ def device_from_product(request, pk, item_id): @permission_required('servo.change_order') def reserve_products(request, pk): - order = Order.objects.get(pk=pk) - location = request.user.get_location() + order = get_object_or_404(Order, pk=pk) if request.method == 'POST': for p in order.products.all(): @@ -653,8 +656,7 @@ def reserve_products(request, pk): return redirect(order) - data = {'order': order, 'action': request.path} - return render(request, "orders/reserve_products.html", data) + return render(request, "orders/reserve_products.html", locals()) @permission_required("servo.change_order") diff --git a/servo/views/purchases.py b/servo/views/purchases.py index 7233ceb..4b789ee 100644 --- a/servo/views/purchases.py +++ b/servo/views/purchases.py @@ -14,7 +14,8 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.contrib import messages from servo.models.order import ServiceOrderItem -from servo.models import Product, GsxAccount, PurchaseOrder, PurchaseOrderItem +from servo.models import (Order, Product, GsxAccount, + PurchaseOrder, PurchaseOrderItem,) from servo.forms import PurchaseOrderItemEditForm, PurchaseOrderSearchForm @@ -202,12 +203,15 @@ def delete_po(request, po_id): @permission_required('servo.add_purchaseorder') def create_po(request, product_id=None, order_id=None): + """ + Creates a new Purchase Order + """ po = PurchaseOrder(created_by=request.user) po.location = request.user.get_location() po.save() if order_id is not None: - po.sales_order_id = order_id + po.sales_order = Order.objects.get(pk=order_id) po.save() for i in ServiceOrderItem.objects.filter(order_id=order_id): po.add_product(i, amount=1, user=request.user) diff --git a/servo/views/shipments.py b/servo/views/shipments.py index ada3a07..18c44ba 100644 --- a/servo/views/shipments.py +++ b/servo/views/shipments.py @@ -25,7 +25,9 @@ def prep_counts(): def prep_list_view(request): - + """ + Prepares the list view for incoming parts and products + """ from datetime import timedelta now = timezone.now() @@ -33,7 +35,7 @@ def prep_list_view(request): data['counts'] = prep_counts() location = request.user.get_location() - ordered_date_range = [now - timedelta(days=30), timezone.now()] + ordered_date_range = [now - timedelta(days=30), timezone.now()] received_date_range = [now - timedelta(days=30), timezone.now()] initial = { @@ -47,7 +49,7 @@ def prep_list_view(request): else: data['form'] = IncomingSearchForm(initial=initial) - inventory = PurchaseOrderItem.objects.filter(received_at=None) + inventory = PurchaseOrderItem.objects.filter(received_at=None).select_related('purchase_order', 'sales_order') inventory = inventory.exclude(purchase_order__submitted_at=None) if request.method == 'POST': @@ -106,7 +108,7 @@ def list_incoming(request, shipment=None, status=""): item = PurchaseOrderItem.objects.get(pk=i) try: item.receive(request.user) - except ValueError, e: + except ValueError as e: messages.error(request, e) return redirect(list_incoming) @@ -228,16 +230,16 @@ def edit_bulk_return(request, pk=None, ship_to=None): return redirect(edit_bulk_return, ship_to=ship_to) shipment = Shipment.get_current(request.user, location, ship_to) - part_count = shipment.servicepart_set.all().count() PartFormSet = inlineformset_factory(Shipment, ServicePart, form=BulkReturnPartForm, extra=0, exclude=[]) + form = BulkReturnForm(instance=shipment) formset = PartFormSet(instance=shipment) - + if request.method == "POST": form = BulkReturnForm(request.POST, instance=shipment) if form.is_valid(): @@ -246,6 +248,7 @@ def edit_bulk_return(request, pk=None, ship_to=None): shipment = form.save() msg = _("Bulk return saved") formset.save() + if "confirm" in request.POST.keys(): try: shipment.register_bulk_return(request.user) -- cgit v1.2.3