Search code examples
pythongoogle-app-enginegdata-apigoogle-contacts-api

I'm not being able to access some GData Contacts properties, such as gender


Here's the code:

def fetch_feed(self):
        client = gdata.contacts.service.ContactsService()
        client.ClientLogin(username, password) #Will change to AuthSub later.
        query = gdata.contacts.service.ContactsQuery()
        query.max_results = 3000
        feed = client.GetContactsFeed(query.ToUri())
        memcache.set('feed',feed, 3600)
        return feed

feed = self.fetch_feed()
self.PrintFeed(feed)

def PrintFeed(self, feed):
        for entry in feed.entry:
            print entry.* #example... i can access properties such as entry.title, entry.id, entry.updated, but can't access a whole lot more.

What am i doing wrong, or what am i not doing at all? I posted the same question on the Apps API forum, just to clarify things.

EDIT Here's what i'm importing:

from google.appengine.api import memcache, users
from google.appengine.ext import db, webapp
from google.appengine.ext.webapp import util
import atom
import atom.url
import datetime
import gdata.alt.appengine

import gdata.contacts
import gdata.contacts.client
import gdata.contacts.data
import gdata.contacts.service
import gdata.client
import gdata.service
import settings

EDIT2: The error i got after fixing the qry typo:

Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 511, in __call__
    handler.get(*groups)
  File "C:\etrebug\main.py", line 55, in get
    feed = self.fetch_feed()
  File "C:\etrebug\main.py", line 67, in fetch_feed
    feed = client.get_contacts(qry)
  File "C:\etrebug\gdata\contacts\client.py", line 194, in get_contacts
    desired_class=desired_class, **kwargs)
  File "C:\etrebug\gdata\client.py", line 635, in get_feed
    **kwargs)
  File "C:\etrebug\gdata\client.py", line 276, in request
    version=get_xml_version(self.api_version))
  File "C:\etrebug\atom\core.py", line 516, in parse
    return _xml_element_from_tree(tree, target_class, version)
  File "C:\etrebug\atom\core.py", line 525, in _xml_element_from_tree
    if target_class._qname is None:
AttributeError: 'ContactsQuery' object has no attribute '_qname'

Solution

  • You can try the V3 client

    client = gdata.contacts.client.ContactsClient()
    client.client_login(usr, passwd, "myscript")
    qry = gdata.contacts.client.ContactsQuery(max_results=3000)
    feed = client.get_contacts(query=qry)
    
    for entry in feed.entry:
        # do something with entry