Great. Thanks for following up. Anton
On Sep 12, 1:33 pm, "Jeff S (Google)" <[EMAIL PROTECTED]> wrote: > Hi Anton, > > I was able to reproduce this issue, and it will be fixed in the next > release. Inlining the logic is one solution, you can also rename the > function so that it doesn't start with __. > > Thank you, > > Jeff > > On Sep 11, 11:31 am,amc<[EMAIL PROTECTED]> wrote: > > > Hi Jeff, > > I don't know why Python can't see the ConvertDataPart method > > - I tried a few things with it to see if I could fix the problem. > > > Eventually, to help me progress a bit, I just inlined the logic at > > line 92 in appengine.py where it was trying to call the function. The > > program did what I wanted. Not a long term fix though, since the same > > function is called above for a case I'm not hitting yet. > > > I tested on a Mac and a PC with new installs of the libraries and saw > > the same behavior. Hopefully it's a trivial problem that you might be > > able to figure out quickly. > > > Thanks. > > > Anton > > > On Sep 11, 12:06 am,amc<[EMAIL PROTECTED]> wrote: > > > > Hi, > > > Thanks for the information about the new api. I tried it out with > > > the contacts api and ran into a problem. Here's the code ... > > > > #!/usr/bin/python > > > import wsgiref.handlers > > > import urllib > > > from google.appengine.ext import webapp > > > import gdata.service > > > import gdata.contacts.service > > > import gdata.alt.appengine > > > > class Lister(webapp.RequestHandler): > > > > def get(self): > > > > self.gd_client = gdata.contacts.service.ContactsService() > > > > gdata.alt.appengine.run_on_appengine(self.gd_client) > > > > self.gd_client.email = '[EMAIL PROTECTED]' > > > self.gd_client.password = '*******' > > > self.gd_client.source = 'GoogleInc-ContactsPythonSample-1' > > > self.gd_client.ProgrammaticLogin() > > > > self.response.out.write('<body>') > > > self.response.out.write('<div id="main"/>') > > > self.response.out.write('</body>') > > > > def main(): > > > application = webapp.WSGIApplication([('/.*', Lister),], debug=True) > > > wsgiref.handlers.CGIHandler().run(application) > > > > if __name__ == '__main__': > > > main() > > > > And this is the trace I see when it runs ... > > > > Traceback (most recent call last): > > > File "/Users/Anton/Desktop/GoogleAppEngineLauncher.app/Contents/ > > > Resources/GoogleAppEngine-default.bundle/Contents/Resources/ > > > google_appengine/google/appengine/ext/webapp/__init__.py", line 499, > > > in __call__ > > > handler.get(*groups) > > > File "/Users/Anton/mail/mail.py", line 42, in get > > > self.gd_client.ProgrammaticLogin() > > > File "/Users/Anton/mail/gdata/service.py", line 449, in > > > ProgrammaticLogin > > > headers={'Content-Type':'application/x-www-form-urlencoded'}) > > > File "/Users/Anton/mail/gdata/alt/appengine.py", line 92, in request > > > data_str = __ConvertDataPart(data) > > > NameError: global name '_AppEngineHttpClient__ConvertDataPart' is not > > > defined > > > > I'm new to app engine and python, so I may well have missed something. > > > I'd be grateful for your advice. > > > > Thanks. > > > > Anton > > > > On Sep 10, 3:13 pm, "Jeff S (Google)" <[EMAIL PROTECTED]> wrote: > > > > > Hi moparthi, > > > > > I thought of a few suggestions that might help. The first is that the > > > > atom and gdata directories from the gdata-python-client/src directory > > > > need to be included in the top level directory for your app. The gdata > > > > library source code will needs to be uploaded as part of your app. > > > > This is my first guess as to why the imports would fail. > > > > > Also, there is an additional line which you must add to your code to > > > > tell the gdata library that HTTP requests should use the App Engine > > > > urlfetch API (since the default for the gdata library uses raw socket > > > > connections which are not allowed in App Engine). In the latest > > > > version of the gdata-python-client (version 1.2.0) you would do this: > > > > > import gdata.alt.appengine > > > > ... > > > > self.cal_client = gdata.calendar.service.CalendarService() > > > > gdata.alt.appengine.run_on_appengine(self.cal_client) > > > > > Lastly, I noticed that you are using ClientLogin, which requires a > > > > username and password, and these are being passed around in plaintext. > > > > I strongly recommend that you switch to using AuthSub authorization > > > > instead. I've written an article which explains how to use AuthSub > > > > with App Engine which you can find > > > > herehttp://code.google.com/appengine/articles/gdata.html > > > > > Let me know how it goes :) > > > > > Jeff > > > > > On Sep 9, 12:34 am, moparthi <[EMAIL PROTECTED]> wrote: > > > > > > hi, > > > > > > I tried to use calendar service in cgi-script. > > > > > > This is my code > > > > > > try: > > > > > from xml.etree import ElementTree > > > > > except ImportError: > > > > > from elementtree import ElementTree > > > > > > import gdata.calendar.service > > > > > import gdata.service > > > > > import atom.service > > > > > import gdata.calendar > > > > > ##import atom > > > > > ##import getopt > > > > > ##import sys > > > > > ##import string > > > > > > import cgi, sys > > > > > import cgitb; cgitb.enable() # for troubleshooting > > > > > import time > > > > > > ##print "Content-type: text/html" > > > > > ## > > > > > ##print """ > > > > > ## <html> > > > > > ## > > > > > ## <head><title>Sample Script</title></head> > > > > > ## > > > > > ## <body> > > > > > ## > > > > > ## <h3> Sample CGI Script </h3> > > > > > ## """ > > > > > > sys.stderr = sys.stdout > > > > > > html = """ > > > > > > <p>Previous message : %s</p> > > > > > <p> Time is %s</p> > > > > > <p> Age is %s</p> > > > > > <form action="" method="post"> > > > > > Enter the User name : <input type="text" name="message"><br/> > > > > > Enter the Password : <input type="password" name="age"> > > > > > Select a value : > > > > > <select name="dropdown> > > > > > <option value="RED">red</option> > > > > > <option value="ORANGE">orange</option> > > > > > <option value="BLUE">blue</option> > > > > > </select> > > > > > <input type="submit" value="Submit"> > > > > > </form> > > > > > > </body> > > > > > > </html> > > > > > """ > > > > > > class CalendarExample: > > > > > > def __init__(self): > > > > > print 'In Class' > > > > > print "You're talking to a %s server." % (sys.platform) > > > > > print "Version is %s " % (sys.version) > > > > > print "<br/>Path is %s" % (sys.path) > > > > > > def login(self, email, password): > > > > > """Creates a CalendarService and provides ClientLogin auth details > > > > > to it. > > > > > The email and password are required arguments for ClientLogin. > > > > > The > > > > > CalendarService automatically sets the service to be 'cl', as is > > > > > appropriate for calendar. The 'source' defined below is an > > > > > arbitrary > > > > > string, but should be used to reference your name or the name of > > > > > your > > > > > organization, the app name and version, with '-' between each of > > > > > the three > > > > > values. The account_type is specified to authenticate either > > > > > Google Accounts or Google Apps accounts. See gdata.service or > > > > > http://code.google.com/apis/accounts/AuthForInstalledApps.htmlfor > > > > > more > > > > > info on ClientLogin. NOTE: ClientLogin should only be used for > > > > > installed > > > > > applications and not for multi-user web applications.""" > > > > > > print "<h1>Hello</h1>" > > > > > print "<p>Id is %s " % (email,) > > > > > print "<p>Password is %s " % (password,) > > > > > > self.cal_client = gdata.calendar.service.CalendarService() > > > > > self.cal_client.email = email > > > > > self.cal_client.password = password > > > > > self.cal_client.source = 'Google-Calendar_Python_Sample-1.0' > > > > > self.cal_client.ProgrammaticLogin() > > > > > > def main(): > > > > > > form = cgi.FieldStorage() > > > > > message = form.getvalue("message", "") > > > > > age = form.getvalue("age", "") > > > > > > now = time.gmtime() > > > > > displayedtime = time.strftime("%A %d %B %Y, %X", now) > > > > > contentheader = "Content-type: text/html" > > > > > print contentheader > > > > > print html % (message, displayedtime, age) > > > > > > sample = CalendarExample() > > > > > sample.login(message, age) > > > > > > if __name__ == '__main__': > > > > > # print '\n Main If condition' > > > > > main() > > > > > > when i tried to run in google app engine using command > > > > > dev_appserver.py cgi > > > > > > it showing an error as > > > > > > importerror : No module named gdata.calendar.service > > > > > > can anyone help me how to use calendar service with cgi > > > > > > regards, > > > > > moparthi --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---