MediaMath / t1-python

Python SDK for MediaMath Platform APIs
https://developer.mediamath.com/
Apache License 2.0
18 stars 30 forks source link

Cannot update Advertiser and save #39

Closed georgesequeira closed 9 years ago

georgesequeira commented 9 years ago

This is how I can reproduce the problem:

t1 = T1(session_id=SESH_ID, api_key=API_KEY)
advertisers = t1.get('advertisers')
advertiser_to_change = advertisers[0]
advertiser_to_change.name = 'Changed' + advertiser_to_change.name
advertiser_to_change.save()

results

---------------------------------------------------------------------------
/src/trigger_mail/src/engine/ads/mediamath/terminalone/entity.py in save(self, data, url)
    217             data = self._validate_write(data)
    218         else:
--> 219             data = self._validate_write(self.properties)
    220         entity, _ = super(Entity, self)._post(PATHS['mgmt'], url, data=data)
    221         self._update_self(next(entity))

/src/trigger_mail/src/engine/ads/mediamath/terminalone/entity.py in _validate_write(self, data)
    169         update = 'id' in self.properties
    170         if 'version' not in data and update:
--> 171             data['version'] = self.version
    172         for key, value in six.iteritems(data.copy()):
    173             push_fn = self._push.get(key, False)

/src/trigger_mail/src/engine/ads/mediamath/terminalone/entity.py in __getattr__(self, attribute)
     76             return self.properties[attribute]
     77         else:
---> 78             raise AttributeError(attribute)
     79     def __setattr__(self, attribute, value):
     80         if self._pull.get(attribute) is not None:

AttributeError: version
pswaminathan commented 9 years ago

This is a consequence of the way T1 collections work. When you retrieve a collection (GET /advertisers, for instance), only the name, ID, and type are returned. If you would like the full response set, you can retrieve a single advertiser (e.g. adv = t1.get('advertisers', 12345)), or you can specify that you want the full response (advertisers = t1.get('advertisers', full=True)).

Let me know if that works out—thanks!

georgesequeira commented 9 years ago

Yes it does. Thanks.