From 5ae2336abc50f6874e5c0df785d3dbe5016d459d Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Thu, 10 Sep 2015 16:19:54 +0300 Subject: Fix MultipleObjectsReturned exception MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We cannot enforce SN uniqueness so let’s just use the first match when creating order with device SN --- servo/models/order.py | 6 +++--- servo/templates/orders/devices.html | 5 +++++ servo/views/gsx.py | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) (limited to 'servo') diff --git a/servo/models/order.py b/servo/models/order.py index 62333b5..d968068 100644 --- a/servo/models/order.py +++ b/servo/models/order.py @@ -268,9 +268,9 @@ class Order(models.Model): Adds device to order using serial number """ sn = sn.upper() - try: - device = Device.objects.get(sn=sn) - except Device.DoesNotExist: + device = Device.objects.filter(sn=sn).first() + + if device is None: device = Device.from_gsx(sn) device.save() diff --git a/servo/templates/orders/devices.html b/servo/templates/orders/devices.html index bab9689..fb98862 100755 --- a/servo/templates/orders/devices.html +++ b/servo/templates/orders/devices.html @@ -86,6 +86,11 @@ {% else %}
  • {% trans "Create Onsite Repair" %}
  • {% endif %} + {% if order.can_create_carryin and device.can_create_carryin and 0 %} +
  • {% trans "Create Mail-In Repair" %}
  • + {% else %} +
  • {% trans "Create Mail-In Repair" %}
  • + {% endif %} {% if order.can_create_carryin and device.can_create_carryin and 0 %}
  • {% trans "Create Whole-Unit Exchange" %}
  • {% else %} diff --git a/servo/views/gsx.py b/servo/views/gsx.py index 0269462..908e9f5 100644 --- a/servo/views/gsx.py +++ b/servo/views/gsx.py @@ -75,12 +75,12 @@ def import_repair(request, order_pk, device_pk): form = ImportForm(request.POST) if form.is_valid(): confirmation = form.cleaned_data['confirmation'] - try: repair = Repair.create_from_gsx(confirmation, order, device, request.user) + messages.success(request, _('GSX repair %s imported successfully' % confirmation)) return redirect(repair) except Exception as e: messages.error(request, e) @@ -100,7 +100,7 @@ def return_label(request, repair, part): repair.connect_gsx(request.user) label_data = repair.get_return_label(part) return HttpResponse(label_data, content_type="application/pdf") - except gsxws.GsxError, e: + except gsxws.GsxError as e: messages.error(request, e) return redirect(repair.order) -- cgit v1.2.3