简体   繁体   中英

gdata AttributeError: 'ContactEntry' object has no attribute 'name'

Using GData Python libraries, version 2.0.18

Attempting to retrieve contact list using the Service approach (not Client like the sample app). It appears that the return is mapped to a ContactEntry (good), but it gives error when I try to access the name attribute:

AttributeError: 'ContactEntry' object has no attribute 'name'

from gdata.contacts.service import ContactsService
(...)
        self.client = ContactsService(source='appname', additional_headers=additional_headers )
        feed = self.client.GetContactsFeed(uri=query.ToUri())

self.client is a gdata.contacts.service

GetContactsFeed uses

def GetContactsFeed(self, uri=None):
    uri = uri or self.GetFeedUri()
    return self.Get(uri, converter=gdata.contacts.ContactsFeedFromString)

The sample code uses desired_class=gdata.contacts.data.ContactsFeed

Seems like there should be a name attribute. Is my syntax wrong?

Ok, here is the issue for the python contacts sample vs my implementation: in gdata/sample/contacts/contacts_example.py it uses gdata.contacts.Client which (long chain to it) calls for the atom classes to use desired_class=gdata.contacts.data.ContactsFeed . The service, as pointed out in the question, uses converter=gdata.contacts.ContactsFeedFromString .
This converter comes from the init file, src/gdata/contacts/ init .py, as do the class definitions. Obviously at this point, you know what's coming -- the classes for the xml in the initializer do not match the ones in the data file. I added these missing, incorrect ones in to initializer and things worked as expected. Alternatively, changing to use desired_class would do it too (at some point you'd have to map to converter...isn't supported directly in service.py), or adding converter to data.ContactsFeed, etc.

Hope this helps someone.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM