From e9b0f10c534c10b239301a58f8c00a4effe9adbf Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Tue, 13 Oct 2015 22:43:45 +0300 Subject: AST 2fixes --- servo/views/device.py | 70 ------------------------------ servo/views/diagnostics.py | 105 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 70 deletions(-) create mode 100644 servo/views/diagnostics.py (limited to 'servo/views') diff --git a/servo/views/device.py b/servo/views/device.py index 9a4a6fb..d828e47 100644 --- a/servo/views/device.py +++ b/servo/views/device.py @@ -17,30 +17,6 @@ from servo.models import Device, Order, Product, GsxAccount, ServiceOrderItem from servo.forms.devices import DeviceForm, DeviceUploadForm, DeviceSearchForm -class RepairDiagnosticResults: - pass - - -class DiagnosticResults(object): - def __init__(self, diags): - if not diags.diagnosticTestData: - raise gsxws.GsxError('Missing diagnostic data') - - self.diags = dict(result={}, profile={}, report={}) - - for r in diags.diagnosticTestData.testResult.result: - self.diags['result'][r.name] = r.value - - for r in diags.diagnosticProfileData.profile.unit.key: - self.diags['profile'][r.name] = r.value - - for r in diags.diagnosticProfileData.report.reportData.key: - self.diags['report'][r.name] = r.value - - def __iter__(self): - return iter(self.diags) - - def model_from_slug(product_line, model=None): """ Returns product description for model slug or models dict for @@ -192,52 +168,6 @@ def view_device(request, pk, product_line=None, model=None): return render(request, "devices/view.html", data) -def diagnostics(request, pk): - """ - Fetches MRI diagnostics or initiates iOS diags from GSX - """ - device = get_object_or_404(Device, pk=pk) - - if request.GET.get('a') == 'init': - if request.method == 'POST': - from gsxws import diagnostics - order = request.POST.get('order') - order = device.order_set.get(pk=order) - email = request.POST.get('email') - diag = diagnostics.Diagnostics(serialNumber=device.sn) - diag.emailAddress = email - diag.shipTo = order.location.gsx_shipto - - try: - GsxAccount.default(request.user) - res = diag.initiate() - msg = _('Diagnostics initiated - diags://%s') % res - order.notify("init_diags", msg, request.user) - messages.success(request, msg) - except gsxws.GsxError as e: - messages.error(request, e) - - return redirect(order) - - order = request.GET.get('order') - order = device.order_set.get(pk=order) - customer = order.customer - url = request.path - return render(request, "devices/diagnostic_init.html", locals()) - - if request.GET.get('a') == 'get': - try: - diagnostics = device.get_diagnostics(request.user) - if device.is_ios(): - diagnostics = DiagnosticResults(diagnostics) - return render(request, "devices/diagnostic_ios.html", locals()) - return render(request, "devices/diagnostic_results.html", locals()) - except gsxws.GsxError as e: - return render(request, "devices/diagnostic_error.html", {'error': e}) - - return render(request, "devices/diagnostics.html", locals()) - - def get_gsx_search_results(request, what, param, query): """ The second phase of a GSX search. diff --git a/servo/views/diagnostics.py b/servo/views/diagnostics.py new file mode 100644 index 0000000..5e2d222 --- /dev/null +++ b/servo/views/diagnostics.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +import gsxws + +from django.db.models import Q +from django.contrib import messages + +from django.core.cache import cache +from django.utils.translation import ugettext as _ +from django.shortcuts import render, redirect, get_object_or_404 + + +from servo.models import Device, Order, Product, GsxAccount, ServiceOrderItem + + +class RepairDiagnosticResults: + pass + + +class DiagnosticResults(object): + def __init__(self, diags): + if not diags.diagnosticTestData: + raise gsxws.GsxError('Missing diagnostic data') + + self.diags = dict(result={}, profile={}, report={}) + + for r in diags.diagnosticTestData.testResult.result: + self.diags['result'][r.name] = r.value + + for r in diags.diagnosticProfileData.profile.unit.key: + self.diags['profile'][r.name] = r.value + + for r in diags.diagnosticProfileData.report.reportData.key: + self.diags['report'][r.name] = r.value + + def __iter__(self): + return iter(self.diags) + + +def run_test(request, device, test_id): + device = get_object_or_404(Device, pk=device) + try: + device.run_test(test_id, request) + except Exception as e: + messages.error(request, e) + + +def select_test(request, pk): + """ + Fetch test suite selector + """ + error = None + device = get_object_or_404(Device, pk=pk) + + try: + tests = device.fetch_tests(request) + except Exception as e: + error = e + + return render(request, "diagnostics/select_test.html", locals()) + + +def diagnostics(request, pk): + """ + Fetches MRI diagnostics or initiates iOS diags from GSX + """ + device = get_object_or_404(Device, pk=pk) + + if request.GET.get('a') == 'init': + if request.method == 'POST': + from gsxws import diagnostics + order = request.POST.get('order') + order = device.order_set.get(pk=order) + email = request.POST.get('email') + diag = diagnostics.Diagnostics(serialNumber=device.sn) + diag.emailAddress = email + diag.shipTo = order.location.gsx_shipto + + try: + GsxAccount.default(request.user) + res = diag.initiate() + msg = _('Diagnostics initiated - diags://%s') % res + order.notify("init_diags", msg, request.user) + messages.success(request, msg) + except gsxws.GsxError as e: + messages.error(request, e) + + return redirect(order) + + order = request.GET.get('order') + order = device.order_set.get(pk=order) + customer = order.customer + url = request.path + return render(request, "devices/diagnostic_init.html", locals()) + + if request.GET.get('a') == 'get': + try: + diagnostics = device.get_diagnostics(request.user) + if device.is_ios(): + diagnostics = DiagnosticResults(diagnostics) + return render(request, "devices/diagnostic_ios.html", locals()) + return render(request, "devices/diagnostic_results.html", locals()) + except gsxws.GsxError as e: + return render(request, "devices/diagnostic_error.html", {'error': e}) + + return render(request, "devices/diagnostics.html", locals()) -- cgit v1.2.3