Open natea opened 10 years ago
Thanks for pointing that out. As far as I am aware, the tox setup is in an intermittent state. I've started setting it up but never finished. I should either finish that or remove it complete.
What I usually do to run the tests and what I am running on Travis is:
$ py.test --pep8
This will run all tests except the integration ones that require an account with Amazon. I've added it to issue #7 to write some documentation on that as well.
Great, I ran that and it appears that all the tests pass. :-) How can I run the integration tests that require an account with Amazon (which I have)?
(django-oscar-mws)➜ django-oscar-mws git:(master) ✗ py.test --pep8
=================================== test session starts ====================================
platform darwin -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2
plugins: cache, cov, django, pep8
collected 101 items
setup.py .
oscar_mws/__init__.py .
oscar_mws/abstract_models.py .
oscar_mws/admin.py .
oscar_mws/api.py .
oscar_mws/connection.py .
oscar_mws/defaults.py .
oscar_mws/mixins.py .
oscar_mws/models.py .
oscar_mws/receivers.py .
oscar_mws/signals.py .
oscar_mws/utils.py .
oscar_mws/dashboard/__init__.py .
oscar_mws/dashboard/app.py .
oscar_mws/dashboard/forms.py .
oscar_mws/dashboard/models.py .
oscar_mws/dashboard/views.py .
oscar_mws/feeds/__init__.py .
oscar_mws/feeds/gateway.py .
oscar_mws/feeds/mappers.py .
oscar_mws/feeds/writers.py .
oscar_mws/fulfillment/__init__.py .
oscar_mws/fulfillment/adapters.py .
oscar_mws/fulfillment/creator.py .
oscar_mws/fulfillment/finders.py .
oscar_mws/fulfillment/gateway.py .
oscar_mws/management/__init__.py .
oscar_mws/management/commands/__init__.py .
oscar_mws/management/commands/mws_feed_results.py .
oscar_mws/management/commands/mws_submit_product_feed.py .
oscar_mws/management/commands/mws_switch_product_fulfillment.py .
oscar_mws/management/commands/mws_update_products.py .
oscar_mws/seller/__init__.py .
oscar_mws/seller/gateway.py .
oscar_mws/templatetags/__init__.py .
oscar_mws/templatetags/mws_tags.py .
oscar_mws/test/__init__.py .
oscar_mws/test/factories.py .
oscar_mws/test/mixins.py .
tests/functional/test_dashboard.py ..
tests/functional/test_feeds.py ...
tests/functional/test_fulfillment.py ......
tests/functional/test_profile_dashboard.py .
tests/functional/test_seller.py .
tests/unit/test_fulfillment.py ...
tests/unit/test_mixins.py ......
tests/unit/test_models.py ..............
tests/unit/test_receivers.py .
tests/unit/test_signals.py ..
tests/unit/test_writers.py ....
tests/unit/api/test_mws.py .......
tests/unit/api/test_outbound_shipments.py ...
tests/unit/fulfillment/test_creator.py ..
tests/unit/fulfillment/test_gateway.py ..
======================= 5 tests deselected by "-m 'not integration'" =======================
========================= 96 passed, 5 deselected in 10.12 seconds =========================
Great :smile: It's always good when tests pass.
To run the integration tests you have to run py.test enabling the integration marker:
$ py.test -m integration
For it to work you've got set the SELLER_ID
, AWS_ACCESS_KEY_ID
and AWS_SECRET_ACCESS_KEY
as environment variables. So something along the lines of:
$ export SELLER_ID="you_seller_id"
$ export AWS_ACCESS_KEY_ID="your_aws_key"
$ export AWS_SECRET_ACCESS_KEY="your_aws_secret"
$ py.test -m integration
Currently the integration tests aren't running on Travis so there might be issues with it because running tests against the MWS API fully automated is tricky because of some of there constraints when creating products. Let me know how it goes and if you have any issues.
Not so lucky with the integration tests:
(django-oscar-mws)➜ django-oscar-mws git:(master) ✗ py.test -m integration
=================================== test session starts ====================================
platform darwin -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2
plugins: cache, cov, django, pep8
collected 62 items
tests/integration/test_feeds.py .F
tests/integration/test_fulfillment.py FFF
========================================= FAILURES =========================================
__________________________ TestSubmittingAFeed.test_is_processed ___________________________
self = <tests.integration.test_feeds.TestSubmittingAFeed testMethod=test_is_processed>
def test_is_processed(self):
submissions = feeds_gw.submit_product_feed(
products=[self.product],
marketplaces=[self.marketplace]
)
submission = self._check_submission(submissions[0])
self.assertEquals(submission.processing_status, am.STATUS_DONE)
# Switch the product to FBA
submission = feeds_gw.switch_product_fulfillment(
marketplace=self.marketplace,
> products=[self.product],
)
tests/integration/test_feeds.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
marketplace = <AmazonMarketplace: Dummy Marketplace (US)>
products = [<Product: Kayaking Around Australia>], dry_run = False
def switch_product_fulfillment(marketplace, products, dry_run=False):
"""
Switches the list of *products* sold on the given :class:`AmazonMarketplace
<oscar_mws.models.AmazonMarketplace` *marketplace* to
the fulfillment set on the :class:`AmazonProfile
<oscar_mws.models.AmazonProfile>`'s ``fulfillment_by`` attribute. If the
fulfillment is changed to "Fulfillment By Amazon (FBA)" all manually set
stock information is discarded and handled by Amazon automatically based on
inbound shipments (refer to the Amazon MWS documentation for more details).
:param AmazonMarketplace marketplace: an Amazon marketplace instance
:param list products: a list of Oscar products
:param boolean dry_run: flag to enable dry run. If set to ``True`` the
generated XML is printed to stdout rather than submitted to MWS.
Default: ``False``
:rtype FeedSubmission: a submission object representing the succesfully
submitted XML feed. Used to track the processing status of the feed.
:raises MWSError: if an error occurs while communicating with MWS.
"""
seller_id = marketplace.merchant.seller_id
writer = writers.InventoryFeedWriter(seller_id)
for product in products:
writer.add_product(
product,
fulfillment_by=product.amazon_profile.fulfillment_by,
> fulfillment_center_id=marketplace.fulfillment_center_id,
)
oscar_mws/feeds/gateway.py:442:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <oscar_mws.feeds.writers.InventoryFeedWriter object at 0x104cd1090>
product = <Product: Kayaking Around Australia>, operation_type = 'Update'
fulfillment_center_id = 'AMAZON_NA', fulfillment_by = 'AFN'
def add_product(self, product, operation_type=OP_UPDATE,
fulfillment_center_id=None, fulfillment_by=None):
msg_id = self.msg_counter.next()
inventory = E.Inventory(
> self.mapper_class(product).get_value_element('SKU'),
)
oscar_mws/feeds/writers.py:118:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <lxml.builder.ElementMaker object at 0x104636a90>, tag = 'Inventory'
children = (None,), attrib = {}
get = <built-in method get of dict object at 0x7fe52f1f08b0>
elem = <Element Inventory at 0x104ce7518>, item = None, t = None, basetype = <type 'object'>
def __call__(self, tag, *children, **attrib):
get = self._typemap.get
if self._namespace is not None and tag[0] != '{':
tag = self._namespace + tag
elem = self._makeelement(tag, nsmap=self._nsmap)
if attrib:
get(dict)(elem, attrib)
for item in children:
if callable(item):
item = item()
t = get(type(item))
if t is None:
if ET.iselement(item):
elem.append(item)
continue
for basetype in type(item).__mro__:
# See if the typemap knows of any of this type's bases.
t = get(basetype)
if t is not None:
break
else:
raise TypeError("bad argument type: %s(%r)" %
> (type(item).__name__, item))
E TypeError: bad argument type: NoneType(None)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/lxml-3.3.5-py2.7-macosx-10.9-x86_64.egg/lxml/builder.py:227: TypeError
------------------------------------- Captured stderr --------------------------------------
INFO Updating 1 products for seller ID A24554KR292FDV
INFO:oscar_mws:Updating 1 products for seller ID A24554KR292FDV
DEBUG Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy item class</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG:oscar_mws:Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy item class</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-05-28T00:28:14Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-05-28T00:28:14Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-05-28T00:28:14Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:16+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>7ff58dbb-c4fb-4d80-94e3-f83ec89b6da1</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:16+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>7ff58dbb-c4fb-4d80-94e3-f83ec89b6da1</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:16+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>7ff58dbb-c4fb-4d80-94e3-f83ec89b6da1</RequestId></ResponseMetadata></SubmitFeedResponse>
INFO Feed submission successful as ID 10028704816
INFO:oscar_mws:Feed submission successful as ID 10028704816
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-05-28T00:28:45Z', 'FeedSubmissionIdList.Id.1': u'10028704816', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-05-28T00:28:45Z', 'FeedSubmissionIdList.Id.1': u'10028704816', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-05-28T00:28:45Z', 'FeedSubmissionIdList.Id.1': u'10028704816', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:15+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-05-28T00:28:33+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>2c92ce8a-20bf-4ec1-9b9d-56798bc2bcae</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:15+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-05-28T00:28:33+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>2c92ce8a-20bf-4ec1-9b9d-56798bc2bcae</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:15+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-05-28T00:28:33+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>2c92ce8a-20bf-4ec1-9b9d-56798bc2bcae</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-05-28T00:29:18Z', 'FeedSubmissionIdList.Id.1': u'10028704816', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-05-28T00:29:18Z', 'FeedSubmissionIdList.Id.1': u'10028704816', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-05-28T00:29:18Z', 'FeedSubmissionIdList.Id.1': u'10028704816', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:15+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-05-28T00:28:33+00:00</StartedProcessingDate><CompletedProcessingDate>2014-05-28T00:29:18+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>360b86c0-95cf-4154-b98f-214f9c232e59</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:15+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-05-28T00:28:33+00:00</StartedProcessingDate><CompletedProcessingDate>2014-05-28T00:29:18+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>360b86c0-95cf-4154-b98f-214f9c232e59</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10028704816</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-05-28T00:28:15+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-05-28T00:28:33+00:00</StartedProcessingDate><CompletedProcessingDate>2014-05-28T00:29:18+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>360b86c0-95cf-4154-b98f-214f9c232e59</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
________________________ TestSubmittingAFeed.test_can_be_cancelled _________________________
self = <tests.integration.test_fulfillment.TestSubmittingAFeed testMethod=test_can_be_cancelled>
def setUp(self):
super(IntegrationMixin, self).setUp()
self.product = factories.ProductFactory(
upc='9781741173420', title='Kayaking Around Australia')
self.merchant = factories.MerchantAccountFactory(
name="Integration Test Account", seller_id=os.getenv('SELLER_ID'),
aws_api_key=os.getenv('AWS_ACCESS_KEY_ID'),
aws_api_secret=os.getenv('AWS_SECRET_ACCESS_KEY'))
> amazon_profile = factories.AmazonProfileFactory(product=self.product)
oscar_mws/test/mixins.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
kwargs = {'product': <Product: Kayaking Around Australia>}
def __call__(cls, **kwargs):
"""Override the default Factory() syntax to call the default strategy.
Returns an instance of the associated class.
"""
if cls.FACTORY_STRATEGY == BUILD_STRATEGY:
return cls.build(**kwargs)
elif cls.FACTORY_STRATEGY == CREATE_STRATEGY:
> return cls.create(**kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:81:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
kwargs = {'product': <Product: Kayaking Around Australia>}
attrs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
@classmethod
def create(cls, **kwargs):
"""Create an instance of the associated class, with overriden attrs."""
attrs = cls.attributes(create=True, extra=kwargs)
> return cls._generate(True, attrs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:523:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>, create = True
attrs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
@classmethod
def _generate(cls, create, attrs):
"""generate the object.
Args:
create (bool): whether to 'build' or 'create' the object
attrs (dict): attributes to use for generating the object
"""
if cls._abstract_factory:
raise FactoryError(
"Cannot generate instances of abstract factory %(f)s; "
"Ensure %(f)s.FACTORY_FOR is set and %(f)s.ABSTRACT_FACTORY "
"is either not set or False." % dict(f=cls))
# Extract declarations used for post-generation
postgen_declarations = getattr(cls,
CLASS_ATTRIBUTE_POSTGEN_DECLARATIONS)
postgen_attributes = {}
for name, decl in sorted(postgen_declarations.items()):
postgen_attributes[name] = decl.extract(name, attrs)
# Generate the object
> obj = cls._prepare(create, **attrs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:448:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>, create = True
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
target_class = <class 'oscar_mws.models.AmazonProfile'>, args = ()
@classmethod
def _prepare(cls, create, **kwargs):
"""Prepare an object for this factory.
Args:
create: bool, whether to create or to build the object
**kwargs: arguments to pass to the creation function
"""
target_class = cls._get_target_class()
kwargs = cls._adjust_kwargs(**kwargs)
# Remove 'hidden' arguments.
for arg in cls.FACTORY_HIDDEN_ARGS:
del kwargs[arg]
# Extract *args from **kwargs
args = tuple(kwargs.pop(key) for key in cls.FACTORY_ARG_PARAMETERS)
logger.debug('BaseFactory: Generating %s.%s(%s)',
cls.__module__,
cls.__name__,
utils.log_pprint(args, kwargs),
)
if create:
> return cls._create(target_class, *args, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
target_class = <class 'oscar_mws.models.AmazonProfile'>, args = ()
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
manager = <django.db.models.manager.Manager object at 0x1048f2590>
@classmethod
def _create(cls, target_class, *args, **kwargs):
"""Create an instance of the model, and save it to the database."""
manager = cls._get_manager(target_class)
if cls.FACTORY_DJANGO_GET_OR_CREATE:
return cls._get_or_create(target_class, *args, **kwargs)
> return manager.create(*args, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/django.py:119:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.manager.Manager object at 0x1048f2590>
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
def create(self, **kwargs):
> return self.get_queryset().create(**kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/manager.py:157:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = []
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
obj = <AmazonProfile: Amazon profile for Kayaking Around Australia>
def create(self, **kwargs):
"""
Creates a new object with the given kwargs, saving it to the database
and returning the created object.
"""
obj = self.model(**kwargs)
self._for_write = True
> obj.save(force_insert=True, using=self.db)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/query.py:322:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, args = ()
kwargs = {'force_insert': True, 'using': 'default'}
def save(self, *args, **kwargs):
> super(AbstractAmazonProfile, self).save(*args, **kwargs)
oscar_mws/abstract_models.py:314:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, force_insert = True
force_update = False, using = 'default', update_fields = None
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
"""
Saves the current instance. Override this in a subclass if you want to
control the saving process.
The 'force_insert' and 'force_update' parameters can be used to insist
that the "save" must be an SQL insert or update (or equivalent for
non-SQL backends), respectively. Normally, they should not be set.
"""
using = using or router.db_for_write(self.__class__, instance=self)
if force_insert and (force_update or update_fields):
raise ValueError("Cannot force both insert and updating in model saving.")
if update_fields is not None:
# If update_fields is empty, skip the save. We do also check for
# no-op saves later on for inheritance cases. This bailout is
# still needed for skipping signal sending.
if len(update_fields) == 0:
return
update_fields = frozenset(update_fields)
field_names = set()
for field in self._meta.fields:
if not field.primary_key:
field_names.add(field.name)
if field.name != field.attname:
field_names.add(field.attname)
non_model_fields = update_fields.difference(field_names)
if non_model_fields:
raise ValueError("The following fields do not exist in this "
"model or are m2m fields: %s"
% ', '.join(non_model_fields))
# If saving to the same database, and this model is deferred, then
# automatically do a "update_fields" save on the loaded fields.
elif not force_insert and self._deferred and using == self._state.db:
field_names = set()
for field in self._meta.concrete_fields:
if not field.primary_key and not hasattr(field, 'through'):
field_names.add(field.attname)
deferred_fields = [
f.attname for f in self._meta.fields
if f.attname not in self.__dict__
and isinstance(self.__class__.__dict__[f.attname],
DeferredAttribute)]
loaded_fields = field_names.difference(deferred_fields)
if loaded_fields:
update_fields = frozenset(loaded_fields)
self.save_base(using=using, force_insert=force_insert,
> force_update=force_update, update_fields=update_fields)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:545:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, raw = False
force_insert = True, force_update = False, using = 'default', update_fields = None
def save_base(self, raw=False, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Handles the parts of saving which should be done only once per save,
yet need to be done in raw saves, too. This includes some sanity
checks and signal sending.
The 'raw' argument is telling save_base not to save any parent
models and not to do any changes to the values before save. This
is used by fixture loading.
"""
using = using or router.db_for_write(self.__class__, instance=self)
assert not (force_insert and (force_update or update_fields))
assert update_fields is None or len(update_fields) > 0
cls = origin = self.__class__
# Skip proxies, but keep the origin as the proxy model.
if cls._meta.proxy:
cls = cls._meta.concrete_model
meta = cls._meta
if not meta.auto_created:
signals.pre_save.send(sender=origin, instance=self, raw=raw, using=using,
update_fields=update_fields)
with transaction.commit_on_success_unless_managed(using=using, savepoint=False):
if not raw:
self._save_parents(cls, using, update_fields)
> updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:573:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, raw = False
cls = <class 'oscar_mws.models.AmazonProfile'>, force_insert = True, force_update = False
using = 'default', update_fields = None
def _save_table(self, raw=False, cls=None, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Does the heavy-lifting involved in saving. Updates or inserts the data
for a single table.
"""
meta = cls._meta
non_pks = [f for f in meta.local_concrete_fields if not f.primary_key]
if update_fields:
non_pks = [f for f in non_pks
if f.name in update_fields or f.attname in update_fields]
pk_val = self._get_pk_val(meta)
pk_set = pk_val is not None
if not pk_set and (force_update or update_fields):
raise ValueError("Cannot force an update in save() with no primary key.")
updated = False
# If possible, try an UPDATE. If that doesn't update anything, do an INSERT.
if pk_set and not force_insert:
base_qs = cls._base_manager.using(using)
values = [(f, None, (getattr(self, f.attname) if raw else f.pre_save(self, False)))
for f in non_pks]
forced_update = update_fields or force_update
updated = self._do_update(base_qs, using, pk_val, values, update_fields,
forced_update)
if force_update and not updated:
raise DatabaseError("Forced update did not affect any rows.")
if update_fields and not updated:
raise DatabaseError("Save with update_fields did not affect any rows.")
if not updated:
if meta.order_with_respect_to:
# If this is a model with an order_with_respect_to
# autopopulate the _order field
field = meta.order_with_respect_to
order_value = cls._base_manager.using(using).filter(
**{field.name: getattr(self, field.attname)}).count()
self._order = order_value
fields = meta.local_concrete_fields
if not pk_set:
fields = [f for f in fields if not isinstance(f, AutoField)]
update_pk = bool(meta.has_auto_field and not pk_set)
> result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:654:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>
manager = <django.db.models.manager.Manager object at 0x1048f2590>, using = 'default'
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
update_pk = True, raw = False
def _do_insert(self, manager, using, fields, update_pk, raw):
"""
Do an INSERT. If update_pk is defined then this method should return
the new pk for the model.
"""
return manager._insert([self], fields=fields, return_id=update_pk,
> using=using, raw=raw)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:687:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.manager.Manager object at 0x1048f2590>
objs = [<AmazonProfile: Amazon profile for Kayaking Around Australia>]
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
kwargs = {'raw': False, 'return_id': True, 'using': 'default'}
def _insert(self, objs, fields, **kwargs):
> return insert_query(self.model, objs, fields, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/manager.py:232:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
model = <class 'oscar_mws.models.AmazonProfile'>
objs = [<AmazonProfile: Amazon profile for Kayaking Around Australia>]
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
return_id = True, raw = False, using = 'default'
def insert_query(model, objs, fields, return_id=False, raw=False, using=None):
"""
Inserts a new record for the given model. This provides an interface to
the InsertQuery class and is how Model.save() is implemented. It is not
part of the public API.
"""
query = sql.InsertQuery(model)
query.insert_values(fields, objs, raw=raw)
> return query.get_compiler(using=using).execute_sql(return_id)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/query.py:1514:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.sql.compiler.SQLInsertCompiler object at 0x104ce9b50>
return_id = True
def execute_sql(self, return_id=False):
assert not (return_id and len(self.query.objs) != 1)
self.return_id = return_id
cursor = self.connection.cursor()
for sql, params in self.as_sql():
> cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/sql/compiler.py:903:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.util.CursorWrapper object at 0x104ce94d0>
sql = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, sql, params=None):
self.db.validate_no_broken_transaction()
self.db.set_dirty()
with self.db.wrap_database_errors:
if params is None:
return self.cursor.execute(sql)
else:
> return self.cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/util.py:53:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.utils.DatabaseErrorWrapper object at 0x104b46c10>
exc_type = <class 'sqlite3.IntegrityError'>
exc_value = IntegrityError('UNIQUE constraint failed: oscar_mws_amazonprofile.product_id',)
traceback = <traceback object at 0x104bf1878>
def __exit__(self, exc_type, exc_value, traceback):
if exc_type is None:
return
for dj_exc_type in (
DataError,
OperationalError,
IntegrityError,
InternalError,
ProgrammingError,
NotSupportedError,
DatabaseError,
InterfaceError,
Error,
):
db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
if issubclass(exc_type, db_exc_type):
# Under Python 2.6, exc_value can still be a string.
try:
args = tuple(exc_value.args)
except AttributeError:
args = (exc_value,)
dj_exc_value = dj_exc_type(*args)
dj_exc_value.__cause__ = exc_value
# Only set the 'errors_occurred' flag for errors that may make
# the connection unusable.
if dj_exc_type not in (DataError, IntegrityError):
self.wrapper.errors_occurred = True
> six.reraise(dj_exc_type, dj_exc_value, traceback)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/utils.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.util.CursorWrapper object at 0x104ce94d0>
sql = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, sql, params=None):
self.db.validate_no_broken_transaction()
self.db.set_dirty()
with self.db.wrap_database_errors:
if params is None:
return self.cursor.execute(sql)
else:
> return self.cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/util.py:53:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.sqlite3.base.SQLiteCursorWrapper object at 0x104d583e0>
query = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, query, params=None):
if params is None:
return Database.Cursor.execute(self, query)
query = self.convert_query(query)
> return Database.Cursor.execute(self, query, params)
E IntegrityError: UNIQUE constraint failed: oscar_mws_amazonprofile.product_id
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:451: IntegrityError
------------------------------------- Captured stderr --------------------------------------
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
__________________________ TestSubmittingAFeed.test_is_processed ___________________________
self = <tests.integration.test_fulfillment.TestSubmittingAFeed testMethod=test_is_processed>
def setUp(self):
super(IntegrationMixin, self).setUp()
self.product = factories.ProductFactory(
upc='9781741173420', title='Kayaking Around Australia')
self.merchant = factories.MerchantAccountFactory(
name="Integration Test Account", seller_id=os.getenv('SELLER_ID'),
aws_api_key=os.getenv('AWS_ACCESS_KEY_ID'),
aws_api_secret=os.getenv('AWS_SECRET_ACCESS_KEY'))
> amazon_profile = factories.AmazonProfileFactory(product=self.product)
oscar_mws/test/mixins.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
kwargs = {'product': <Product: Kayaking Around Australia>}
def __call__(cls, **kwargs):
"""Override the default Factory() syntax to call the default strategy.
Returns an instance of the associated class.
"""
if cls.FACTORY_STRATEGY == BUILD_STRATEGY:
return cls.build(**kwargs)
elif cls.FACTORY_STRATEGY == CREATE_STRATEGY:
> return cls.create(**kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:81:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
kwargs = {'product': <Product: Kayaking Around Australia>}
attrs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
@classmethod
def create(cls, **kwargs):
"""Create an instance of the associated class, with overriden attrs."""
attrs = cls.attributes(create=True, extra=kwargs)
> return cls._generate(True, attrs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:523:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>, create = True
attrs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
@classmethod
def _generate(cls, create, attrs):
"""generate the object.
Args:
create (bool): whether to 'build' or 'create' the object
attrs (dict): attributes to use for generating the object
"""
if cls._abstract_factory:
raise FactoryError(
"Cannot generate instances of abstract factory %(f)s; "
"Ensure %(f)s.FACTORY_FOR is set and %(f)s.ABSTRACT_FACTORY "
"is either not set or False." % dict(f=cls))
# Extract declarations used for post-generation
postgen_declarations = getattr(cls,
CLASS_ATTRIBUTE_POSTGEN_DECLARATIONS)
postgen_attributes = {}
for name, decl in sorted(postgen_declarations.items()):
postgen_attributes[name] = decl.extract(name, attrs)
# Generate the object
> obj = cls._prepare(create, **attrs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:448:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>, create = True
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
target_class = <class 'oscar_mws.models.AmazonProfile'>, args = ()
@classmethod
def _prepare(cls, create, **kwargs):
"""Prepare an object for this factory.
Args:
create: bool, whether to create or to build the object
**kwargs: arguments to pass to the creation function
"""
target_class = cls._get_target_class()
kwargs = cls._adjust_kwargs(**kwargs)
# Remove 'hidden' arguments.
for arg in cls.FACTORY_HIDDEN_ARGS:
del kwargs[arg]
# Extract *args from **kwargs
args = tuple(kwargs.pop(key) for key in cls.FACTORY_ARG_PARAMETERS)
logger.debug('BaseFactory: Generating %s.%s(%s)',
cls.__module__,
cls.__name__,
utils.log_pprint(args, kwargs),
)
if create:
> return cls._create(target_class, *args, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
target_class = <class 'oscar_mws.models.AmazonProfile'>, args = ()
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
manager = <django.db.models.manager.Manager object at 0x1048f2590>
@classmethod
def _create(cls, target_class, *args, **kwargs):
"""Create an instance of the model, and save it to the database."""
manager = cls._get_manager(target_class)
if cls.FACTORY_DJANGO_GET_OR_CREATE:
return cls._get_or_create(target_class, *args, **kwargs)
> return manager.create(*args, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/django.py:119:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.manager.Manager object at 0x1048f2590>
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
def create(self, **kwargs):
> return self.get_queryset().create(**kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/manager.py:157:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = []
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
obj = <AmazonProfile: Amazon profile for Kayaking Around Australia>
def create(self, **kwargs):
"""
Creates a new object with the given kwargs, saving it to the database
and returning the created object.
"""
obj = self.model(**kwargs)
self._for_write = True
> obj.save(force_insert=True, using=self.db)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/query.py:322:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, args = ()
kwargs = {'force_insert': True, 'using': 'default'}
def save(self, *args, **kwargs):
> super(AbstractAmazonProfile, self).save(*args, **kwargs)
oscar_mws/abstract_models.py:314:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, force_insert = True
force_update = False, using = 'default', update_fields = None
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
"""
Saves the current instance. Override this in a subclass if you want to
control the saving process.
The 'force_insert' and 'force_update' parameters can be used to insist
that the "save" must be an SQL insert or update (or equivalent for
non-SQL backends), respectively. Normally, they should not be set.
"""
using = using or router.db_for_write(self.__class__, instance=self)
if force_insert and (force_update or update_fields):
raise ValueError("Cannot force both insert and updating in model saving.")
if update_fields is not None:
# If update_fields is empty, skip the save. We do also check for
# no-op saves later on for inheritance cases. This bailout is
# still needed for skipping signal sending.
if len(update_fields) == 0:
return
update_fields = frozenset(update_fields)
field_names = set()
for field in self._meta.fields:
if not field.primary_key:
field_names.add(field.name)
if field.name != field.attname:
field_names.add(field.attname)
non_model_fields = update_fields.difference(field_names)
if non_model_fields:
raise ValueError("The following fields do not exist in this "
"model or are m2m fields: %s"
% ', '.join(non_model_fields))
# If saving to the same database, and this model is deferred, then
# automatically do a "update_fields" save on the loaded fields.
elif not force_insert and self._deferred and using == self._state.db:
field_names = set()
for field in self._meta.concrete_fields:
if not field.primary_key and not hasattr(field, 'through'):
field_names.add(field.attname)
deferred_fields = [
f.attname for f in self._meta.fields
if f.attname not in self.__dict__
and isinstance(self.__class__.__dict__[f.attname],
DeferredAttribute)]
loaded_fields = field_names.difference(deferred_fields)
if loaded_fields:
update_fields = frozenset(loaded_fields)
self.save_base(using=using, force_insert=force_insert,
> force_update=force_update, update_fields=update_fields)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:545:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, raw = False
force_insert = True, force_update = False, using = 'default', update_fields = None
def save_base(self, raw=False, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Handles the parts of saving which should be done only once per save,
yet need to be done in raw saves, too. This includes some sanity
checks and signal sending.
The 'raw' argument is telling save_base not to save any parent
models and not to do any changes to the values before save. This
is used by fixture loading.
"""
using = using or router.db_for_write(self.__class__, instance=self)
assert not (force_insert and (force_update or update_fields))
assert update_fields is None or len(update_fields) > 0
cls = origin = self.__class__
# Skip proxies, but keep the origin as the proxy model.
if cls._meta.proxy:
cls = cls._meta.concrete_model
meta = cls._meta
if not meta.auto_created:
signals.pre_save.send(sender=origin, instance=self, raw=raw, using=using,
update_fields=update_fields)
with transaction.commit_on_success_unless_managed(using=using, savepoint=False):
if not raw:
self._save_parents(cls, using, update_fields)
> updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:573:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, raw = False
cls = <class 'oscar_mws.models.AmazonProfile'>, force_insert = True, force_update = False
using = 'default', update_fields = None
def _save_table(self, raw=False, cls=None, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Does the heavy-lifting involved in saving. Updates or inserts the data
for a single table.
"""
meta = cls._meta
non_pks = [f for f in meta.local_concrete_fields if not f.primary_key]
if update_fields:
non_pks = [f for f in non_pks
if f.name in update_fields or f.attname in update_fields]
pk_val = self._get_pk_val(meta)
pk_set = pk_val is not None
if not pk_set and (force_update or update_fields):
raise ValueError("Cannot force an update in save() with no primary key.")
updated = False
# If possible, try an UPDATE. If that doesn't update anything, do an INSERT.
if pk_set and not force_insert:
base_qs = cls._base_manager.using(using)
values = [(f, None, (getattr(self, f.attname) if raw else f.pre_save(self, False)))
for f in non_pks]
forced_update = update_fields or force_update
updated = self._do_update(base_qs, using, pk_val, values, update_fields,
forced_update)
if force_update and not updated:
raise DatabaseError("Forced update did not affect any rows.")
if update_fields and not updated:
raise DatabaseError("Save with update_fields did not affect any rows.")
if not updated:
if meta.order_with_respect_to:
# If this is a model with an order_with_respect_to
# autopopulate the _order field
field = meta.order_with_respect_to
order_value = cls._base_manager.using(using).filter(
**{field.name: getattr(self, field.attname)}).count()
self._order = order_value
fields = meta.local_concrete_fields
if not pk_set:
fields = [f for f in fields if not isinstance(f, AutoField)]
update_pk = bool(meta.has_auto_field and not pk_set)
> result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:654:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>
manager = <django.db.models.manager.Manager object at 0x1048f2590>, using = 'default'
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
update_pk = True, raw = False
def _do_insert(self, manager, using, fields, update_pk, raw):
"""
Do an INSERT. If update_pk is defined then this method should return
the new pk for the model.
"""
return manager._insert([self], fields=fields, return_id=update_pk,
> using=using, raw=raw)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:687:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.manager.Manager object at 0x1048f2590>
objs = [<AmazonProfile: Amazon profile for Kayaking Around Australia>]
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
kwargs = {'raw': False, 'return_id': True, 'using': 'default'}
def _insert(self, objs, fields, **kwargs):
> return insert_query(self.model, objs, fields, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/manager.py:232:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
model = <class 'oscar_mws.models.AmazonProfile'>
objs = [<AmazonProfile: Amazon profile for Kayaking Around Australia>]
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
return_id = True, raw = False, using = 'default'
def insert_query(model, objs, fields, return_id=False, raw=False, using=None):
"""
Inserts a new record for the given model. This provides an interface to
the InsertQuery class and is how Model.save() is implemented. It is not
part of the public API.
"""
query = sql.InsertQuery(model)
query.insert_values(fields, objs, raw=raw)
> return query.get_compiler(using=using).execute_sql(return_id)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/query.py:1514:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.sql.compiler.SQLInsertCompiler object at 0x104d77350>
return_id = True
def execute_sql(self, return_id=False):
assert not (return_id and len(self.query.objs) != 1)
self.return_id = return_id
cursor = self.connection.cursor()
for sql, params in self.as_sql():
> cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/sql/compiler.py:903:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.util.CursorWrapper object at 0x104d77250>
sql = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, sql, params=None):
self.db.validate_no_broken_transaction()
self.db.set_dirty()
with self.db.wrap_database_errors:
if params is None:
return self.cursor.execute(sql)
else:
> return self.cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/util.py:53:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.utils.DatabaseErrorWrapper object at 0x104b46c10>
exc_type = <class 'sqlite3.IntegrityError'>
exc_value = IntegrityError('UNIQUE constraint failed: oscar_mws_amazonprofile.product_id',)
traceback = <traceback object at 0x104d85c20>
def __exit__(self, exc_type, exc_value, traceback):
if exc_type is None:
return
for dj_exc_type in (
DataError,
OperationalError,
IntegrityError,
InternalError,
ProgrammingError,
NotSupportedError,
DatabaseError,
InterfaceError,
Error,
):
db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
if issubclass(exc_type, db_exc_type):
# Under Python 2.6, exc_value can still be a string.
try:
args = tuple(exc_value.args)
except AttributeError:
args = (exc_value,)
dj_exc_value = dj_exc_type(*args)
dj_exc_value.__cause__ = exc_value
# Only set the 'errors_occurred' flag for errors that may make
# the connection unusable.
if dj_exc_type not in (DataError, IntegrityError):
self.wrapper.errors_occurred = True
> six.reraise(dj_exc_type, dj_exc_value, traceback)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/utils.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.util.CursorWrapper object at 0x104d77250>
sql = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, sql, params=None):
self.db.validate_no_broken_transaction()
self.db.set_dirty()
with self.db.wrap_database_errors:
if params is None:
return self.cursor.execute(sql)
else:
> return self.cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/util.py:53:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.sqlite3.base.SQLiteCursorWrapper object at 0x104d586d8>
query = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, query, params=None):
if params is None:
return Database.Cursor.execute(self, query)
query = self.convert_query(query)
> return Database.Cursor.execute(self, query, params)
E IntegrityError: UNIQUE constraint failed: oscar_mws_amazonprofile.product_id
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:451: IntegrityError
------------------------------------- Captured stderr --------------------------------------
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
________________________ TestAFulfillmentOrder.test_can_be_created _________________________
self = <tests.integration.test_fulfillment.TestAFulfillmentOrder testMethod=test_can_be_created>
def setUp(self):
> super(TestAFulfillmentOrder, self).setUp()
tests/integration/test_fulfillment.py:86:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <tests.integration.test_fulfillment.TestAFulfillmentOrder testMethod=test_can_be_created>
def setUp(self):
super(IntegrationMixin, self).setUp()
self.product = factories.ProductFactory(
upc='9781741173420', title='Kayaking Around Australia')
self.merchant = factories.MerchantAccountFactory(
name="Integration Test Account", seller_id=os.getenv('SELLER_ID'),
aws_api_key=os.getenv('AWS_ACCESS_KEY_ID'),
aws_api_secret=os.getenv('AWS_SECRET_ACCESS_KEY'))
> amazon_profile = factories.AmazonProfileFactory(product=self.product)
oscar_mws/test/mixins.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
kwargs = {'product': <Product: Kayaking Around Australia>}
def __call__(cls, **kwargs):
"""Override the default Factory() syntax to call the default strategy.
Returns an instance of the associated class.
"""
if cls.FACTORY_STRATEGY == BUILD_STRATEGY:
return cls.build(**kwargs)
elif cls.FACTORY_STRATEGY == CREATE_STRATEGY:
> return cls.create(**kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:81:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
kwargs = {'product': <Product: Kayaking Around Australia>}
attrs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
@classmethod
def create(cls, **kwargs):
"""Create an instance of the associated class, with overriden attrs."""
attrs = cls.attributes(create=True, extra=kwargs)
> return cls._generate(True, attrs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:523:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>, create = True
attrs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
@classmethod
def _generate(cls, create, attrs):
"""generate the object.
Args:
create (bool): whether to 'build' or 'create' the object
attrs (dict): attributes to use for generating the object
"""
if cls._abstract_factory:
raise FactoryError(
"Cannot generate instances of abstract factory %(f)s; "
"Ensure %(f)s.FACTORY_FOR is set and %(f)s.ABSTRACT_FACTORY "
"is either not set or False." % dict(f=cls))
# Extract declarations used for post-generation
postgen_declarations = getattr(cls,
CLASS_ATTRIBUTE_POSTGEN_DECLARATIONS)
postgen_attributes = {}
for name, decl in sorted(postgen_declarations.items()):
postgen_attributes[name] = decl.extract(name, attrs)
# Generate the object
> obj = cls._prepare(create, **attrs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:448:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>, create = True
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
target_class = <class 'oscar_mws.models.AmazonProfile'>, args = ()
@classmethod
def _prepare(cls, create, **kwargs):
"""Prepare an object for this factory.
Args:
create: bool, whether to create or to build the object
**kwargs: arguments to pass to the creation function
"""
target_class = cls._get_target_class()
kwargs = cls._adjust_kwargs(**kwargs)
# Remove 'hidden' arguments.
for arg in cls.FACTORY_HIDDEN_ARGS:
del kwargs[arg]
# Extract *args from **kwargs
args = tuple(kwargs.pop(key) for key in cls.FACTORY_ARG_PARAMETERS)
logger.debug('BaseFactory: Generating %s.%s(%s)',
cls.__module__,
cls.__name__,
utils.log_pprint(args, kwargs),
)
if create:
> return cls._create(target_class, *args, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/base.py:422:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'oscar_mws.test.factories.AmazonProfileFactory'>
target_class = <class 'oscar_mws.models.AmazonProfile'>, args = ()
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
manager = <django.db.models.manager.Manager object at 0x1048f2590>
@classmethod
def _create(cls, target_class, *args, **kwargs):
"""Create an instance of the model, and save it to the database."""
manager = cls._get_manager(target_class)
if cls.FACTORY_DJANGO_GET_OR_CREATE:
return cls._get_or_create(target_class, *args, **kwargs)
> return manager.create(*args, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/factory/django.py:119:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.manager.Manager object at 0x1048f2590>
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
def create(self, **kwargs):
> return self.get_queryset().create(**kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/manager.py:157:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = []
kwargs = {'product': <Product: Kayaking Around Australia>, 'release_date': datetime.datetime(2014, 5, 28, 0, 28, 3, 552174, tzinfo=<UTC>), 'sku': 'sku_1401236968'}
obj = <AmazonProfile: Amazon profile for Kayaking Around Australia>
def create(self, **kwargs):
"""
Creates a new object with the given kwargs, saving it to the database
and returning the created object.
"""
obj = self.model(**kwargs)
self._for_write = True
> obj.save(force_insert=True, using=self.db)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/query.py:322:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, args = ()
kwargs = {'force_insert': True, 'using': 'default'}
def save(self, *args, **kwargs):
> super(AbstractAmazonProfile, self).save(*args, **kwargs)
oscar_mws/abstract_models.py:314:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, force_insert = True
force_update = False, using = 'default', update_fields = None
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
"""
Saves the current instance. Override this in a subclass if you want to
control the saving process.
The 'force_insert' and 'force_update' parameters can be used to insist
that the "save" must be an SQL insert or update (or equivalent for
non-SQL backends), respectively. Normally, they should not be set.
"""
using = using or router.db_for_write(self.__class__, instance=self)
if force_insert and (force_update or update_fields):
raise ValueError("Cannot force both insert and updating in model saving.")
if update_fields is not None:
# If update_fields is empty, skip the save. We do also check for
# no-op saves later on for inheritance cases. This bailout is
# still needed for skipping signal sending.
if len(update_fields) == 0:
return
update_fields = frozenset(update_fields)
field_names = set()
for field in self._meta.fields:
if not field.primary_key:
field_names.add(field.name)
if field.name != field.attname:
field_names.add(field.attname)
non_model_fields = update_fields.difference(field_names)
if non_model_fields:
raise ValueError("The following fields do not exist in this "
"model or are m2m fields: %s"
% ', '.join(non_model_fields))
# If saving to the same database, and this model is deferred, then
# automatically do a "update_fields" save on the loaded fields.
elif not force_insert and self._deferred and using == self._state.db:
field_names = set()
for field in self._meta.concrete_fields:
if not field.primary_key and not hasattr(field, 'through'):
field_names.add(field.attname)
deferred_fields = [
f.attname for f in self._meta.fields
if f.attname not in self.__dict__
and isinstance(self.__class__.__dict__[f.attname],
DeferredAttribute)]
loaded_fields = field_names.difference(deferred_fields)
if loaded_fields:
update_fields = frozenset(loaded_fields)
self.save_base(using=using, force_insert=force_insert,
> force_update=force_update, update_fields=update_fields)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:545:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, raw = False
force_insert = True, force_update = False, using = 'default', update_fields = None
def save_base(self, raw=False, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Handles the parts of saving which should be done only once per save,
yet need to be done in raw saves, too. This includes some sanity
checks and signal sending.
The 'raw' argument is telling save_base not to save any parent
models and not to do any changes to the values before save. This
is used by fixture loading.
"""
using = using or router.db_for_write(self.__class__, instance=self)
assert not (force_insert and (force_update or update_fields))
assert update_fields is None or len(update_fields) > 0
cls = origin = self.__class__
# Skip proxies, but keep the origin as the proxy model.
if cls._meta.proxy:
cls = cls._meta.concrete_model
meta = cls._meta
if not meta.auto_created:
signals.pre_save.send(sender=origin, instance=self, raw=raw, using=using,
update_fields=update_fields)
with transaction.commit_on_success_unless_managed(using=using, savepoint=False):
if not raw:
self._save_parents(cls, using, update_fields)
> updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:573:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>, raw = False
cls = <class 'oscar_mws.models.AmazonProfile'>, force_insert = True, force_update = False
using = 'default', update_fields = None
def _save_table(self, raw=False, cls=None, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Does the heavy-lifting involved in saving. Updates or inserts the data
for a single table.
"""
meta = cls._meta
non_pks = [f for f in meta.local_concrete_fields if not f.primary_key]
if update_fields:
non_pks = [f for f in non_pks
if f.name in update_fields or f.attname in update_fields]
pk_val = self._get_pk_val(meta)
pk_set = pk_val is not None
if not pk_set and (force_update or update_fields):
raise ValueError("Cannot force an update in save() with no primary key.")
updated = False
# If possible, try an UPDATE. If that doesn't update anything, do an INSERT.
if pk_set and not force_insert:
base_qs = cls._base_manager.using(using)
values = [(f, None, (getattr(self, f.attname) if raw else f.pre_save(self, False)))
for f in non_pks]
forced_update = update_fields or force_update
updated = self._do_update(base_qs, using, pk_val, values, update_fields,
forced_update)
if force_update and not updated:
raise DatabaseError("Forced update did not affect any rows.")
if update_fields and not updated:
raise DatabaseError("Save with update_fields did not affect any rows.")
if not updated:
if meta.order_with_respect_to:
# If this is a model with an order_with_respect_to
# autopopulate the _order field
field = meta.order_with_respect_to
order_value = cls._base_manager.using(using).filter(
**{field.name: getattr(self, field.attname)}).count()
self._order = order_value
fields = meta.local_concrete_fields
if not pk_set:
fields = [f for f in fields if not isinstance(f, AutoField)]
update_pk = bool(meta.has_auto_field and not pk_set)
> result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:654:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AmazonProfile: Amazon profile for Kayaking Around Australia>
manager = <django.db.models.manager.Manager object at 0x1048f2590>, using = 'default'
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
update_pk = True, raw = False
def _do_insert(self, manager, using, fields, update_pk, raw):
"""
Do an INSERT. If update_pk is defined then this method should return
the new pk for the model.
"""
return manager._insert([self], fields=fields, return_id=update_pk,
> using=using, raw=raw)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/base.py:687:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.manager.Manager object at 0x1048f2590>
objs = [<AmazonProfile: Amazon profile for Kayaking Around Australia>]
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
kwargs = {'raw': False, 'return_id': True, 'using': 'default'}
def _insert(self, objs, fields, **kwargs):
> return insert_query(self.model, objs, fields, **kwargs)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/manager.py:232:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
model = <class 'oscar_mws.models.AmazonProfile'>
objs = [<AmazonProfile: Amazon profile for Kayaking Around Australia>]
fields = [<django.db.models.fields.CharField: asin>, <django.db.models.fields.CharField: sku>, <django.db.models.fields.related...ode>, <django.db.models.fields.DateTimeField: launch_date>, <django.db.models.fields.DateTimeField: release_date>, ...]
return_id = True, raw = False, using = 'default'
def insert_query(model, objs, fields, return_id=False, raw=False, using=None):
"""
Inserts a new record for the given model. This provides an interface to
the InsertQuery class and is how Model.save() is implemented. It is not
part of the public API.
"""
query = sql.InsertQuery(model)
query.insert_values(fields, objs, raw=raw)
> return query.get_compiler(using=using).execute_sql(return_id)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/query.py:1514:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.models.sql.compiler.SQLInsertCompiler object at 0x105e668d0>
return_id = True
def execute_sql(self, return_id=False):
assert not (return_id and len(self.query.objs) != 1)
self.return_id = return_id
cursor = self.connection.cursor()
for sql, params in self.as_sql():
> cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/models/sql/compiler.py:903:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.util.CursorWrapper object at 0x105e66750>
sql = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, sql, params=None):
self.db.validate_no_broken_transaction()
self.db.set_dirty()
with self.db.wrap_database_errors:
if params is None:
return self.cursor.execute(sql)
else:
> return self.cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/util.py:53:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.utils.DatabaseErrorWrapper object at 0x104b46c10>
exc_type = <class 'sqlite3.IntegrityError'>
exc_value = IntegrityError('UNIQUE constraint failed: oscar_mws_amazonprofile.product_id',)
traceback = <traceback object at 0x104d3c2d8>
def __exit__(self, exc_type, exc_value, traceback):
if exc_type is None:
return
for dj_exc_type in (
DataError,
OperationalError,
IntegrityError,
InternalError,
ProgrammingError,
NotSupportedError,
DatabaseError,
InterfaceError,
Error,
):
db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
if issubclass(exc_type, db_exc_type):
# Under Python 2.6, exc_value can still be a string.
try:
args = tuple(exc_value.args)
except AttributeError:
args = (exc_value,)
dj_exc_value = dj_exc_type(*args)
dj_exc_value.__cause__ = exc_value
# Only set the 'errors_occurred' flag for errors that may make
# the connection unusable.
if dj_exc_type not in (DataError, IntegrityError):
self.wrapper.errors_occurred = True
> six.reraise(dj_exc_type, dj_exc_value, traceback)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/utils.py:99:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.util.CursorWrapper object at 0x105e66750>
sql = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, sql, params=None):
self.db.validate_no_broken_transaction()
self.db.set_dirty()
with self.db.wrap_database_errors:
if params is None:
return self.cursor.execute(sql)
else:
> return self.cursor.execute(sql, params)
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/util.py:53:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <django.db.backends.sqlite3.base.SQLiteCursorWrapper object at 0x104d585a8>
query = 'INSERT INTO "oscar_mws_amazonprofile" ("asin", "sku", "product_id", "product_tax_code", "launch_date", "release_date", "item_package_quantity", "number_of_items", "fulfillment_by") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'
params = ['', 'sku_1401236968', 1, '', None, '2014-05-28 00:28:03.552174', ...]
def execute(self, query, params=None):
if params is None:
return Database.Cursor.execute(self, query)
query = self.convert_query(query)
> return Database.Cursor.execute(self, query, params)
E IntegrityError: UNIQUE constraint failed: oscar_mws_amazonprofile.product_id
../../../.virtualenvs/django-oscar-mws/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:451: IntegrityError
------------------------------------- Captured stderr --------------------------------------
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
======================== 57 tests deselected by "-m 'integration'" =========================
==================== 4 failed, 1 passed, 57 deselected in 86.33 seconds ====================
I've now added a section to the README.rst
and fixed a few issues in the integration test with the live API. They are now running on Travis as well so it should be more obvious when they break. Could you check and see if the integration tests work for you now as well?
I got the latest code, and tried running the integration tests again. I'm getting a lot of errors that look like this:
<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
<Error>
<Type></Type>
<Code>RequestThrottled</Code>
<Message>Request is throttled</Message>
</Error>
<RequestID>f5b8a9dc-e309-491b-a52c-e237df32bbbf</RequestID>
</ErrorResponse>
and
MWSError: 503 Server Error: Service Unavailable
Any ideas why this might be happening?
That means the integration tests are hitting the MWS API too frequently. The problem here is that getting updates for feed submissions requires polling the API. I've put wait times in several places in the tests to avoid that but it seems that I might have missed some. Is the throttling happening for all tests? Or just some? Can you give more details on where the MWSError
is raised?
Want me to send you the entire log from running the tests?
Sure, there's no such thing as too much information, right :wink:
ok, here they are:
(django-oscar-mws)➜ django-oscar-mws git:(master) ✗ py.test -m integration
=================================== test session starts ====================================
platform darwin -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2
plugins: cache, cov, django, pep8
collected 62 items
tests/integration/test_feeds.py .F
tests/integration/test_fulfillment.py F
tests/integration/test_marketplaces.py ..
========================================= FAILURES =========================================
__________________________ TestSubmittingAFeed.test_is_processed ___________________________
self = <tests.integration.test_feeds.TestSubmittingAFeed testMethod=test_is_processed>
def test_is_processed(self):
submissions = feeds_gw.submit_product_feed(
products=[self.product], marketplaces=[self.marketplace])
submission = self._check_submission(submissions[0])
self.assertEquals(submission.processing_status, am.STATUS_DONE)
# Switch the product to FBA
submission = feeds_gw.switch_product_fulfillment(
marketplace=self.marketplace, products=[self.product])
submission = self._check_submission(submission)
self.assertEquals(submission.processing_status, am.STATUS_DONE)
feeds_gw.update_product_identifiers(
submission.merchant, products=[self.product])
self.assertEquals(
self.product.amazon_profile.fulfillment_by,
AmazonProfile.FULFILLMENT_BY_AMAZON)
# Delete product
submissions = feeds_gw.submit_product_feed(
products=[self.product],
marketplaces=[self.marketplace],
operation_type=feeds_gw.OP_TYPE_DELETE)
> submission = self._check_submission(submissions[0])
tests/integration/test_feeds.py:102:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <tests.integration.test_feeds.TestSubmittingAFeed testMethod=test_is_processed>
submission = <FeedSubmission: Feed #10081799690>
def _check_submission(self, submission):
self.assertEquals(submission.processing_status, am.STATUS_SUBMITTED)
statuses = [am.STATUS_DONE, am.STATUS_CANCELLED]
while submission.processing_status not in statuses:
time.sleep(INTEGRATION_WAIT_TIME)
> submission = feeds_gw.update_feed_submission(submission)
tests/integration/test_feeds.py:46:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
submission = <FeedSubmission: Feed #10081799690>
def update_feed_submission(submission):
"""
Retrieves the status of a submitted MWS feed stored in *submission* and
updates the ``processing_status`` of the feed submission.
:param FeedSubmission submission: a FeedSubmission instance
:rtype FeedSubmission: updated submission instanceh
:raises MWError: if an error occurs requesting details from MWS
"""
seller_id = submission.merchant.seller_id
feeds_api = get_merchant_connection(seller_id).feeds
try:
response = feeds_api.get_feed_submission_list(
> feedids=[submission.submission_id]
).parsed
oscar_mws/feeds/gateway.py:159:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <oscar_mws.api.Feeds object at 0x1041f8250>, feedids = ['10081799690']
max_count = None, feedtypes = None, processingstatuses = None, fromdate = None
todate = None
def get_feed_submission_list(self, feedids=None, max_count=None,
feedtypes=None, processingstatuses=None,
fromdate=None, todate=None):
"""
Returns a list of all feed submissions submitted in the previous 90
days. That match the query parameters.
"""
data = dict(Action='GetFeedSubmissionList',
MaxCount=max_count,
SubmittedFromDate=fromdate,
SubmittedToDate=todate,)
data.update(self.enumerate_param('FeedSubmissionIdList.Id', feedids))
data.update(self.enumerate_param('FeedTypeList.Type', feedtypes))
data.update(self.enumerate_param('FeedProcessingStatusList.Status',
processingstatuses))
> return self.make_request(data)
oscar_mws/api.py:351:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <oscar_mws.api.Feeds object at 0x1041f8250>
extra_data = {'Action': 'GetFeedSubmissionList', 'FeedSubmissionIdList.Id.1': '10081799690'}
method = 'GET', kwargs = {}
params = {'AWSAccessKeyId': 'AKIAJLDEYZG6KV7FZOTA', 'Action': 'GetFeedSubmissionList', 'FeedSubmissionIdList.Id.1': '10081799690', 'Merchant': 'A24554KR292FDV', ...}
request_description = 'AWSAccessKeyId=AKIAJLDEYZG6KV7FZOTA&Action=GetFeedSubmissionList&FeedSubmissionIdList.Id.1=10081799690&Merchant=A24554KR292FDV&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-06-02T13%3A20%3A08Z&Version=2009-01-01'
signature = 'tyfZE5svTYyrPpDHwUwSbs/1AH4VNUh3nVukKFCCsLM='
url = 'https://mws.amazonservices.com/?AWSAccessKeyId=AKIAJLDEYZG6KV7FZOTA&Action=GetFeedSubmissionList&FeedSubmissionIdList...rsion=2&Timestamp=2014-06-02T13%3A20%3A08Z&Version=2009-01-01&Signature=tyfZE5svTYyrPpDHwUwSbs/1AH4VNUh3nVukKFCCsLM%3D'
headers = {'User-Agent': 'python-amazon-mws/0.0.1 (Language=Python)'}
response = <Response [503]>
def make_request(self, extra_data, method="GET", **kwargs):
"""
Make request to Amazon MWS API with these parameters
"""
# Remove all keys with an empty value because
# Amazon's MWS does not allow such a thing.
extra_data = remove_empty(extra_data)
params = {
'AWSAccessKeyId': self.access_key,
self.ACCOUNT_TYPE: self.account_id,
'SignatureVersion': '2',
'Timestamp': self.get_timestamp(),
'Version': self.version,
'SignatureMethod': 'HmacSHA256',
}
params.update(extra_data)
logger.debug("Request Parameters: {}".format(params))
request_description = self._get_quote_params(params)
signature = self.calc_signature(method, request_description)
logger.debug('Domain: {} URI: {}'.format(self.domain, self.uri))
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri,
request_description,
urllib.quote(signature))
headers = {'User-Agent': 'python-amazon-mws/0.0.1 (Language=Python)'}
headers.update(kwargs.get('extra_headers', {}))
try:
# Some might wonder as to why i don't pass the params dict as the
# params argument to request. My answer is, here i have to get the
# url parsed string of params in order to sign it, so if i pass the
# params dict as params to request, request will repeat that step
# because it will need to convert the dict to a url parsed string,
# so why do it twice if i can just pass the full url :).
response = self.session.request(
method, url, data=kwargs.get('body', ''), headers=headers)
response.raise_for_status()
# When retrieving data from the response object, be aware that
# response.content returns the content in bytes while response.text
# calls response.content and converts it to unicode.
data = response.content
# I do not check the headers to decide which content structure to
# server simply because sometimes Amazon's MWS API returns XML
# error responses with "text/plain" as the Content-Type.
action = extra_data.get('Action')
if not action.endswith('Result'):
action = "{}Result".format(action)
try:
parsed_response = DictWrapper(data, action)
except XMLError:
parsed_response = DataWrapper(data, response.headers)
except HTTPError, e:
error = MWSError(unicode(e))
error.response = e.response
error.url = url
logger.error(
"Received {} with message: {}".format(
unicode(e),
e.response.content
)
)
> raise error
E MWSError: 503 Server Error: Service Unavailable
oscar_mws/api.py:252: MWSError
------------------------------------- Captured stderr --------------------------------------
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO Updating 1 products for seller ID A24554KR292FDV
INFO:oscar_mws:Updating 1 products for seller ID A24554KR292FDV
DEBUG Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401714952</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T13:15:31.397018+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 2</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG:oscar_mws:Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401714952</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T13:15:31.397018+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 2</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:15:52Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:15:52Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:15:52Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:53+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>93631272-9852-4c50-999c-b833b6a495fa</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:53+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>93631272-9852-4c50-999c-b833b6a495fa</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:53+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>93631272-9852-4c50-999c-b833b6a495fa</RequestId></ResponseMetadata></SubmitFeedResponse>
INFO Feed submission successful as ID 10081780532
INFO:oscar_mws:Feed submission successful as ID 10081780532
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:08Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:08Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:08Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>8411a771-42b1-4c7f-8939-c2c6869bcee0</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>8411a771-42b1-4c7f-8939-c2c6869bcee0</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>8411a771-42b1-4c7f-8939-c2c6869bcee0</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:24Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:24Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:24Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>54259a60-d927-49ef-a282-750207594444</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>54259a60-d927-49ef-a282-750207594444</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>54259a60-d927-49ef-a282-750207594444</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:39Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:39Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:39Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>9f71cf09-275a-466d-9369-c2b625757758</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>9f71cf09-275a-466d-9369-c2b625757758</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>9f71cf09-275a-466d-9369-c2b625757758</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:55Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:55Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:16:55Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1e05be8e-827f-4b4d-a964-236ed87eeb6e</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1e05be8e-827f-4b4d-a964-236ed87eeb6e</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1e05be8e-827f-4b4d-a964-236ed87eeb6e</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:11Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:11Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:11Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1669a9f9-5ce4-4779-baf4-f3a852fae4c9</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1669a9f9-5ce4-4779-baf4-f3a852fae4c9</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1669a9f9-5ce4-4779-baf4-f3a852fae4c9</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:27Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:27Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:27Z', 'FeedSubmissionIdList.Id.1': u'10081780532', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate><CompletedProcessingDate>2014-06-02T13:17:16+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1ec6ea95-4b73-44c8-97f6-30dd3247daf0</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate><CompletedProcessingDate>2014-06-02T13:17:16+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1ec6ea95-4b73-44c8-97f6-30dd3247daf0</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081780532</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:15:52+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:16:10+00:00</StartedProcessingDate><CompletedProcessingDate>2014-06-02T13:17:16+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1ec6ea95-4b73-44c8-97f6-30dd3247daf0</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Submitting inventory feed with XML:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Inventory</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Inventory><SKU>sku_1401714952</SKU><FulfillmentCenterID>AMAZON_NA</FulfillmentCenterID><Lookup>FulfillmentNetwork</Lookup><SwitchFulfillmentTo>AFN</SwitchFulfillmentTo></Inventory></Message></AmazonEnvelope>
DEBUG:oscar_mws:Submitting inventory feed with XML:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Inventory</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Inventory><SKU>sku_1401714952</SKU><FulfillmentCenterID>AMAZON_NA</FulfillmentCenterID><Lookup>FulfillmentNetwork</Lookup><SwitchFulfillmentTo>AFN</SwitchFulfillmentTo></Inventory></Message></AmazonEnvelope>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_INVENTORY_AVAILABILITY_DATA_', 'Timestamp': '2014-06-02T13:17:29Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_INVENTORY_AVAILABILITY_DATA_', 'Timestamp': '2014-06-02T13:17:29Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_INVENTORY_AVAILABILITY_DATA_', 'Timestamp': '2014-06-02T13:17:29Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:30+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>d38153cf-d7bb-4101-a40a-7f7474a4af64</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:30+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>d38153cf-d7bb-4101-a40a-7f7474a4af64</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:30+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>d38153cf-d7bb-4101-a40a-7f7474a4af64</RequestId></ResponseMetadata></SubmitFeedResponse>
INFO Feed submission successful as ID 10081789956
INFO:oscar_mws:Feed submission successful as ID 10081789956
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:45Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:45Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:17:45Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>2c0bfb8c-4f90-4b67-a79b-1e0c6a1eddfd</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>2c0bfb8c-4f90-4b67-a79b-1e0c6a1eddfd</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>2c0bfb8c-4f90-4b67-a79b-1e0c6a1eddfd</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:00Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:00Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:00Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>7a192911-d50e-4e0c-9187-8144ef423762</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>7a192911-d50e-4e0c-9187-8144ef423762</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>7a192911-d50e-4e0c-9187-8144ef423762</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:16Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:16Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:16Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>e41f809f-1a09-4ac2-b733-50d684cf1b72</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>e41f809f-1a09-4ac2-b733-50d684cf1b72</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>e41f809f-1a09-4ac2-b733-50d684cf1b72</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:32Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:32Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:32Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>0e64f229-25f0-4ac0-9c93-7214a2aa5e8e</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>0e64f229-25f0-4ac0-9c93-7214a2aa5e8e</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>0e64f229-25f0-4ac0-9c93-7214a2aa5e8e</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:47Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:47Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:18:47Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>71b706c0-204b-4185-b372-fb0c3f96c555</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>71b706c0-204b-4185-b372-fb0c3f96c555</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>71b706c0-204b-4185-b372-fb0c3f96c555</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:03Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:03Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:03Z', 'FeedSubmissionIdList.Id.1': u'10081789956', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate><CompletedProcessingDate>2014-06-02T13:19:00+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>84303119-a567-4dde-adf6-0abcad462799</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate><CompletedProcessingDate>2014-06-02T13:19:00+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>84303119-a567-4dde-adf6-0abcad462799</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081789956</FeedSubmissionId><FeedType>_POST_INVENTORY_AVAILABILITY_DATA_</FeedType><SubmittedDate>2014-06-02T13:17:29+00:00</SubmittedDate><FeedProcessingStatus>_DONE_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:17:50+00:00</StartedProcessingDate><CompletedProcessingDate>2014-06-02T13:19:00+00:00</CompletedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>84303119-a567-4dde-adf6-0abcad462799</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'IdList.Id.1': 'sku_1401714952', 'IdType': 'SellerSKU', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:05Z', 'SignatureMethod': 'HmacSHA256', 'Version': '2011-10-01', 'Action': 'GetMatchingProductForId', 'SellerId': 'A24554KR292FDV', 'MarketplaceId': u'ATVPDKIKX0DER'}
DEBUG Request Parameters: {'IdList.Id.1': 'sku_1401714952', 'IdType': 'SellerSKU', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:05Z', 'SignatureMethod': 'HmacSHA256', 'Version': '2011-10-01', 'Action': 'GetMatchingProductForId', 'SellerId': 'A24554KR292FDV', 'MarketplaceId': u'ATVPDKIKX0DER'}
DEBUG:oscar_mws.api:Request Parameters: {'IdList.Id.1': 'sku_1401714952', 'IdType': 'SellerSKU', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:05Z', 'SignatureMethod': 'HmacSHA256', 'Version': '2011-10-01', 'Action': 'GetMatchingProductForId', 'SellerId': 'A24554KR292FDV', 'MarketplaceId': u'ATVPDKIKX0DER'}
DEBUG Domain: https://mws.amazonservices.com URI: /Products/2011-10-01
DEBUG Domain: https://mws.amazonservices.com URI: /Products/2011-10-01
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /Products/2011-10-01
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetMatchingProductForIdResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01"><GetMatchingProductForIdResult Id="sku_1401714952" IdType="SellerSKU" status="Success"><Products xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd"><Product><Identifiers><MarketplaceASIN><MarketplaceId>ATVPDKIKX0DER</MarketplaceId><ASIN>1741173426</ASIN></MarketplaceASIN></Identifiers><AttributeSets><ns2:ItemAttributes xml:lang="en-US"><ns2:Author>Universal Publishers-Explore Australia</ns2:Author><ns2:Binding>Paperback</ns2:Binding><ns2:ItemDimensions><ns2:Height Units="inches">0.00</ns2:Height><ns2:Length Units="inches">0.00</ns2:Length><ns2:Width Units="inches">0.00</ns2:Width><ns2:Weight Units="pounds">0.00</ns2:Weight></ns2:ItemDimensions><ns2:Label>Universal Publishers-Explore Australia</ns2:Label><ns2:Languages><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Unknown</ns2:Type></ns2:Language><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Original Language</ns2:Type></ns2:Language><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Published</ns2:Type></ns2:Language></ns2:Languages><ns2:ListPrice><ns2:Amount>38.95</ns2:Amount><ns2:CurrencyCode>USD</ns2:CurrencyCode></ns2:ListPrice><ns2:Manufacturer>Universal Publishers-Explore Australia</ns2:Manufacturer><ns2:NumberOfItems>1</ns2:NumberOfItems><ns2:NumberOfPages>375</ns2:NumberOfPages><ns2:PackageDimensions><ns2:Height Units="inches">1.02</ns2:Height><ns2:Length Units="inches">8.98</ns2:Length><ns2:Width Units="inches">7.48</ns2:Width><ns2:Weight Units="pounds">2.51</ns2:Weight></ns2:PackageDimensions><ns2:ProductGroup>Book</ns2:ProductGroup><ns2:ProductTypeName>ABIS_BOOK</ns2:ProductTypeName><ns2:PublicationDate>2011-01-01</ns2:PublicationDate><ns2:Publisher>Universal Publishers-Explore Australia</ns2:Publisher><ns2:SmallImage><ns2:URL>http://ecx.images-amazon.com/images/I/51tx8JXxbvL._SL75_.jpg</ns2:URL><ns2:Height Units="pixels">75</ns2:Height><ns2:Width Units="pixels">62</ns2:Width></ns2:SmallImage><ns2:Studio>Universal Publishers-Explore Australia</ns2:Studio><ns2:Title>Kayaking Around Australia</ns2:Title></ns2:ItemAttributes></AttributeSets><Relationships/><SalesRankings><SalesRank><ProductCategoryId>book_display_on_website</ProductCategoryId><Rank>3620670</Rank></SalesRank></SalesRankings></Product></Products></GetMatchingProductForIdResult><ResponseMetadata><RequestId>35135756-396d-40cc-aa9a-95d5edb75bee</RequestId></ResponseMetadata></GetMatchingProductForIdResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetMatchingProductForIdResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01"><GetMatchingProductForIdResult Id="sku_1401714952" IdType="SellerSKU" status="Success"><Products xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd"><Product><Identifiers><MarketplaceASIN><MarketplaceId>ATVPDKIKX0DER</MarketplaceId><ASIN>1741173426</ASIN></MarketplaceASIN></Identifiers><AttributeSets><ns2:ItemAttributes xml:lang="en-US"><ns2:Author>Universal Publishers-Explore Australia</ns2:Author><ns2:Binding>Paperback</ns2:Binding><ns2:ItemDimensions><ns2:Height Units="inches">0.00</ns2:Height><ns2:Length Units="inches">0.00</ns2:Length><ns2:Width Units="inches">0.00</ns2:Width><ns2:Weight Units="pounds">0.00</ns2:Weight></ns2:ItemDimensions><ns2:Label>Universal Publishers-Explore Australia</ns2:Label><ns2:Languages><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Unknown</ns2:Type></ns2:Language><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Original Language</ns2:Type></ns2:Language><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Published</ns2:Type></ns2:Language></ns2:Languages><ns2:ListPrice><ns2:Amount>38.95</ns2:Amount><ns2:CurrencyCode>USD</ns2:CurrencyCode></ns2:ListPrice><ns2:Manufacturer>Universal Publishers-Explore Australia</ns2:Manufacturer><ns2:NumberOfItems>1</ns2:NumberOfItems><ns2:NumberOfPages>375</ns2:NumberOfPages><ns2:PackageDimensions><ns2:Height Units="inches">1.02</ns2:Height><ns2:Length Units="inches">8.98</ns2:Length><ns2:Width Units="inches">7.48</ns2:Width><ns2:Weight Units="pounds">2.51</ns2:Weight></ns2:PackageDimensions><ns2:ProductGroup>Book</ns2:ProductGroup><ns2:ProductTypeName>ABIS_BOOK</ns2:ProductTypeName><ns2:PublicationDate>2011-01-01</ns2:PublicationDate><ns2:Publisher>Universal Publishers-Explore Australia</ns2:Publisher><ns2:SmallImage><ns2:URL>http://ecx.images-amazon.com/images/I/51tx8JXxbvL._SL75_.jpg</ns2:URL><ns2:Height Units="pixels">75</ns2:Height><ns2:Width Units="pixels">62</ns2:Width></ns2:SmallImage><ns2:Studio>Universal Publishers-Explore Australia</ns2:Studio><ns2:Title>Kayaking Around Australia</ns2:Title></ns2:ItemAttributes></AttributeSets><Relationships/><SalesRankings><SalesRank><ProductCategoryId>book_display_on_website</ProductCategoryId><Rank>3620670</Rank></SalesRank></SalesRankings></Product></Products></GetMatchingProductForIdResult><ResponseMetadata><RequestId>35135756-396d-40cc-aa9a-95d5edb75bee</RequestId></ResponseMetadata></GetMatchingProductForIdResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetMatchingProductForIdResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01"><GetMatchingProductForIdResult Id="sku_1401714952" IdType="SellerSKU" status="Success"><Products xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd"><Product><Identifiers><MarketplaceASIN><MarketplaceId>ATVPDKIKX0DER</MarketplaceId><ASIN>1741173426</ASIN></MarketplaceASIN></Identifiers><AttributeSets><ns2:ItemAttributes xml:lang="en-US"><ns2:Author>Universal Publishers-Explore Australia</ns2:Author><ns2:Binding>Paperback</ns2:Binding><ns2:ItemDimensions><ns2:Height Units="inches">0.00</ns2:Height><ns2:Length Units="inches">0.00</ns2:Length><ns2:Width Units="inches">0.00</ns2:Width><ns2:Weight Units="pounds">0.00</ns2:Weight></ns2:ItemDimensions><ns2:Label>Universal Publishers-Explore Australia</ns2:Label><ns2:Languages><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Unknown</ns2:Type></ns2:Language><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Original Language</ns2:Type></ns2:Language><ns2:Language><ns2:Name>english</ns2:Name><ns2:Type>Published</ns2:Type></ns2:Language></ns2:Languages><ns2:ListPrice><ns2:Amount>38.95</ns2:Amount><ns2:CurrencyCode>USD</ns2:CurrencyCode></ns2:ListPrice><ns2:Manufacturer>Universal Publishers-Explore Australia</ns2:Manufacturer><ns2:NumberOfItems>1</ns2:NumberOfItems><ns2:NumberOfPages>375</ns2:NumberOfPages><ns2:PackageDimensions><ns2:Height Units="inches">1.02</ns2:Height><ns2:Length Units="inches">8.98</ns2:Length><ns2:Width Units="inches">7.48</ns2:Width><ns2:Weight Units="pounds">2.51</ns2:Weight></ns2:PackageDimensions><ns2:ProductGroup>Book</ns2:ProductGroup><ns2:ProductTypeName>ABIS_BOOK</ns2:ProductTypeName><ns2:PublicationDate>2011-01-01</ns2:PublicationDate><ns2:Publisher>Universal Publishers-Explore Australia</ns2:Publisher><ns2:SmallImage><ns2:URL>http://ecx.images-amazon.com/images/I/51tx8JXxbvL._SL75_.jpg</ns2:URL><ns2:Height Units="pixels">75</ns2:Height><ns2:Width Units="pixels">62</ns2:Width></ns2:SmallImage><ns2:Studio>Universal Publishers-Explore Australia</ns2:Studio><ns2:Title>Kayaking Around Australia</ns2:Title></ns2:ItemAttributes></AttributeSets><Relationships/><SalesRankings><SalesRank><ProductCategoryId>book_display_on_website</ProductCategoryId><Rank>3620670</Rank></SalesRank></SalesRankings></Product></Products></GetMatchingProductForIdResult><ResponseMetadata><RequestId>35135756-396d-40cc-aa9a-95d5edb75bee</RequestId></ResponseMetadata></GetMatchingProductForIdResponse>
DEBUG ASIN in response: 1741173426
DEBUG:oscar_mws:ASIN in response: 1741173426
INFO Updating 1 products for seller ID A24554KR292FDV
INFO:oscar_mws:Updating 1 products for seller ID A24554KR292FDV
DEBUG Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401714952</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T13:15:31.397018+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 2</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG:oscar_mws:Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401714952</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T13:15:31.397018+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 2</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:19:05Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:19:05Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:19:05Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>e566ad38-bc72-4b18-b66a-972650c086c3</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>e566ad38-bc72-4b18-b66a-972650c086c3</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>e566ad38-bc72-4b18-b66a-972650c086c3</RequestId></ResponseMetadata></SubmitFeedResponse>
INFO Feed submission successful as ID 10081799690
INFO:oscar_mws:Feed submission successful as ID 10081799690
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:21Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:21Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:21Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>ee77e6c8-5873-43df-9ca3-24a6954a9be7</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>ee77e6c8-5873-43df-9ca3-24a6954a9be7</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>ee77e6c8-5873-43df-9ca3-24a6954a9be7</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:37Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:37Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:37Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1a63b5ca-0b3a-480c-82c6-c65907c132d3</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1a63b5ca-0b3a-480c-82c6-c65907c132d3</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>1a63b5ca-0b3a-480c-82c6-c65907c132d3</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:52Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:52Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:19:52Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>8b0de2ea-1bad-47ed-b58d-fdd66f61b878</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>8b0de2ea-1bad-47ed-b58d-fdd66f61b878</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081799690</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:19:06+00:00</SubmittedDate><FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus><StartedProcessingDate>2014-06-02T13:19:11+00:00</StartedProcessingDate></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>8b0de2ea-1bad-47ed-b58d-fdd66f61b878</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:08Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:08Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:08Z', 'FeedSubmissionIdList.Id.1': u'10081799690', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
ERROR Received 503 Server Error: Service Unavailable with message: <?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
<Error>
<Type></Type>
<Code>RequestThrottled</Code>
<Message>Request is throttled</Message>
</Error>
<RequestID>f5b8a9dc-e309-491b-a52c-e237df32bbbf</RequestID>
</ErrorResponse>
ERROR Received 503 Server Error: Service Unavailable with message: <?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
<Error>
<Type></Type>
<Code>RequestThrottled</Code>
<Message>Request is throttled</Message>
</Error>
<RequestID>f5b8a9dc-e309-491b-a52c-e237df32bbbf</RequestID>
</ErrorResponse>
ERROR:oscar_mws.api:Received 503 Server Error: Service Unavailable with message: <?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
<Error>
<Type></Type>
<Code>RequestThrottled</Code>
<Message>Request is throttled</Message>
</Error>
<RequestID>f5b8a9dc-e309-491b-a52c-e237df32bbbf</RequestID>
</ErrorResponse>
ERROR updating status of feed 10081799690 failed
Traceback (most recent call last):
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/feeds/gateway.py", line 159, in update_feed_submission
feedids=[submission.submission_id]
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 351, in get_feed_submission_list
return self.make_request(data)
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 252, in make_request
raise error
MWSError: 503 Server Error: Service Unavailable
ERROR:oscar_mws:updating status of feed 10081799690 failed
Traceback (most recent call last):
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/feeds/gateway.py", line 159, in update_feed_submission
feedids=[submission.submission_id]
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 351, in get_feed_submission_list
return self.make_request(data)
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 252, in make_request
raise error
MWSError: 503 Server Error: Service Unavailable
________________________ TestAFulfillmentOrder.test_can_be_created _________________________
self = <tests.integration.test_fulfillment.TestAFulfillmentOrder testMethod=test_can_be_created>
def test_can_be_created(self):
submissions = feeds_gw.submit_product_feed(
products=[self.product], marketplaces=[self.marketplace])
> self._wait_until_submission_processed(submissions[0])
tests/integration/test_fulfillment.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <tests.integration.test_fulfillment.TestAFulfillmentOrder testMethod=test_can_be_created>
submission = <FeedSubmission: Feed #10081806152>
def _wait_until_submission_processed(self, submission):
while submission.processing_status not in [am.STATUS_DONE,
am.STATUS_CANCELLED]:
time.sleep(INTEGRATION_WAIT_TIME)
> submission = feeds_gw.update_feed_submission(submission)
tests/integration/test_fulfillment.py:32:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
submission = <FeedSubmission: Feed #10081806152>
def update_feed_submission(submission):
"""
Retrieves the status of a submitted MWS feed stored in *submission* and
updates the ``processing_status`` of the feed submission.
:param FeedSubmission submission: a FeedSubmission instance
:rtype FeedSubmission: updated submission instanceh
:raises MWError: if an error occurs requesting details from MWS
"""
seller_id = submission.merchant.seller_id
feeds_api = get_merchant_connection(seller_id).feeds
try:
response = feeds_api.get_feed_submission_list(
> feedids=[submission.submission_id]
).parsed
oscar_mws/feeds/gateway.py:159:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <oscar_mws.api.Feeds object at 0x104215990>, feedids = ['10081806152']
max_count = None, feedtypes = None, processingstatuses = None, fromdate = None
todate = None
def get_feed_submission_list(self, feedids=None, max_count=None,
feedtypes=None, processingstatuses=None,
fromdate=None, todate=None):
"""
Returns a list of all feed submissions submitted in the previous 90
days. That match the query parameters.
"""
data = dict(Action='GetFeedSubmissionList',
MaxCount=max_count,
SubmittedFromDate=fromdate,
SubmittedToDate=todate,)
data.update(self.enumerate_param('FeedSubmissionIdList.Id', feedids))
data.update(self.enumerate_param('FeedTypeList.Type', feedtypes))
data.update(self.enumerate_param('FeedProcessingStatusList.Status',
processingstatuses))
> return self.make_request(data)
oscar_mws/api.py:351:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <oscar_mws.api.Feeds object at 0x104215990>
extra_data = {'Action': 'GetFeedSubmissionList', 'FeedSubmissionIdList.Id.1': '10081806152'}
method = 'GET', kwargs = {}
params = {'AWSAccessKeyId': 'AKIAJLDEYZG6KV7FZOTA', 'Action': 'GetFeedSubmissionList', 'FeedSubmissionIdList.Id.1': '10081806152', 'Merchant': 'A24554KR292FDV', ...}
request_description = 'AWSAccessKeyId=AKIAJLDEYZG6KV7FZOTA&Action=GetFeedSubmissionList&FeedSubmissionIdList.Id.1=10081806152&Merchant=A24554KR292FDV&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-06-02T13%3A20%3A40Z&Version=2009-01-01'
signature = 'jHmqzkh+9ZglmZ7+CZAZredO74J916vHTv8z4f0Gc8s='
url = 'https://mws.amazonservices.com/?AWSAccessKeyId=AKIAJLDEYZG6KV7FZOTA&Action=GetFeedSubmissionList&FeedSubmissionIdList...n=2&Timestamp=2014-06-02T13%3A20%3A40Z&Version=2009-01-01&Signature=jHmqzkh%2B9ZglmZ7%2BCZAZredO74J916vHTv8z4f0Gc8s%3D'
headers = {'User-Agent': 'python-amazon-mws/0.0.1 (Language=Python)'}
response = <Response [503]>
def make_request(self, extra_data, method="GET", **kwargs):
"""
Make request to Amazon MWS API with these parameters
"""
# Remove all keys with an empty value because
# Amazon's MWS does not allow such a thing.
extra_data = remove_empty(extra_data)
params = {
'AWSAccessKeyId': self.access_key,
self.ACCOUNT_TYPE: self.account_id,
'SignatureVersion': '2',
'Timestamp': self.get_timestamp(),
'Version': self.version,
'SignatureMethod': 'HmacSHA256',
}
params.update(extra_data)
logger.debug("Request Parameters: {}".format(params))
request_description = self._get_quote_params(params)
signature = self.calc_signature(method, request_description)
logger.debug('Domain: {} URI: {}'.format(self.domain, self.uri))
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri,
request_description,
urllib.quote(signature))
headers = {'User-Agent': 'python-amazon-mws/0.0.1 (Language=Python)'}
headers.update(kwargs.get('extra_headers', {}))
try:
# Some might wonder as to why i don't pass the params dict as the
# params argument to request. My answer is, here i have to get the
# url parsed string of params in order to sign it, so if i pass the
# params dict as params to request, request will repeat that step
# because it will need to convert the dict to a url parsed string,
# so why do it twice if i can just pass the full url :).
response = self.session.request(
method, url, data=kwargs.get('body', ''), headers=headers)
response.raise_for_status()
# When retrieving data from the response object, be aware that
# response.content returns the content in bytes while response.text
# calls response.content and converts it to unicode.
data = response.content
# I do not check the headers to decide which content structure to
# server simply because sometimes Amazon's MWS API returns XML
# error responses with "text/plain" as the Content-Type.
action = extra_data.get('Action')
if not action.endswith('Result'):
action = "{}Result".format(action)
try:
parsed_response = DictWrapper(data, action)
except XMLError:
parsed_response = DataWrapper(data, response.headers)
except HTTPError, e:
error = MWSError(unicode(e))
error.response = e.response
error.url = url
logger.error(
"Received {} with message: {}".format(
unicode(e),
e.response.content
)
)
> raise error
E MWSError: 503 Server Error: Service Unavailable
oscar_mws/api.py:252: MWSError
------------------------------------- Captured stderr --------------------------------------
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO Updating 1 products for seller ID A24554KR292FDV
INFO:oscar_mws:Updating 1 products for seller ID A24554KR292FDV
DEBUG Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401715209</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T13:15:31.397018+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 3</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG:oscar_mws:Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401715209</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T13:15:31.397018+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 3</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:20:09Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:20:09Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T13:20:09Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081806152</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:20:10+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>d9029969-8631-40ac-975c-75cff16b32a7</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081806152</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:20:10+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>d9029969-8631-40ac-975c-75cff16b32a7</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10081806152</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:20:10+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>d9029969-8631-40ac-975c-75cff16b32a7</RequestId></ResponseMetadata></SubmitFeedResponse>
INFO Feed submission successful as ID 10081806152
INFO:oscar_mws:Feed submission successful as ID 10081806152
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:25Z', 'FeedSubmissionIdList.Id.1': u'10081806152', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:25Z', 'FeedSubmissionIdList.Id.1': u'10081806152', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:25Z', 'FeedSubmissionIdList.Id.1': u'10081806152', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081806152</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:20:10+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>34a9a37c-52ed-4beb-a49d-d96e2a521879</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081806152</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:20:10+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>34a9a37c-52ed-4beb-a49d-d96e2a521879</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><GetFeedSubmissionListResult><NextToken></NextToken><HasNext>false</HasNext><FeedSubmissionInfo><FeedSubmissionId>10081806152</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T13:20:10+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></GetFeedSubmissionListResult><ResponseMetadata><RequestId>34a9a37c-52ed-4beb-a49d-d96e2a521879</RequestId></ResponseMetadata></GetFeedSubmissionListResponse>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:40Z', 'FeedSubmissionIdList.Id.1': u'10081806152', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:40Z', 'FeedSubmissionIdList.Id.1': u'10081806152', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T13:20:40Z', 'FeedSubmissionIdList.Id.1': u'10081806152', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'GetFeedSubmissionList'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
ERROR Received 503 Server Error: Service Unavailable with message: <?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
<Error>
<Type></Type>
<Code>RequestThrottled</Code>
<Message>Request is throttled</Message>
</Error>
<RequestID>f23466ac-1eb2-49cc-97bd-d3be80da97f0</RequestID>
</ErrorResponse>
ERROR Received 503 Server Error: Service Unavailable with message: <?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
<Error>
<Type></Type>
<Code>RequestThrottled</Code>
<Message>Request is throttled</Message>
</Error>
<RequestID>f23466ac-1eb2-49cc-97bd-d3be80da97f0</RequestID>
</ErrorResponse>
ERROR:oscar_mws.api:Received 503 Server Error: Service Unavailable with message: <?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
<Error>
<Type></Type>
<Code>RequestThrottled</Code>
<Message>Request is throttled</Message>
</Error>
<RequestID>f23466ac-1eb2-49cc-97bd-d3be80da97f0</RequestID>
</ErrorResponse>
ERROR updating status of feed 10081806152 failed
Traceback (most recent call last):
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/feeds/gateway.py", line 159, in update_feed_submission
feedids=[submission.submission_id]
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 351, in get_feed_submission_list
return self.make_request(data)
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 252, in make_request
raise error
MWSError: 503 Server Error: Service Unavailable
ERROR:oscar_mws:updating status of feed 10081806152 failed
Traceback (most recent call last):
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/feeds/gateway.py", line 159, in update_feed_submission
feedids=[submission.submission_id]
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 351, in get_feed_submission_list
return self.make_request(data)
File "/Users/nateaune/Dropbox/code/django-oscar-mws/oscar_mws/api.py", line 252, in make_request
raise error
MWSError: 503 Server Error: Service Unavailable
======================== 57 tests deselected by "-m 'integration'" =========================
=================== 2 failed, 3 passed, 57 deselected in 313.02 seconds ====================
I've just checked the throttling limit for GetSubmissionResult
in the MWS docs which states that the quota recovers at one request per minute. Could you set the INTEGRATION_WAIT_TIME
in conftest.py
to 60
and try again? It seems that the current setup is hitting the request limit because MWS takes quite long to process received feeds.
I changed the INTEGRATION_WAIT_TIME to 60 and re-ran the tests. I'm not getting the request is throttled errors anymore, but still getting failures:
(django-oscar-mws)➜ django-oscar-mws git:(master) ✗ py.test -m integration
=================================== test session starts ====================================
platform darwin -- Python 2.7.6 -- py-1.4.20 -- pytest-2.5.2
plugins: cache, cov, django, pep8
collected 62 items
tests/integration/test_feeds.py F.
tests/integration/test_fulfillment.py .
tests/integration/test_marketplaces.py ..
========================================= FAILURES =========================================
________________________ TestSubmittingAFeed.test_can_be_cancelled _________________________
self = <tests.integration.test_feeds.TestSubmittingAFeed testMethod=test_can_be_cancelled>
def test_can_be_cancelled(self):
submissions = feeds_gw.submit_product_feed(
products=[self.product],
marketplaces=[self.marketplace]
)
submission = submissions[0]
self.assertEquals(submission.processing_status, am.STATUS_SUBMITTED)
# we need to wait a bit before we can cancel the submission just to
# make sure that it is available in the system
time.sleep(2)
submission = feeds_gw.cancel_submission(submission)
# we need to wait again to make sure we get the proper result for the
# feed submission ID
time.sleep(INTEGRATION_WAIT_TIME)
> submission = feeds_gw.update_feed_submission(submission)
tests/integration/test_feeds.py:67:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
submission = <FeedSubmission: Feed #10082157840>
def update_feed_submission(submission):
"""
Retrieves the status of a submitted MWS feed stored in *submission* and
updates the ``processing_status`` of the feed submission.
:param FeedSubmission submission: a FeedSubmission instance
:rtype FeedSubmission: updated submission instanceh
:raises MWError: if an error occurs requesting details from MWS
"""
> seller_id = submission.merchant.seller_id
E AttributeError: 'NoneType' object has no attribute 'seller_id'
oscar_mws/feeds/gateway.py:154: AttributeError
------------------------------------- Captured stderr --------------------------------------
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO:oscar.alerts:Sending alerts for 'Kayaking Around Australia'
INFO:oscar.alerts:Sent 0 notifications and 0 emails
INFO Updating 1 products for seller ID A24554KR292FDV
INFO:oscar_mws:Updating 1 products for seller ID A24554KR292FDV
DEBUG Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401718372</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T14:12:51.724937+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 1</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG:oscar_mws:Product feed XML to be submitted:
<?xml version='1.0' encoding='utf-8'?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A24554KR292FDV</MerchantIdentifier></Header><MessageType>Product</MessageType><PurgeAndReplace>false</PurgeAndReplace><Message><MessageID>1</MessageID><OperationType>Update</OperationType><Product><SKU>sku_1401718372</SKU><StandardProductID><Type>UPC</Type><Value>9781741173420</Value></StandardProductID><ReleaseDate>2014-06-02T14:12:51.724937+00:00</ReleaseDate><DescriptionData><Title>Kayaking Around Australia</Title><ItemType>Dummy product class 1</ItemType></DescriptionData></Product></Message></AmazonEnvelope>
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T14:12:52Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T14:12:52Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'FeedType': '_POST_PRODUCT_DATA_', 'Timestamp': '2014-06-02T14:12:52Z', 'MarketplaceIdList.Id.1': 'ATVPDKIKX0DER', 'PurgeAndReplace': 'false', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'SubmitFeed'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10082157840</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T14:12:54+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>2c9e274c-ebde-40b2-bc9f-5a85bd3db80a</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10082157840</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T14:12:54+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>2c9e274c-ebde-40b2-bc9f-5a85bd3db80a</RequestId></ResponseMetadata></SubmitFeedResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><SubmitFeedResult><FeedSubmissionInfo><FeedSubmissionId>10082157840</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T14:12:54+00:00</SubmittedDate><FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus></FeedSubmissionInfo></SubmitFeedResult><ResponseMetadata><RequestId>2c9e274c-ebde-40b2-bc9f-5a85bd3db80a</RequestId></ResponseMetadata></SubmitFeedResponse>
INFO Feed submission successful as ID 10082157840
INFO:oscar_mws:Feed submission successful as ID 10082157840
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T14:12:56Z', 'FeedSubmissionIdList.Id.1': u'10082157840', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'CancelFeedSubmissions'}
DEBUG Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T14:12:56Z', 'FeedSubmissionIdList.Id.1': u'10082157840', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'CancelFeedSubmissions'}
DEBUG:oscar_mws.api:Request Parameters: {'Merchant': 'A24554KR292FDV', 'SignatureVersion': '2', 'AWSAccessKeyId': u'AKIAJLDEYZG6KV7FZOTA', 'Timestamp': '2014-06-02T14:12:56Z', 'FeedSubmissionIdList.Id.1': u'10082157840', 'SignatureMethod': 'HmacSHA256', 'Version': '2009-01-01', 'Action': 'CancelFeedSubmissions'}
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG Domain: https://mws.amazonservices.com URI: /
DEBUG:oscar_mws.api:Domain: https://mws.amazonservices.com URI: /
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): mws.amazonservices.com
DEBUG Received response: <?xml version="1.0"?>
<CancelFeedSubmissionsResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><CancelFeedSubmissionsResult><Count>1</Count><FeedSubmissionInfo><FeedSubmissionId>10082157840</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T14:12:53+00:00</SubmittedDate><FeedProcessingStatus>_CANCELLED_</FeedProcessingStatus></FeedSubmissionInfo></CancelFeedSubmissionsResult><ResponseMetadata><RequestId>9f7e8f3d-2ff7-4a6e-88d2-1aadc8bd9588</RequestId></ResponseMetadata></CancelFeedSubmissionsResponse>
DEBUG Received response: <?xml version="1.0"?>
<CancelFeedSubmissionsResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><CancelFeedSubmissionsResult><Count>1</Count><FeedSubmissionInfo><FeedSubmissionId>10082157840</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T14:12:53+00:00</SubmittedDate><FeedProcessingStatus>_CANCELLED_</FeedProcessingStatus></FeedSubmissionInfo></CancelFeedSubmissionsResult><ResponseMetadata><RequestId>9f7e8f3d-2ff7-4a6e-88d2-1aadc8bd9588</RequestId></ResponseMetadata></CancelFeedSubmissionsResponse>
DEBUG:oscar_mws.api:Received response: <?xml version="1.0"?>
<CancelFeedSubmissionsResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/"><CancelFeedSubmissionsResult><Count>1</Count><FeedSubmissionInfo><FeedSubmissionId>10082157840</FeedSubmissionId><FeedType>_POST_PRODUCT_DATA_</FeedType><SubmittedDate>2014-06-02T14:12:53+00:00</SubmittedDate><FeedProcessingStatus>_CANCELLED_</FeedProcessingStatus></FeedSubmissionInfo></CancelFeedSubmissionsResult><ResponseMetadata><RequestId>9f7e8f3d-2ff7-4a6e-88d2-1aadc8bd9588</RequestId></ResponseMetadata></CancelFeedSubmissionsResponse>
======================== 57 tests deselected by "-m 'integration'" =========================
=================== 1 failed, 4 passed, 57 deselected in 809.05 seconds ====================
This should be fixed in 7d30220, can you give it another go and let me know if it works for you now as well.
What is the best way to run the tests? I noticed that tox was in the requirements_dev.txt file and there is a pytest.ini file, so I ran this:
Does this mean that all the tests passed? (sorry, I haven't used tox before)