def to_dict(self):
        d = {}
        # print the object as an xml string, parse the string to a dict
        # good times!
        # this hack brought to you by the letters: X, M, L and by the
        # words: Bad, and Design
        d = xmltodict.parse(self.product.to_string())
        d = json.loads(json.dumps(d))

        # filter our the top level crap which includes AWS keys etc
        d = {'Item': d['Item']}

        # add the python properties
        d.update({
            k: getattr(self.product, k)
            for k in dir(self.product)
            if dict_acceptable(self.product, k, blacklist=['browse_nodes', 'api'])
        })

        # add our own properties
        d.update({
            k: getattr(self, k)
            for k in dir(self)
            if dict_acceptable(self, k, blacklist=['soup', 'api', 'ratings', 'reviews'])
        })
        return d
 def to_dict(self):
     d = {
         k: getattr(self, k)
         for k in dir(self)
         if dict_acceptable(self, k, blacklist=['soup', '_URL', '_soup'])
     }
     return d