diff options
author | Filipp Lepalaan <f@230.to> | 2013-05-02 22:31:31 +0300 |
---|---|---|
committer | Filipp Lepalaan <f@230.to> | 2013-05-02 22:31:31 +0300 |
commit | b854d9346a6aa72aa978928d03bc0f2b37be0fc9 (patch) | |
tree | e23cac43698e871fb9977d0c49c25d07390c21d0 /products.py | |
parent | a2ad9888148402b75d4f8a77da4c5fbca2f539cb (diff) | |
download | py-gsxws-b854d9346a6aa72aa978928d03bc0f2b37be0fc9.tar.gz py-gsxws-b854d9346a6aa72aa978928d03bc0f2b37be0fc9.tar.bz2 py-gsxws-b854d9346a6aa72aa978928d03bc0f2b37be0fc9.zip |
Refactoring in progress..
Diffstat (limited to 'products.py')
-rw-r--r-- | products.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/products.py b/products.py new file mode 100644 index 0000000..16fe1c0 --- /dev/null +++ b/products.py @@ -0,0 +1,62 @@ +import sys +from gsxws import connect, GsxError +from repairs import GsxObject +from lookups import Lookup + +class GsxRequest(object): + def submit(self, method, data, attr=None): + """Submits the SOAP envelope + """ + from gsxws import CLIENT, SESSION + f = getattr(CLIENT.service, method) + + try: + result = f(data) + return getattr(result, attr) if attr else result + except suds.WebFault, e: + raise GsxError(fault=e) + +class Product(GsxObject, GsxRequest): + """Something serviceable that Apple makes + """ + serialNumber = "" + alternateDeviceId = "" + configDescription = "" + + def model(self): + """Returns the model description of this Product + + >>> Product(serialNumber='DGKFL06JDHJP').model().configDescription + iMac (27-inch, Mid 2011) + """ + dt = self._make_type("ns3:fetchProductModelRequestType") + dt.productModelRequest = self.data + result = self.submit('FetchProductModel', dt, "productModelResponse")[0] + self.configDescription = result.configDescription + self.productLine = result.productLine + self.configCode = result.configCode + return result + + def warranty(self): + """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(serialNumber='DGKFL06JDHJP').warranty().warrantyStatus + Out Of Warranty (No Coverage) + """ + dt = self._make_type("ns3:warrantyStatusRequestType") + dt.unitDetail = self.data + result = self.submit("WarrantyStatus", dt, "warrantyDetailInfo") + return result + + @property + def parts(self): + pass + +if __name__ == '__main__': + import doctest + connect(*sys.argv[1:4]) + doctest.testmod() |