Source code for shiba.inventorymanagement
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# class InventoryManagement
from __future__ import unicode_literals
from shibaconnection import ShibaConnection
from shibaexceptions import *
from shibatools import ShibaTools
[docs]class InventoryManagement(object):
"""This class permits you to manage your inventory, get information about your products and even import products
from XML to the PriceMinister platform"""
def __init__(self, connection):
if isinstance(connection, ShibaConnection) is False:
raise ShibaCallingError("Shiba subclass init error : expecting a ShibaConnection instance")
self.connection = connection
[docs] def product_types(self):
"""This method retrieve products types from PriceMinister, helping you to define your products attributes."""
inf = ShibaTools.inf_constructor(self.connection, "producttypes", **locals())
url = ShibaTools.url_constructor(self.connection, inf)
obj = ShibaTools.retrieve_obj_from_url(url)
return obj
[docs] def product_type_template(self, alias, scope=""):
"""This methods retrieve product type attributes from the product type given through the "alias" parameter.
Dedicated to help you making your own XML import file.
:param alias: product alias as string
:param scope: can be either VALUES or None, VALUES as "scope" retrieve attributes values instead of only \
attributes
"""
inf = ShibaTools.inf_constructor(self.connection, "producttypetemplate", **locals())
url = ShibaTools.url_constructor(self.connection, inf)
obj = ShibaTools.retrieve_obj_from_url(url)
return obj
[docs] def generic_import_report(self, fileid, nexttoken=""):
"""Retrieves the report from a previous XML import, used as verification for a proper XML import
:param fileid: import file ID given from the generic_import_file return
:param nexttoken: used for pagination, can be used for a loop, its precised in the return from a first call \
to this WebService
"""
inf = ShibaTools.inf_constructor(self.connection, "genericimportreport", **locals())
url = ShibaTools.url_constructor(self.connection, inf)
obj = ShibaTools.retrieve_obj_from_url(url)
return obj
[docs] def generic_import_file(self, data):
"""Import XML file to your PriceMinister inventory trough a POST request.
:param data: must be a object/dict (OrderedDict is better) containing your inventory wished to be imported. \
You must respect the XML hierarchy detailed from the WebService documentation inside the object/dict
"""
data = ShibaTools.create_xml_from_item_obj(data)
inf = ShibaTools.inf_constructor(self.connection, "genericimportfile")
url = ShibaTools.url_constructor(self.connection, inf)
obj = ShibaTools.retrieve_obj_from_url(url, data)
return obj
[docs] def get_available_shipping_types(self):
"""Retrieves available shipping options at asking time"""
inf = ShibaTools.inf_constructor(self.connection, "getavailableshippingtypes", **locals())
url = ShibaTools.url_constructor(self.connection, inf)
obj = ShibaTools.retrieve_obj_from_url(url)
return obj
[docs] def export_inventory(self, scope="", nexttoken=""):
"""Export adverts from your inventory, nexttoken pagination is available.
:param scope: PRICING is the only acceptable value for it, if not empty."""
inf = ShibaTools.inf_constructor(self.connection, "export", **locals())
url = ShibaTools.url_constructor(self.connection, inf)
obj = ShibaTools.retrieve_obj_from_url(url)
return obj