diff options
author | Filipp Lepalaan <f@230.to> | 2013-05-03 09:51:13 +0300 |
---|---|---|
committer | Filipp Lepalaan <f@230.to> | 2013-05-03 09:51:13 +0300 |
commit | 0b6f3d8c62c3ecaa10ff3880ed2f71bd3fb4da7a (patch) | |
tree | bcbd9f954976bf6d2f3cf32b4c279f8631a012e5 | |
parent | b854d9346a6aa72aa978928d03bc0f2b37be0fc9 (diff) | |
download | py-gsxws-0b6f3d8c62c3ecaa10ff3880ed2f71bd3fb4da7a.tar.gz py-gsxws-0b6f3d8c62c3ecaa10ff3880ed2f71bd3fb4da7a.tar.bz2 py-gsxws-0b6f3d8c62c3ecaa10ff3880ed2f71bd3fb4da7a.zip |
Accept IMEI code for Product
-rwxr-xr-x | gsxws.py | 60 | ||||
-rw-r--r-- | products.py | 1 | ||||
-rw-r--r-- | repairs.py | 3 |
3 files changed, 50 insertions, 14 deletions
@@ -859,46 +859,79 @@ class Communication(GsxObject): class Product(GsxObject): dt = 'ns7:unitDetailType' + serialNumber = "" + alternateDeviceId = "" def __init__(self, serialNumber, *args, **kwargs): super(Product, self).__init__(*args, **kwargs) - self.serialNumber = serialNumber + + dt = {'serialNumber': serialNumber} + + if validate(serialNumber, 'alternateDeviceId'): + self.alternateDeviceId = serialNumber + dt = {'alternateDeviceId': serialNumber} + else: + self.serialNumber = serialNumber if SESSION: - self.dt.serialNumber = serialNumber - self.lookup = Lookup(serialNumber=self.serialNumber) + self.dt = dt + self.lookup = Lookup(**dt) def get_model(self): - """ - This API allows Service Providers/Carriers to fetch + """This API allows Service Providers/Carriers to fetch Product Model information for the given serial number. + + >>> Product('W874939YX92').get_model().configDescription + MacBook Pro (15-inch 2.4/2.2GHz) """ #self.set_request('ns3:fetchProductModelRequestType', 'productModelRequest') dt = self._make_type("ns3:fetchProductModelRequestType") dt.productModelRequest = self.dt result = self.submit('FetchProductModel', dt, "productModelResponse") - return result + return result[0] def get_warranty(self, date_received=None, parts=[]): - """ - The Warranty Status API retrieves the same warranty details + """The Warranty Status API retrieves the same warranty details displayed on the GSX Coverage screen. If part information is provided, the part warranty information is returned. If you do not provide the optional part information in the warranty status request, the unit level warranty information is returned. + + >>> Product('013348005376007').get_warranty().warrantyStatus + Apple Limited Warranty + >>> Product('W874939YX92').get_warranty().warrantyStatus + Out Of Warranty (No Coverage) """ dt = self._make_type("ns3:warrantyStatusRequestType") + + if not self.serialNumber: + activation = self.get_activation() + self.serialNumber = activation.serialNumber + self.dt = {'serialNumber': self.serialNumber} + dt.unitDetail = self.dt + result = self.submit("WarrantyStatus", dt, "warrantyDetailInfo") return self._process(result) def get_activation(self): - """ - The Fetch iOS Activation Details API is used to + """The Fetch iOS Activation Details API is used to fetch activation details of iOS Devices. + + >>> Product('013348005376007').get_activation().unlocked + true + >>> Product('W874939YX92').get_activation().unlocked + Traceback (most recent call last): + ... + GsxError: Provided serial number does not belong to an iOS Device.Please Enter an ios serial number. """ dt = self._make_type('ns3:fetchIOSActivationDetailsRequestType') - dt.serialNumber = self.serialNumber + + if self.serialNumber: + dt.serialNumber = self.serialNumber + else: + dt.alternateDeviceId = self.alternateDeviceId + return self.submit('FetchIOSActivationDetails', dt, 'activationDetailsInfo') def get_parts(self): @@ -1000,8 +1033,7 @@ def logout(): CLIENT.service.Logout() if __name__ == '__main__': - import sys - import json + import doctest import argparse parser = argparse.ArgumentParser(description='Communicate with GSX Web Services') @@ -1015,3 +1047,5 @@ if __name__ == '__main__': parser.add_argument('--region', default='emea') args = parser.parse_args() + connect(args.user_id, args.password, args.sold_to) + doctest.testmod() diff --git a/products.py b/products.py index 16fe1c0..b0aa911 100644 --- a/products.py +++ b/products.py @@ -16,6 +16,7 @@ class GsxRequest(object): except suds.WebFault, e: raise GsxError(fault=e) + class Product(GsxObject, GsxRequest): """Something serviceable that Apple makes """ @@ -24,6 +24,7 @@ class GsxObject(object): return dt + class Customer(GsxObject): """ Customer address for GSX @@ -41,7 +42,7 @@ class Customer(GsxObject): state = "ZZ" zipCode = "" emailAddress = "" - + class RepairOrderLine(GsxObject): partNumber = "" |