From 27978c9011196be5a47933eb62efb3ddab17f328 Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Mon, 29 Feb 2016 12:15:32 +0200 Subject: Load CompTIA options from GSX Closes issue #3 --- servo/forms/orders.py | 14 ++++++++++---- servo/models/order.py | 4 ++-- servo/models/parts.py | 24 ++++++++++++++++++------ servo/models/repair.py | 12 ++++++------ 4 files changed, 36 insertions(+), 18 deletions(-) (limited to 'servo') diff --git a/servo/forms/orders.py b/servo/forms/orders.py index eb5d554..7b27d0b 100644 --- a/servo/forms/orders.py +++ b/servo/forms/orders.py @@ -53,11 +53,15 @@ class FieldsForm(forms.Form): class OrderItemForm(forms.ModelForm): + """ + Form for editing a product added to a service order + """ class Meta: model = ServiceOrderItem fields = ('title', 'amount', 'price_category', - 'price', 'sn', 'kbb_sn', 'imei', 'should_report', - 'comptia_code', 'comptia_modifier',) + 'price', 'sn', 'kbb_sn', + 'imei', 'should_report', 'comptia_code', + 'comptia_modifier',) widgets = { 'amount': forms.TextInput(attrs={'class': 'input-mini'}), 'price': forms.TextInput(attrs={'class': 'input-mini'}) @@ -70,10 +74,12 @@ class OrderItemForm(forms.ModelForm): product = self.instance.product if product.can_order_from_gsx(): CODES = symptom_codes(product.component_code) - self.fields['comptia_code'] = forms.ChoiceField(choices=CODES) + self.fields['comptia_code'] = forms.ChoiceField(choices=CODES, + label=_('Symptom code')) self.fields['comptia_modifier'] = forms.ChoiceField( choices=gsxws.MODIFIERS, - initial="B" + initial="B", + label=_('Symptom modifier') ) diff --git a/servo/models/order.py b/servo/models/order.py index aad1932..2fa3097 100644 --- a/servo/models/order.py +++ b/servo/models/order.py @@ -932,13 +932,13 @@ class ServiceOrderItem(AbstractOrderItem): blank=True, default="", max_length=4, - verbose_name=_("symptom code") + verbose_name=_("Symptom code") ) comptia_modifier = models.CharField( blank=True, default="", max_length=1, - verbose_name=_("symptom modifier") + verbose_name=_("Symptom modifier") ) def can_create_device(self): diff --git a/servo/models/parts.py b/servo/models/parts.py index 013b4cb..ab54e79 100644 --- a/servo/models/parts.py +++ b/servo/models/parts.py @@ -8,6 +8,7 @@ from django.utils import timezone from django.core.files import File from django.utils.translation import ugettext_lazy as _ +from servo.models import GsxAccount from servo.models.shipments import Shipment from servo.models.order import ServiceOrderItem from servo.models.purchases import PurchaseOrder, PurchaseOrderItem @@ -19,15 +20,23 @@ def symptom_modifiers(): def symptom_codes(group): """ - Return symptom codes for component group + Return CompTIA symptom codes for component group """ if group == '': return - data = yaml.load(open("servo/fixtures/comptia.yaml", "r")) - symptoms = data[group]['symptoms'] - srted = sorted(symptoms) - codes = [(k, "%s - %s " % (k, symptoms[k])) for k in srted] + symptoms = {} + + try: + act = GsxAccount.fallback() + codes = gsxws.comptia.fetch()[group] + for k, v in codes: + symptoms[k] = v + except gsxws.GsxError as e: + data = yaml.load(open("servo/fixtures/comptia.yaml", "r")) + symptoms = data[group]['symptoms'] + + codes = [(k, "%s - %s " % (k, symptoms[k])) for k in sorted(symptoms)] return codes @@ -344,8 +353,11 @@ class ServicePart(models.Model): return repair.update_kgb_sn(self.order_item.sn) def can_update_sn(self): + """ + Can update SN to GSX only if SN defined + """ soi = self.order_item - return not soi.sn == '' + return soi.sn != '' def update_sn(self): # CTS parts not eligible for SN update diff --git a/servo/models/repair.py b/servo/models/repair.py index ba52980..d947055 100644 --- a/servo/models/repair.py +++ b/servo/models/repair.py @@ -85,13 +85,13 @@ class ChecklistItemValue(models.Model): class ActiveManager(models.Manager): - """ - GSX repairs that have been submitted, and not marked complete - """ use_for_related_fields = True - - def active(self, **kwargs): - return self.filter(completed_at=None, **kwargs).exclude(submitted_at=None) + + def active(self): + """ + GSX repairs that have been submitted, and not marked complete + """ + return self.filter(completed_at=None).exclude(submitted_at=None) class Repair(models.Model): -- cgit v1.2.3