[google-appengine] Re: Creating web forms in GAE

2008-10-17 Thread [EMAIL PROTECTED]

Thanks, David! I  needs time to think, Under integration I was
thinking to use python on the server side and GWT - on client side.


On Oct 17, 10:56 pm, Davide Rognoni <[EMAIL PROTECTED]> wrote:
> I think:
> - Servlets are old (now I'm using Struts2)
> - I like Python to build web prototypes,
> - and Java static typization for big projects.
> - GWT output is Javascript/HTML (it is simple to put into GAE)
> - if you are thinking "integration" as GWT made with Python, a good
> way is Jython (now I'm using IronPython .NET/Mono for my web browser:
> this is another integration way)
>
> On Oct 17, 7:51 am, "[EMAIL PROTECTED]"
>
>
>
> <[EMAIL PROTECTED]> wrote:
> > And what about using python to make server side code instead of java
> > servlets? Is that a proper way to integrate GAE and GWT? Excuse me
> > for my bad english.
>
> > On Oct 17, 1:49 am, Davide Rognoni <[EMAIL PROTECTED]> wrote:
>
> > > I like the idea of a GAE Java version: it will run under Tomcat.
>
> > > On Oct 16, 3:50 am, "[EMAIL PROTECTED]"
>
> > > <[EMAIL PROTECTED]> wrote:
> > > > Thanks, David! I thought that my first attempt to ask question have
> > > > failed. And what do you think about Java in GAE ?
>
> > > > Davide Rognoni wrote:
> > > > > "web forms with  widgets in Django"
> > > > >http://docs.djangoproject.com/en/dev/ref/forms/widgets/
>
> > > > > On Oct 15, 3:38 pm, "[EMAIL PROTECTED]"
> > > > > <[EMAIL PROTECTED]> wrote:
> > > > > > Hi,
> > > > > > Can anybody say please, what ways exist in GAE environment to create
> > > > > > web forms like in GWT widgets library. Is it possible to use tcl\tk
> > > > > > from python? Thanks in advance!
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Python 2.6 Runtime Environment

2008-10-17 Thread Nathan


On Oct 2, 9:20 am, Nathan <[EMAIL PROTECTED]> wrote:
> Now that Python 2.6 has reached final release, I am just wondering
> what plans/schedule there is for rolling it on on Google App Engine.

The answer to my actual question can be found here (Oct 3, 2008):
http://www.devxnews.com/article.php/3775901

"There are no direct plans to start using Python 2.6 in App Engine
yet," Van Rossum said.


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Feature Request?

2008-10-17 Thread Ethan Post
Understood, but I am interested in seeing what sort of hit/miss ratio I get.
There are uses and ways to design around data loss (for example, sequential
#'s would be expected by the reader, a miss would end up generating a write
to the datastore which could be monitored by the sender to trigger a resend.
I know the design would not be ideal but I sort of like the challenge of
staying under those cpu thresholds!

On Fri, Oct 17, 2008 at 2:13 PM, Wooble <[EMAIL PROTECTED]> wrote:

>
>
>
> On Oct 17, 12:52 pm, "Ethan Post" <[EMAIL PROTECTED]> wrote:
> > I guess
> > I could skip the datastore entirely for some features and use memcache,
> > which I might do, I just have not had time to play around with that yet.
>
> It's almost certainly a bad idea to rely on memcache for a queue;
> there's no guarantee that what you put in will come out when you want
> it.
> >
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: HTTPS Support for appspot.com

2008-10-17 Thread Jeff S

Hi Alexander,

Good point about 46 being marked a duplicate of 44. I've "de-duped"
it.

Cheers,

Jeff

On Oct 17, 10:41 am, Alexander Konovalenko <[EMAIL PROTECTED]> wrote:
> HTTPS support is really great.
>
> Here is a summary of remaining security issues with App Engine.
>
> * Support HTTPS for arbitrary domains (not just *.appspot.com)
> This request is being tracked in issue 
> 792:http://code.google.com/p/googleappengine/issues/detail?id=792
>
> * urlfetch doesn't verify HTTPS certificates
> See issue 46http://code.google.com/p/googleappengine/issues/detail?id=46,
> which is now (for some reason beyond my understanding) a duplicate
> of issue 61:http://code.google.com/p/googleappengine/issues/detail?id=61
>
> * Mail API should support TLS
> See issue 497:http://code.google.com/p/googleappengine/issues/detail?id=497
>
> * Uploading the app to App Engine servers over HTTPS
> See issue 794:http://code.google.com/p/googleappengine/issues/detail?id=794
>
> * Secure access to the Admin Console (appengine.google.com)
> See issue 795:http://code.google.com/p/googleappengine/issues/detail?id=795
>
> Feel free to add to this list.
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: how can i get redirected url

2008-10-17 Thread Alexander Kojevnikov

Read last comments in this issue:
http://code.google.com/p/googleappengine/issues/detail?id=404

--
www.muspy.com

On Oct 18, 2:23 am, reedfly <[EMAIL PROTECTED]> wrote:
> i open an url1 with urlfetch,and url is redirected to url2,
> how can i get the url2
>
> url1->http://graph.heartrails.com/api/?text0=text888&value0=100
> url2->http://graph.heartrails.com/graph/48zsnapv.png
>
> the following is the source
> --- 
> -
>     url = "http://graph.heartrails.com/api/?text0=text888&value0=100";
>     from google.appengine.api import urlfetch
>     result = urlfetch.fetch(url)
>     if result.status_code == 200:
>         print result.content
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Passing Data Between Request Handlers

2008-10-17 Thread Anthony

You could even use cookies - or a combination of memcache & cookies
just incase one is not available.

On Oct 17, 10:46 pm, Sylvain <[EMAIL PROTECTED]> wrote:
> Use something like this
>
> def get_data():
>   data = memcache.get("key")
>   if data is not None:
>     return data
>   else:
>     data = self.query_for_data()
>     memcache.add("key", data, 60)
>     return data
>
> or simply : memcache.set(.)
>
> On 17 oct, 22:33, adrian <[EMAIL PROTECTED]> wrote:
>
> > Yes that did the job.  I deleted the key before adding each time since
> > the doc is vague.
>
> > The doc says add():
>
> > "Sets a key's value, if and only if the item is not already in
> > memcache."
>
> > The word "item" is vague, it should be replaced with "key" or "value".
>
> > Thanks Sylvain.
>
> > On Oct 17, 11:57 am, Sylvain <[EMAIL PROTECTED]> wrote:
>
> > > memcache ?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Since 1.1.5 import cgi/urllib/traceback/etc fails (on MacOS)

2008-10-17 Thread Tomas

setting correct PYTHONPATH variable in .bashrc worked for me. I have
python from macports, so it was like this, you path might be
different:
PYTHONPATH="/opt/local/var/macports/software/python25/2.5.1_4+darwin_9/
opt/local/lib/python2.5"

On Oct 6, 6:59 pm, "Marzia Niccolai" <[EMAIL PROTECTED]> wrote:
> Hi,
>
> What is the Python Path that you have in your launcher?
>
> Thanks,
> MarziaOn Sun, Oct 5, 2008 at 2:17 PM, Gijsbert <[EMAIL PROTECTED]> wrote:
>
> > Hi,
>
> > Since upgrading to GAE 1.1.5 my app stopped working, dev_appserver.py
> > can't import cgi, urllib, traceback, etc:
>
> > : No module named cgi
> >      args = ('No module named cgi',)
> >      message = 'No module named cgi
>
> > Importing these from python2.5 shell works fine.
>
> > It might be a MacOS (10.5.5) issue, I just ran the same app on my
> > linux box and it works there (well, I could not import
> > wsgiref.handlers any more, but changing to run_wsgi_app() made that
> > import unnecessary).
>
> > A fix would be awesome, since my linux box is old and cranky.
>
> > Best regards,
> > Gijsbert

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Definition of "Google's Infrastructure"

2008-10-17 Thread Alexander Konovalenko

On Oct 8, 11:17 am, Jon McAlister <[EMAIL PROTECTED]> wrote:
> Regarding the CDN case is markedly different from the datastore case,
> since you're just dealing with immutable blobs. This is not the thorny
> issue.

I think I've got an idea. If there is a major problem that takes all
the servers that are able to serve my app offline, it would be nice if
the app could still operate in read-only mode from a backup data
center on another continent.

Many apps can indeed stay useful in read-only mode. And it might
significantly alleviate the pain of service disruption for users.

This looks like a feasible thing to implement. I'll describe it from
the point of view of a single app. Several backup snapshots of the
datastore could be continually maintained in remote data centers. The
snapshots would lag behind the master copy a minute or two (or more),
so they wouldn't have to be located close to the master copy, which is
the point.

When a severe service disruption affecting all master data centers is
detected, the app's DNS quickly fails over to a backup data center,
where the app continues to run in read-only mode using the last
datastore snapshot. The application should detect the read-only mode
to make sure it doesn't try to write anything to the database and to
inform the users.

When the problems have been settled, the app reverts to normal read-
write mode. Most of the time the old master data center would take
over. If it has been destroyed or something, one of the backup data
centers could be manually made the master for this particular app. In
that case, several minutes worth of data would be lost, but that seems
acceptable for a complete destruction of the original data centers.

I don't know whether there are serious holes in this outline, because
I'm not really a distributed systems guy. Does it make sense?

Jon, do you think it's worth to file an issue about this?

 -- Alexander
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Passing Data Between Request Handlers

2008-10-17 Thread Sylvain

Use something like this

def get_data():
  data = memcache.get("key")
  if data is not None:
return data
  else:
data = self.query_for_data()
memcache.add("key", data, 60)
return data

or simply : memcache.set(.)



On 17 oct, 22:33, adrian <[EMAIL PROTECTED]> wrote:
> Yes that did the job.  I deleted the key before adding each time since
> the doc is vague.
>
> The doc says add():
>
> "Sets a key's value, if and only if the item is not already in
> memcache."
>
> The word "item" is vague, it should be replaced with "key" or "value".
>
> Thanks Sylvain.
>
> On Oct 17, 11:57 am, Sylvain <[EMAIL PROTECTED]> wrote:
>
> > memcache ?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: 1000 mcycles to update a single entity

2008-10-17 Thread Denis

-- I've seen 15000 mcycle be consumed by a request that took less then
two seconds to actually get rendered in my browser.--

I'm importing data into my new app. A single requests puts 500
something entities (one entity group, two db.put() to workaround the
500 entities per single put() limitation). The whole request is
usually takes less than 1 second. But the CPU consumption is
enourmous: 400,000 mcycles (400 Gigacycles) on average request.

As you can see, there is no correlation between CPU usage and timing.

BTW, these 400 Gigacycle requests produce warnings that they "used a
high amount of CPU were roughly 1.2 times over the average request CPU
limit". Just 1.2 times. In another application I get "1.6 times"
warnings for requests that consume about 100 times less CPU. Go figure!

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: SMS Activation Down

2008-10-17 Thread johnw

now getting "The phone number has been sent too many messages or has
already been used to confirm an account."

but have not received any text msgs


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Passing Data Between Request Handlers

2008-10-17 Thread adrian

Yes that did the job.  I deleted the key before adding each time since
the doc is vague.

The doc says add():

"Sets a key's value, if and only if the item is not already in
memcache."

The word "item" is vague, it should be replaced with "key" or "value".

Thanks Sylvain.

On Oct 17, 11:57 am, Sylvain <[EMAIL PROTECTED]> wrote:
> memcache ?

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Feature Request?

2008-10-17 Thread Wooble



On Oct 17, 12:52 pm, "Ethan Post" <[EMAIL PROTECTED]> wrote:
> I guess
> I could skip the datastore entirely for some features and use memcache,
> which I might do, I just have not had time to play around with that yet.

It's almost certainly a bad idea to rely on memcache for a queue;
there's no guarantee that what you put in will come out when you want
it.
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: counter

2008-10-17 Thread Peter Recore

On Oct 17, 1:32 pm, "Robert J. Carr" <[EMAIL PROTECTED]> wrote:

> Anyway ... thanks for the notes, just seems a strange solution when
> simple aggregates would make it simple.

Sometimes I think the datastore API *should* have generic sharded
counter functionality built in, as this would make programming
slightly easier.  But I also *like* the lack of such a basic feature,
because it shocks many newcomers into finally realizing that the
datastore is not in fact a SQL database with a funny name, while also
providing a gentle introduction to powerful concepts like sharding.
In fact, maybe implementing a sharded counter should be a rite of
passage for everyone in the GAE community :)
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Creating web forms in GAE

2008-10-17 Thread Davide Rognoni

I think:
- Servlets are old (now I'm using Struts2)
- I like Python to build web prototypes,
- and Java static typization for big projects.
- GWT output is Javascript/HTML (it is simple to put into GAE)
- if you are thinking "integration" as GWT made with Python, a good
way is Jython (now I'm using IronPython .NET/Mono for my web browser:
this is another integration way)

On Oct 17, 7:51 am, "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]> wrote:
> And what about using python to make server side code instead of java
> servlets? Is that a proper way to integrate GAE and GWT? Excuse me
> for my bad english.
>
> On Oct 17, 1:49 am, Davide Rognoni <[EMAIL PROTECTED]> wrote:
>
> > I like the idea of a GAE Java version: it will run under Tomcat.
>
> > On Oct 16, 3:50 am, "[EMAIL PROTECTED]"
>
> > <[EMAIL PROTECTED]> wrote:
> > > Thanks, David! I thought that my first attempt to ask question have
> > > failed. And what do you think about Java in GAE ?
>
> > > Davide Rognoni wrote:
> > > > "web forms with  widgets in Django"
> > > >http://docs.djangoproject.com/en/dev/ref/forms/widgets/
>
> > > > On Oct 15, 3:38 pm, "[EMAIL PROTECTED]"
> > > > <[EMAIL PROTECTED]> wrote:
> > > > > Hi,
> > > > > Can anybody say please, what ways exist in GAE environment to create
> > > > > web forms like in GWT widgets library. Is it possible to use tcl\tk
> > > > > from python? Thanks in advance!
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: counter

2008-10-17 Thread Robert J. Carr

Hey Jeff and Sylvain-

Thanks for the info on the shard counter.  I've been looking it over
and I don't completely understand the code, I understand the idea.

However, it is hard for me to believe it is a contention issue because
this is a very low traffic download.  Something around 1 download
every two hours.  The shard solution degrades to my counting solution
when the cache has expired.

Anyway ... thanks for the notes, just seems a strange solution when
simple aggregates would make it simple.

On Fri, Oct 17, 2008 at 10:24 AM, Jeff S <[EMAIL PROTECTED]> wrote:
>
> The reason that you are seeing timeouts, is that you have too many put
> transactions overlapping one another (contention). When a transaction
> fails, it is automatically retried. The sample that Sylvain pointed to
> is an excellent solution to this common design problem. The sharded
> counter avoids write contention by splitting the writes over multiple
> entities. The faster the counter is being incremented, the more shards
> you will need. This technique is an example of "scaling horizontally".
> Here's another great design for a sharded counter, written by Bill
> Katz:
>
> http://oji.me/px
>
> Happy coding,
>
> Jeff
>
> P.S. The Google I/O presentation that Sylvain's sharded counter was
> from can be found here: 
> http://sites.google.com/site/io/building-scalable-web-applications-with-google-app-engine
> Counters are explained starting at around 19 minutes in.
>
>
>
> On Oct 17, 9:59 am, Sylvain <[EMAIL PROTECTED]> wrote:
>> Use this :http://paste.blixt.org/1581
>>
>> From Google I/O
>>
>> On 17 oct, 08:03, rjcarr <[EMAIL PROTECTED]> wrote:
>>
>>
>>
>> > I have a simple app engine app that offers a download.  I catch the
>> > download request and record the time of the download in the data store
>> > before sending the file.  I'd also like to keep track of the total
>> > number of downloads.  Obviously, the number of rows in the data store
>> > represents the total number of downloads.
>>
>> > However, looking at the API, the count() method of Query return a
>> > maximum of 1000.  This won't work because my number will grow much
>> > larger than that.
>>
>> > So as a fix I added a count field to my data model so that the count
>> > is updated upon every request.  It looks something like this:
>>
>> > class Counter(db.Model):
>> >   count = db.IntegerProperty()
>> >   date = db.DateTimeProperty(auto_now_add=True)
>>
>> > class DownloadHandler(webapp.RequestHandler):
>> > def get(self):
>> > query = Counter.all()
>> > query.order("-count")
>>
>> > counter = query.fetch(1)
>> > count = counter[0].count
>>
>> > counter = Counter()
>> > counter.count = count + 1
>> > counter.put()
>>
>> > This works, but I'm seeing quite a few timeout errors in the logs.
>>
>> > So, what am I missing?  Is there a better way to keep track of a
>> > counter?  I'd prefer to make the counter persistent and not simply a
>> > member of the class as that seems volatile and likely to reset (say,
>> > on a redeploy).
> >
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: key_name length limits?

2008-10-17 Thread Andy Freeman

Thanks.

I use a variety of db.Models and wanted some more error checking so I
wrote something a bit more general but it's basically the same idea.
(Since root instances can have key names instead of ids, I use
whatever is there.  I include the model names and enough structure so
I can see what the input instances were and could even parse it to
db.Key.from_path() them if necessary.)

I also compare what I generate to the length of the str of the key and
use whatever is shorter.

On Oct 17, 5:14 am, Ross Ridge <[EMAIL PROTECTED]> wrote:
> Andy Freeman wrote:
> > > I'd assumed that the length of a db.Model instance's db.Key().name()
> > > was a constant plus a linear function of the depth the entity in its
> > > entity group.]
>
> > As I wrote above, I should have said length of str(db.Key() instance).
>
> > db.Key's __str__ definition on google/appengine/api/
> > datastore_types.py, line 404 says
>
> >     Unfortunately, this string encoding isn't particularly compact,
> > and its
> >     length varies with the length of the path. If you want a shorter
> > identifier
> >     and you know the kind and parent (if any) ahead of time, consider
> > using just
> >     the entity's id or name.
>
> The string contains all the elements of key's path encoded for use in
> a URL, so length of generated string will be proportional to the sum
> of the length of all the components.  The only unknown here is the
> length ids that the production server generates, but unless Google is
> using something GUIDs they shouldn't be too long.
>
> As the comment suggests you can get a more compact string by
> generating it yourself.  If all your kinds are the same you could use
> something like:
>
>     def id_path_string(entity):
>         parent = entity.parent()
>         if parent == None:
>             return hex(entity.key.id())
>         return id_path_string(parent) + ":" + hex(entity.key.id())
>
>                                         Ross Ridge- Hide quoted text -
>
> - Show quoted text -
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: HTTPS Support for appspot.com

2008-10-17 Thread Alexander Konovalenko

HTTPS support is really great.

Here is a summary of remaining security issues with App Engine.

* Support HTTPS for arbitrary domains (not just *.appspot.com)
This request is being tracked in issue 792:
http://code.google.com/p/googleappengine/issues/detail?id=792

* urlfetch doesn't verify HTTPS certificates
See issue 46 http://code.google.com/p/googleappengine/issues/detail?id=46,
which is now (for some reason beyond my understanding) a duplicate
of issue 61: http://code.google.com/p/googleappengine/issues/detail?id=61

* Mail API should support TLS
See issue 497: http://code.google.com/p/googleappengine/issues/detail?id=497

* Uploading the app to App Engine servers over HTTPS
See issue 794: http://code.google.com/p/googleappengine/issues/detail?id=794

* Secure access to the Admin Console (appengine.google.com)
See issue 795: http://code.google.com/p/googleappengine/issues/detail?id=795

Feel free to add to this list.

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Deploy problem on all my apps today.

2008-10-17 Thread fazy

I have the problem too.
app id: xulpix

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Deploy problem on all my apps today.

2008-10-17 Thread Marzia Niccolai
New applications deployments should now be succeeding.  For more
information, see the App Engine Downtime Notify group.

-Marzia

On Fri, Oct 17, 2008 at 9:23 AM, fazy <[EMAIL PROTECTED]> wrote:

>
> I have the problem too.
> app id: xulpix
>
> >
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: counter

2008-10-17 Thread Jeff S

The reason that you are seeing timeouts, is that you have too many put
transactions overlapping one another (contention). When a transaction
fails, it is automatically retried. The sample that Sylvain pointed to
is an excellent solution to this common design problem. The sharded
counter avoids write contention by splitting the writes over multiple
entities. The faster the counter is being incremented, the more shards
you will need. This technique is an example of "scaling horizontally".
Here's another great design for a sharded counter, written by Bill
Katz:

http://oji.me/px

Happy coding,

Jeff

P.S. The Google I/O presentation that Sylvain's sharded counter was
from can be found here: 
http://sites.google.com/site/io/building-scalable-web-applications-with-google-app-engine
Counters are explained starting at around 19 minutes in.



On Oct 17, 9:59 am, Sylvain <[EMAIL PROTECTED]> wrote:
> Use this :http://paste.blixt.org/1581
>
> From Google I/O
>
> On 17 oct, 08:03, rjcarr <[EMAIL PROTECTED]> wrote:
>
>
>
> > I have a simple app engine app that offers a download.  I catch the
> > download request and record the time of the download in the data store
> > before sending the file.  I'd also like to keep track of the total
> > number of downloads.  Obviously, the number of rows in the data store
> > represents the total number of downloads.
>
> > However, looking at the API, the count() method of Query return a
> > maximum of 1000.  This won't work because my number will grow much
> > larger than that.
>
> > So as a fix I added a count field to my data model so that the count
> > is updated upon every request.  It looks something like this:
>
> > class Counter(db.Model):
> >   count = db.IntegerProperty()
> >   date = db.DateTimeProperty(auto_now_add=True)
>
> > class DownloadHandler(webapp.RequestHandler):
> >         def get(self):
> >                 query = Counter.all()
> >                 query.order("-count")
>
> >                 counter = query.fetch(1)
> >                 count = counter[0].count
>
> >                 counter = Counter()
> >                 counter.count = count + 1
> >                 counter.put()
>
> > This works, but I'm seeing quite a few timeout errors in the logs.
>
> > So, what am I missing?  Is there a better way to keep track of a
> > counter?  I'd prefer to make the counter persistent and not simply a
> > member of the class as that seems volatile and likely to reset (say,
> > on a redeploy).
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Datastore storage recommendation...

2008-10-17 Thread Josh Heitzman

Haven't tried it, but I found that a class derived from Model with one
attribute of type BlobProperty has the same baseline time as one with
an empty StringListProperty.  Further both of those are slightly
faster then a Model with an single IntegerProperty.  This makes sense
as I wouldn't expect the BlobProperty to do anything with its data and
I would expect StringListProperty to get no further then checking the
number of items in the list in its processing.

On Oct 17, 7:25 am, David koblas <[EMAIL PROTECTED]> wrote:
> That's at least interesting from an update standpoint.  If I read that
> correctly the biggest overhead is the DS Put operation, so the
> optimization of moving everything to single entry ID/Key/Value stores
> would cause problems during updates.  Though as a difference I'm using
> the Entity object directly not the Django Model abstraction.  Was there
> any noted performance differences with that test (eg. Are the *Property
> bits using a lot of time)
>
> Josh Heitzman wrote:
> > Seehttp://groups.google.com/group/google-appengine/browse_thread/thread/...
> > regarding the mcycle consumption impact of having lots of fields.
>
> > On Oct 16, 9:11 pm, David koblas <[EMAIL PROTECTED]> wrote:
>
> >> I'm storing application preferences in the datastore, they come in a
> >> variety of types.  As I see it I've got three choices for implementation:
>
> >> * Name / Blob
> >>   -- "general" has a json encoded object of all of the sub-settings
> >> * Name / ID / Lots of Fields
> >>   --  Where ID = "general" or "user" (etc.) and different fields in
> >>   each entity
> >> * Name / ID / Key  / Value
> >>   -- Where you  query out all of the "user" settings and
> >>   re-construct an object from it.
>
> >> My gut feel is that #2 is preferable, since it avoids double encoding
> >> the data and doing a query out of a large number of records in the later
> >> case.
>
> >> Thanks,
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: HTTPS Support for appspot.com

2008-10-17 Thread Satish

Thank you !

On Oct 17, 4:15 pm, conman <[EMAIL PROTECTED]>
wrote:
> Oh Boy!!
>
> That are great news!! Thanks for your _excellent_ work!
>
> Regards,
> Constantin
>
> On 17 Okt., 00:03, "Marzia Niccolai" <[EMAIL PROTECTED]> wrote:
>
> > One of the most frequently requested features for App Engine has been HTTPS
> > serving capabilities.  Today we're excited to announce that App Engine now
> > supports incoming HTTPS connections using a certificate valid for all
> > appspot.com URLs.  Here's how it works:
>
> > * app.yaml files now support a new handler attribute, called "secure":
>
> > - url: /accounts/.*
> >   script: admin.py
> >   login: admin
> >   *secure: always*
>
> > *This attribute can be either "always", "optional", or "never" (default),
> > and determines the behavior of the handler for HTTP and HTTPS requests.  See
> > our documentation for more 
> > details:http://code.google.com/appengine/docs/configuringanapp.html#Secure_URLs
>
> > * HTTPS requests have their own bandwidth quotas, but also count toward your
> > total bandwidth quotas.  You can monitor these quotas on your dashboard.
>
> > You may be wondering why we're only supporting appspot.com right now, and
> > not arbitrary Google Apps domains.  This has to do with fundamental
> > limitations in the SSL protocol 
> > (see:http://en.wikipedia.org/wiki/Https#Limitations).  We're currently
> > investigating workarounds for this using e.g.
> > SNI 
> > (http://en.wikipedia.org/wiki/Server_Name_Indication), which provides a
> > viable solution for newer browsers--we'll keep you posted!
>
> > This functionality is already available starting with the 1.1.5 SDK.
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: counter

2008-10-17 Thread Sylvain

Use this : http://paste.blixt.org/1581

>From Google I/O

On 17 oct, 08:03, rjcarr <[EMAIL PROTECTED]> wrote:
> I have a simple app engine app that offers a download.  I catch the
> download request and record the time of the download in the data store
> before sending the file.  I'd also like to keep track of the total
> number of downloads.  Obviously, the number of rows in the data store
> represents the total number of downloads.
>
> However, looking at the API, the count() method of Query return a
> maximum of 1000.  This won't work because my number will grow much
> larger than that.
>
> So as a fix I added a count field to my data model so that the count
> is updated upon every request.  It looks something like this:
>
> class Counter(db.Model):
>   count = db.IntegerProperty()
>   date = db.DateTimeProperty(auto_now_add=True)
>
> class DownloadHandler(webapp.RequestHandler):
> def get(self):
> query = Counter.all()
> query.order("-count")
>
> counter = query.fetch(1)
> count = counter[0].count
>
> counter = Counter()
> counter.count = count + 1
> counter.put()
>
> This works, but I'm seeing quite a few timeout errors in the logs.
>
> So, what am I missing?  Is there a better way to keep track of a
> counter?  I'd prefer to make the counter persistent and not simply a
> member of the class as that seems volatile and likely to reset (say,
> on a redeploy).
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Passing Data Between Request Handlers

2008-10-17 Thread Sylvain

memcache ?

On 17 oct, 16:17, adrian <[EMAIL PROTECTED]> wrote:
> A user enters some data in a form, and the Post is processed in one
> request handler, and I sometimes want to be able to read it in another
> request handler.   How do I do that cleanly?
>
> I have tried globals, but it does not work; I suppose because the
> request handlers are called from another module where the globals are
> out of scope.   I could use the datastore but that seems overkill - I
> don't need persistance beyond displaying the next page.
>
> Here's what I want to do in psuedocode:
>
> class OneHandler(webapp.RequestHandler):
>   def post(self):
>   # do more stuff
>myvar = 'foo'
>   # certain cases redirect to /further, which calls AnotherHandler
>
> class AnotherHandler(webapp.RequestHandler):
>   def post(self):
>   # need to read myvar here
>   access = myvar
>   # use value of myvar to customize html and control JavaScript to
> set focus
>
> application = webapp.WSGIApplication(
> [('/', OneHandler),
> ('/further', AnotherHandler),
> 
>
> Thanks for your help...
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Feature Request?

2008-10-17 Thread Ethan Post
I understand the concern. This would be just be an option, you would likely
not have the same degree of assurance that the item has actually been read
without error. Just looking for ways to keep mcycles down which G must be
very concerned about based on the low thresholds they have set up for
warnings. Based on elapsed time (I can not get mcycle info per call/code
unit) it appears puts and deletes probably utilize the most mcycles. I would
be fine with this feature even if I lose some data for my purposes. I guess
I could skip the datastore entirely for some features and use memcache,
which I might do, I just have not had time to play around with that yet.

On Fri, Oct 17, 2008 at 11:24 AM, Josh Heitzman <[EMAIL PROTECTED]>wrote:

>
> I wouldn't want the item deleted until I had done whatever processing
> I needed to do with its data to ensure it didn't get lost due to a
> raised exception or crashed machine.
>
>
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Deploy problem on all my apps today.

2008-10-17 Thread Marzia Niccolai
Hi,

There seems to be an issue with deploying new indexes this morning. Our
engineering team is currently looking in to the issue.

-Marzia

On Fri, Oct 17, 2008 at 9:28 AM, Sylvain <[EMAIL PROTECTED]> wrote:

>
> Same here.
>
> App Id = hordes
>
> On 17 oct, 18:20, "Marzia Niccolai" <[EMAIL PROTECTED]> wrote:
> > Thanks for the report.  I'm looking in to trazi.  To Tony and Anthony,
> what
> > app ids are you seeing this with?
> >
> > -Marzia
> >
> > On Fri, Oct 17, 2008 at 8:10 AM, Matija <[EMAIL PROTECTED]>
> wrote:
> >
> > > Me too.
> >
> > > For Marzia Niccolai my application id is: trazi
> >
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Deploy problem on all my apps today.

2008-10-17 Thread Sylvain

Same here.

App Id = hordes

On 17 oct, 18:20, "Marzia Niccolai" <[EMAIL PROTECTED]> wrote:
> Thanks for the report.  I'm looking in to trazi.  To Tony and Anthony, what
> app ids are you seeing this with?
>
> -Marzia
>
> On Fri, Oct 17, 2008 at 8:10 AM, Matija <[EMAIL PROTECTED]> wrote:
>
> > Me too.
>
> > For Marzia Niccolai my application id is: trazi
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Feature Request?

2008-10-17 Thread Josh Heitzman

I wouldn't want the item deleted until I had done whatever processing
I needed to do with its data to ensure it didn't get lost due to a
raised exception or crashed machine.

On Oct 17, 9:18 am, "Ethan Post" <[EMAIL PROTECTED]> wrote:
> A common task (queueing) is "fetchitem...delete the item once it has been
> fetched". Right now that requires a get/fetch and a call to db.delete at
> some point. It would be nice if there was a particular attribute that could
> be set in the get which would automatically delete the item once it has been
> fetched. Google could figure out the most efficient mechanism for doing this
> on the backend and we end up saving mcycles by not having to call the delete
> for this type of db request.
>
> Stupid? Not stupid? Would anyone else like this feature?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Deploy problem on all my apps today.

2008-10-17 Thread Marzia Niccolai
Thanks for the report.  I'm looking in to trazi.  To Tony and Anthony, what
app ids are you seeing this with?

-Marzia

On Fri, Oct 17, 2008 at 8:10 AM, Matija <[EMAIL PROTECTED]> wrote:

>
> Me too.
>
> For Marzia Niccolai my application id is: trazi
>
> >
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Feature Request?

2008-10-17 Thread Ethan Post
A common task (queueing) is "fetchitem...delete the item once it has been
fetched". Right now that requires a get/fetch and a call to db.delete at
some point. It would be nice if there was a particular attribute that could
be set in the get which would automatically delete the item once it has been
fetched. Google could figure out the most efficient mechanism for doing this
on the backend and we end up saving mcycles by not having to call the delete
for this type of db request.

Stupid? Not stupid? Would anyone else like this feature?

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Is there a way to get mcycles in code?

2008-10-17 Thread Ethan Post
Starred it, thanks.

On Thu, Oct 16, 2008 at 4:30 PM, Josh Heitzman <[EMAIL PROTECTED]>wrote:

>
> Just opened http://code.google.com/p/googleappengine/issues/detail?id=789
> - API to get current mcycle consumption during request processing.
>
> On Oct 16, 9:04 am, "Ethan Post" <[EMAIL PROTECTED]> wrote:
> > I would like to include the # of mcycles consumed in some of my logging.
> At
> > the moment it a put to two entities has occasional timeouts and the
> number
> > of mcycles appears to fluctuate for essentially the same put. I would
> like
> > to add some logging to see if this is the case and if so what the
> variations
> > are.
> >
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] counter

2008-10-17 Thread rjcarr

I have a simple app engine app that offers a download.  I catch the
download request and record the time of the download in the data store
before sending the file.  I'd also like to keep track of the total
number of downloads.  Obviously, the number of rows in the data store
represents the total number of downloads.

However, looking at the API, the count() method of Query return a
maximum of 1000.  This won't work because my number will grow much
larger than that.

So as a fix I added a count field to my data model so that the count
is updated upon every request.  It looks something like this:

class Counter(db.Model):
  count = db.IntegerProperty()
  date = db.DateTimeProperty(auto_now_add=True)

class DownloadHandler(webapp.RequestHandler):
def get(self):
query = Counter.all()
query.order("-count")

counter = query.fetch(1)
count = counter[0].count

counter = Counter()
counter.count = count + 1
counter.put()

This works, but I'm seeing quite a few timeout errors in the logs.

So, what am I missing?  Is there a better way to keep track of a
counter?  I'd prefer to make the counter persistent and not simply a
member of the class as that seems volatile and likely to reset (say,
on a redeploy).




--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Sample code of i18n on GAE+Django

2008-10-17 Thread Alexander Orlov

On Sep 22, 4:00 pm, A.TNG <[EMAIL PROTECTED]> wrote:
> Originally in Django, locale could be set via session. But GAE cannot
> work with session in Django. So I tried to set
> settings.LANGUAGE_CODE='zh-cn' directly to make i18n works
> dynamically. It works.

I have extended the example "webappi18n" with
"settings.LANGUAGE_CODE='zh-cn'"  inserting it after
"self.response.out.write(_('hello'))" and got this error:
AttributeError: 'NoneType' object has no attribute 'LANGUAGE_CODE'.

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: datastore exception handling examples

2008-10-17 Thread izaac

I got this simple method it's not finished yet but at least is using
the exceptions package from db

def post(self):

data = GuestBookForm(data=self.request.POST)
if data.is_valid():
# what's going on here, GuestBook not callable ?

user_sign = data.save(commit=False)
user_sign.user= users.get_current_user()
from google.appengine.ext.db import BadValueError
try:
user_sign.save()
except BadValueError, e:
logging.error("There was an error saving comment: %s\n
Error: %s" % (self.request.get('text'), e))

self.redirect('/guestbook')

hope it helps you

On Oct 11, 5:45 am, David <[EMAIL PROTECTED]> wrote:
> @Marzia Niccolai:
>
> thanks for taking the time to reply, I look forward to the articles
> when they come in due course.
>
> In the mean time I'll check out the example code and see what I can
> incorporate >_<
>
> @Bill:
>
> thanks, ill take a look.
>
> On Oct 10, 6:24 pm, Bill <[EMAIL PROTECTED]> wrote:
>
>
>
> > > Are there any articles or sample code, showing how to robustly handle
> > >datastoreexceptions, for production standard code?
>
> > David,
>
> > I recently modified my memcached, sharded counter system to handle
> > variousdatastoreexceptions:http://billkatz.com/2008/10/Fault-tolerant-counters-for-App-Engine
> > You can look at or copy the open source code referenced in that
> > article.
>
> > It also depends on your app requirements.  The above counter shouldn't
> > be used for banking, for example, because if there are simultaneous
> > memcache anddatastoreerrors, you lose pending increments.  But if
> > you want something that minimizes the impact of exceptions for things
> > like votes, it's a reasonable approach.
>
> > -Bill

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] how can i get redirected url

2008-10-17 Thread reedfly


i open an url1 with urlfetch,and url is redirected to url2,
how can i get the url2

url1->http://graph.heartrails.com/api/?text0=text888&value0=100
url2->http://graph.heartrails.com/graph/48zsnapv.png

the following is the source

url = "http://graph.heartrails.com/api/?text0=text888&value0=100";
from google.appengine.api import urlfetch
result = urlfetch.fetch(url)
if result.status_code == 200:
print result.content

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Sample code of i18n on GAE+Django

2008-10-17 Thread Alexander Orlov

On Sep 22, 4:00 pm, A.TNG <[EMAIL PROTECTED]> wrote:
> Originally in Django, locale could be set via session. But GAE cannot
> work with session in Django. So I tried to set
> settings.LANGUAGE_CODE='zh-cn' directly to make i18n works
> dynamically. It works.

I have done so in webappi18n.zip but got the this error msg

AttributeError: 'NoneType' object has no attribute 'LANGUAGE_CODE'

No matter where I have inserted this directive.

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Modeling mutual references

2008-10-17 Thread Dado

That's not the "point" ;) discussed here... indeed the Book model (see
below) do get a pages_set including all pages of that book, the
problem discussed here is that the Book model can't declare the
"first" property because it references the Page model which is not yet
loaded by the interpreter. Reversing the order of the models wouldn't
change the situation because the Page model depends on the Book model.
I have been getting into similar problems when creating "join" models
to implement many-to-many relationships. Perhaps the problem below
could be solved by adding a "number" property to the Page model... but
if it was done this way (with first and next) there must be a reason
for it (perhaps is a dynamic book where pages can be added/delete at
any point).

class Book(db.Model):
title = db.StringProperty()
first = db.ReferenceProperty(Page)
class Page(db.Model):
text = db.TextProperty()
next = db.SelfReferenceProperty()
book = db.ReferenceProperty(Book)

On Oct 16, 9:42 pm, Sudhir <[EMAIL PROTECTED]> wrote:
> If you add a reference to one model from the other, the other model
> automatically gets a back reference...
>
> class Point(db.Model):
>     """Store the map points"""
>     point = db.GeoPtProperty(required = True)
>     title = db.StringProperty(required = False)
>     owner =
> db.ReferenceProperty(Customer,collection_name='all_my_points')
>
> this lets me call customer.all_my_points, which returns an array of
> the point objects that are linked to that customer.
>
> The full scoop is 
> herehttp://code.google.com/appengine/docs/datastore/entitiesandmodels.htm...
>
> Sudhir
>
> On Oct 17, 6:13 am, Dado <[EMAIL PROTECTED]> wrote:
>
> > Let's say it can't be elegantly solved! ;)
>
> > On Oct 15, 9:46 pm, Andy Freeman <[EMAIL PROTECTED]> wrote:
>
> > > as yejun wrote up at the top, the following works, but doesn't verify
> > > that assignments to Book().first are instances of Page.
>
> > > class Book(db.Model):
> > >         title = db.StringProperty()
> > >         first = db.ReferenceProperty()  # note - no reference_class is
> > > specified
>
> > > class Page(db.Model):
> > >         text = db.TextProperty()
> > >         next = db.SelfReferenceProperty()
> > >         book = db.ReferenceProperty(Book)
>
> > > I don't understand very much about __metaclass__ processing, so there
> > > may be some way to define a metaclass for Book (probably involving a
> > > modified version of db.ReferenceProperty) that does provide this
> > > checking.  However, I'd be surprised if there was.
>
> > > On Oct 15, 7:18 pm, Dado <[EMAIL PROTECTED]> wrote:
>
> > > > Does that mean the aforementioned problem can't be solved?
>
> > > > On Oct 15, 12:33 pm, Andy Freeman <[EMAIL PROTECTED]> wrote:
>
> > > > > The problem really has nothing to do with how import works.  It's an
> > > > > execution order problem.
>
> > > > > Short version: yes, the problem is that Page doesn't exist when Book
> > > > > is defined.  However, it has nothing to do with imports.
>
> > > > > Long version:
>
> > > > > Import reads and executes statements from a file and makes the names
> > > > > defined by executing those statements available.
>
> > > > > Python's class definitions are actually executable statements.  (The
> > > > > organization ofhttp://docs.python.org/reference/reflectsthis
> > > > > reality.)
>
> > > > > A Python class statement executes some other statements in a context,
> > > > > some of which produce executable objects, applies some transformations
> > > > > to produce a class object, and binds that object to a variable,
> > > > > creating that variable if necessary.
>
> > > > > Python's executable objects can contain references to undefined
> > > > > things.  However, some of the db.Model transformations for
> > > > > db.ReferenceProperties depend on the specified reference_class (also a
> > > > > db.Model) having gone through that process previously.
>
> > > > > On Oct 15, 8:00 am, Dado <[EMAIL PROTECTED]> wrote:
>
> > > > > > Thanx for the clarification. I knew Python doesn't "import" like 
> > > > > > other
> > > > > > languages, and it is probably a more advanced solution. But doing it
> > > > > > the simpler way (Ruby?) allows for better file organization (for my
> > > > > > taste), with one file per model. I solved my problem by importing 
> > > > > > the
> > > > > > join model inside methods that use it, but it feels like a non-
> > > > > > efficient hack to me.
>
> > > > > > One question though. Is it right that the example shown in the first
> > > > > > post doesn't work because, the way Python "imports", Page doesn't 
> > > > > > yet
> > > > > > exists when referenced by Book?
>
> > > > > > Dado
>
> > > > > > On Oct 15, 5:47 am, Andy Freeman <[EMAIL PROTECTED]> wrote:
>
> > > > > > > Using multiple files for dbModel subclass definitions during
> > > > > > > development runs into the "GAE/python doesn't reload what hasn't
> > > > > > > changed" problem.
>
> > > > > > > 

[google-appengine] Re: Deploy problem on all my apps today.

2008-10-17 Thread Matija

Me too.

For Marzia Niccolai my application id is: trazi

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Deploy problem on all my apps today.

2008-10-17 Thread Tony Arkles

I'm seeing this too.

On Oct 17, 8:31 am, Anthony <[EMAIL PROTECTED]> wrote:
> I'm getting an error when I try to update my apps today it gets as far
> as uploading the indexes then fails...
>
> Initiating update.
> Cloning 78 static files.
> Cloning 22 application files.
> Closing update.
> Uploading index definitions.
> Error 500: --- begin server output ---
>
> Server Error (500)
> A server error has occurred.
>
> I've tried the usual 'rollback', that's not helping. It's happening on
> multiple apps, plus I see updates to static files working ok.
>
> Any ideas?
>
> Anthony
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Deploy problem on all my apps today.

2008-10-17 Thread Anthony

I'm getting an error when I try to update my apps today it gets as far
as uploading the indexes then fails...

Initiating update.
Cloning 78 static files.
Cloning 22 application files.
Closing update.
Uploading index definitions.
Error 500: --- begin server output ---

Server Error (500)
A server error has occurred.

I've tried the usual 'rollback', that's not helping. It's happening on
multiple apps, plus I see updates to static files working ok.

Any ideas?

Anthony
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Datastore storage recommendation...

2008-10-17 Thread David koblas
That's at least interesting from an update standpoint.  If I read that 
correctly the biggest overhead is the DS Put operation, so the 
optimization of moving everything to single entry ID/Key/Value stores 
would cause problems during updates.  Though as a difference I'm using 
the Entity object directly not the Django Model abstraction.  Was there 
any noted performance differences with that test (eg. Are the *Property 
bits using a lot of time)

Josh Heitzman wrote:
> See 
> http://groups.google.com/group/google-appengine/browse_thread/thread/a29a4b1dd606f52e
> regarding the mcycle consumption impact of having lots of fields.
>
> On Oct 16, 9:11 pm, David koblas <[EMAIL PROTECTED]> wrote:
>   
>> I'm storing application preferences in the datastore, they come in a
>> variety of types.  As I see it I've got three choices for implementation:
>>
>> * Name / Blob
>>   -- "general" has a json encoded object of all of the sub-settings
>> * Name / ID / Lots of Fields
>>   --  Where ID = "general" or "user" (etc.) and different fields in
>>   each entity
>> * Name / ID / Key  / Value
>>   -- Where you  query out all of the "user" settings and
>>   re-construct an object from it.
>>
>> My gut feel is that #2 is preferable, since it avoids double encoding
>> the data and doing a query out of a large number of records in the later
>> case.
>>
>> Thanks,
>> 
> >
>   

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Passing Data Between Request Handlers

2008-10-17 Thread adrian


A user enters some data in a form, and the Post is processed in one
request handler, and I sometimes want to be able to read it in another
request handler.   How do I do that cleanly?

I have tried globals, but it does not work; I suppose because the
request handlers are called from another module where the globals are
out of scope.   I could use the datastore but that seems overkill - I
don't need persistance beyond displaying the next page.

Here's what I want to do in psuedocode:

class OneHandler(webapp.RequestHandler):
  def post(self):
  # do more stuff
   myvar = 'foo'
  # certain cases redirect to /further, which calls AnotherHandler

class AnotherHandler(webapp.RequestHandler):
  def post(self):
  # need to read myvar here
  access = myvar
  # use value of myvar to customize html and control JavaScript to
set focus

application = webapp.WSGIApplication(
[('/', OneHandler),
('/further', AnotherHandler),


Thanks for your help...

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Bulkloadclient Loading of related tables data

2008-10-17 Thread Alan

Mahmoud,

Oh yes, and I do want to finally populate the production site as well

Alan...

On Oct 16, 4:13 pm, Mahmoud <[EMAIL PROTECTED]> wrote:
> Are you trying to load the data in production or the local datastore?
>
> I found it much easier to load data using either one of these methods:
> 1. Write a python script that loads the data for you. For example, I
> access mine via:http://localhost:8080/load
>
> 2. Use Fixture!:
> Fixture is pretty awesome. We use it to load test data for our unit
> and functional tests. You can use the datastore file created by
> fixture with 
> dev_appserver.http://farmdev.com/projects/fixture/using-fixture-with-appengine.html
>
> -Mahmoud
>
> On Oct 16, 9:20 am, Alan <[EMAIL PROTECTED]> wrote:
>
>
>
> > I don't know if you can help but I wonder if you’ve tried doing a bulk
> > load on existing tables with a relation. I’ve tried but come up
> > against a problem . I used the bulkloader example.
> > This is my schema.
>
> > Member — Running club member
> > Race — a race event racename,date, distance
> > Runner — is child of Member and Race being the time for the race taken
> > by the member.
>
> > -- These are my models
>
> > from google.appengine.ext import webapp
> > from google.appengine.ext import db
>
> > class Member(db.Model):
> >   memberid       = db.StringProperty()
> >   name           = db.StringProperty()
> >   category       = db.StringProperty()
> >   currentMember  = db.StringProperty()
> > member = Member()
> > member.put()
>
> > class Race(db.Model):
> >   raceid   = db.StringProperty()
> >   name     = db.StringProperty()
> >   date     = db.StringProperty()
> >   distance = db.StringProperty()
> >   units    = db.StringProperty()
> > race = Race()
> > race.put()
> > class Runner(db.Model):
> >   racerunner  = db.StringProperty()
> >   raceid     = db.StringProperty()
> >   runnerid   = db.StringProperty()
> >   runnername = db.StringProperty()
> >   race       = db.ReferenceProperty(reference_class=Race)
> >   member     = db.ReferenceProperty(reference_class=Member)
> >   time       = db.StringProperty()
> >   position   = db.StringProperty()
> >   category   = db.StringProperty()
> >   WAVA       = db.StringProperty()
> >   pace       = db.StringProperty()
> >   notes      = db.StringProperty()
> > runner = Runner()
> > runner.put()
> > #This is my data to load
> > #Runner.csv
> > 00310017,0031,0017,Bil Salters,2:32:05,M40,94,59.87,9:30,NOMATCH
> > 00310016,0031,0016,Iian Sallis,2:40:26,SM,103,57.59,10:01,NOMATCH
> > 00320018,0032,0018,Jon Church,35:02,SM,67.34,6:29,2nd M40
> > 00320019,0032,0019,Sarah Church,51:39,F45,105,51.26,9:33,3rd F45
> > #member.csv
> > 0017,Bil Salters,M40,Yes
> > 0016,Iian Sallis,SM,No
> > 0018,Jon Church,SM,Yes
> > 0019,Sarah Church,F45,No
> > #race.csv
> > 0031,North Mids XC Race 3 (men) ,13-01-2007,6.5,miles
> > 0032,Bedford Half Marathon ,10-12-2006,13.1,miles
>
> > I tried to load Runner with this:
> > #myRunnerloader.py
> > from google.appengine.ext import bulkload
> > from google.appengine.api import datastore_types
> > from google.appengine.api import datastore_entities
> > from google.appengine.ext import search
> > class RunnerLoader(bulkload.Loader):
> >   def __init__(self):
> >     # Our 'Race' entity contains an id name string date distance and
> > units
> >     bulkload.Loader.__init__(self, 'Runner',
> >                          [('racerunner', str),
> >                           ('raceid', str),
> >                           ('runnerid', str),
> >                           ('runnername', str),
> >                           ('time', str),
> >                           ('position', str),
> >                           ('category', str),
> >                           ('WAVA', str),
> >                           ('pace', str),
> >                           ('notes', str),
> >                           ])
> >   def HandleEntity(self, entity):
> >     runner = datastore_entities.Runner(racerunner)
> >     runner.update(entity)
>
> >     raceid = runner['raceid']
> >     runnerid = runner['runnerid']
> >     if raceid:
> >         race = datastore.Query('Race',{'raceid': raceid}).Get(1)
> >         if not race:
> >             race = [datastore_entities.Race(raceid)]
> >             datastore.Put(race[0])
> >         runner['race'] = race[0].key()
> >     if runnerid:
> >         member = datastore.Query('Member',{'runnerid':
> > runnerid}).Get(1)
> >         if not member:
> >             member = [datastore_entities.Member(runnerid)]
> >             datastore.Put(member[0])
> > ['member'] = member[0].key()
> >     return runner
> > if __name__ == '__main__':
> >   bulkload.main(RunnerLoader())
>
> > #And this cmd command on XP
> >         runnercd C:\Google_apps
> > python "C:\Program Files\Google\google_appengine\tools
> > \bulkload_client.py"
> > --filename C:\Google_apps\data\Runnerfull.csv
> > --kind Runner
> > --urlhttp://127.0.0.1:8080/runnerload
> > And I get this error:
>
> > C:\Documents and Settings\Alan M

[google-appengine] Re: Bulkloadclient Loading of related tables data

2008-10-17 Thread Alan

Mahmoud,

fixture looks good thanks.
About the load script, how is it basically constructed?

Alan...


On Oct 16, 4:13 pm, Mahmoud <[EMAIL PROTECTED]> wrote:
> Are you trying to load the data in production or the local datastore?
>
> I found it much easier to load data using either one of these methods:
> 1. Write a python script that loads the data for you. For example, I
> access mine via:http://localhost:8080/load
>
> 2. Use Fixture!:
> Fixture is pretty awesome. We use it to load test data for our unit
> and functional tests. You can use the datastore file created by
> fixture with 
> dev_appserver.http://farmdev.com/projects/fixture/using-fixture-with-appengine.html
>
> -Mahmoud
>
> On Oct 16, 9:20 am, Alan <[EMAIL PROTECTED]> wrote:
>
>
>
> > I don't know if you can help but I wonder if you’ve tried doing a bulk
> > load on existing tables with a relation. I’ve tried but come up
> > against a problem . I used the bulkloader example.
> > This is my schema.
>
> > Member — Running club member
> > Race — a race event racename,date, distance
> > Runner — is child of Member and Race being the time for the race taken
> > by the member.
>
> > -- These are my models
>
> > from google.appengine.ext import webapp
> > from google.appengine.ext import db
>
> > class Member(db.Model):
> >   memberid       = db.StringProperty()
> >   name           = db.StringProperty()
> >   category       = db.StringProperty()
> >   currentMember  = db.StringProperty()
> > member = Member()
> > member.put()
>
> > class Race(db.Model):
> >   raceid   = db.StringProperty()
> >   name     = db.StringProperty()
> >   date     = db.StringProperty()
> >   distance = db.StringProperty()
> >   units    = db.StringProperty()
> > race = Race()
> > race.put()
> > class Runner(db.Model):
> >   racerunner  = db.StringProperty()
> >   raceid     = db.StringProperty()
> >   runnerid   = db.StringProperty()
> >   runnername = db.StringProperty()
> >   race       = db.ReferenceProperty(reference_class=Race)
> >   member     = db.ReferenceProperty(reference_class=Member)
> >   time       = db.StringProperty()
> >   position   = db.StringProperty()
> >   category   = db.StringProperty()
> >   WAVA       = db.StringProperty()
> >   pace       = db.StringProperty()
> >   notes      = db.StringProperty()
> > runner = Runner()
> > runner.put()
> > #This is my data to load
> > #Runner.csv
> > 00310017,0031,0017,Bil Salters,2:32:05,M40,94,59.87,9:30,NOMATCH
> > 00310016,0031,0016,Iian Sallis,2:40:26,SM,103,57.59,10:01,NOMATCH
> > 00320018,0032,0018,Jon Church,35:02,SM,67.34,6:29,2nd M40
> > 00320019,0032,0019,Sarah Church,51:39,F45,105,51.26,9:33,3rd F45
> > #member.csv
> > 0017,Bil Salters,M40,Yes
> > 0016,Iian Sallis,SM,No
> > 0018,Jon Church,SM,Yes
> > 0019,Sarah Church,F45,No
> > #race.csv
> > 0031,North Mids XC Race 3 (men) ,13-01-2007,6.5,miles
> > 0032,Bedford Half Marathon ,10-12-2006,13.1,miles
>
> > I tried to load Runner with this:
> > #myRunnerloader.py
> > from google.appengine.ext import bulkload
> > from google.appengine.api import datastore_types
> > from google.appengine.api import datastore_entities
> > from google.appengine.ext import search
> > class RunnerLoader(bulkload.Loader):
> >   def __init__(self):
> >     # Our 'Race' entity contains an id name string date distance and
> > units
> >     bulkload.Loader.__init__(self, 'Runner',
> >                          [('racerunner', str),
> >                           ('raceid', str),
> >                           ('runnerid', str),
> >                           ('runnername', str),
> >                           ('time', str),
> >                           ('position', str),
> >                           ('category', str),
> >                           ('WAVA', str),
> >                           ('pace', str),
> >                           ('notes', str),
> >                           ])
> >   def HandleEntity(self, entity):
> >     runner = datastore_entities.Runner(racerunner)
> >     runner.update(entity)
>
> >     raceid = runner['raceid']
> >     runnerid = runner['runnerid']
> >     if raceid:
> >         race = datastore.Query('Race',{'raceid': raceid}).Get(1)
> >         if not race:
> >             race = [datastore_entities.Race(raceid)]
> >             datastore.Put(race[0])
> >         runner['race'] = race[0].key()
> >     if runnerid:
> >         member = datastore.Query('Member',{'runnerid':
> > runnerid}).Get(1)
> >         if not member:
> >             member = [datastore_entities.Member(runnerid)]
> >             datastore.Put(member[0])
> > ['member'] = member[0].key()
> >     return runner
> > if __name__ == '__main__':
> >   bulkload.main(RunnerLoader())
>
> > #And this cmd command on XP
> >         runnercd C:\Google_apps
> > python "C:\Program Files\Google\google_appengine\tools
> > \bulkload_client.py"
> > --filename C:\Google_apps\data\Runnerfull.csv
> > --kind Runner
> > --urlhttp://127.0.0.1:8080/runnerload
> > And I get this error:
>
> > C:\Documents and S

[google-appengine] Re: key_name length limits?

2008-10-17 Thread Ross Ridge

Andy Freeman wrote:
> > I'd assumed that the length of a db.Model instance's db.Key().name()
> > was a constant plus a linear function of the depth the entity in its
> > entity group.]
>
> As I wrote above, I should have said length of str(db.Key() instance).
>
> db.Key's __str__ definition on google/appengine/api/
> datastore_types.py, line 404 says
>
> Unfortunately, this string encoding isn't particularly compact,
> and its
> length varies with the length of the path. If you want a shorter
> identifier
> and you know the kind and parent (if any) ahead of time, consider
> using just
> the entity's id or name.

The string contains all the elements of key's path encoded for use in
a URL, so length of generated string will be proportional to the sum
of the length of all the components.  The only unknown here is the
length ids that the production server generates, but unless Google is
using something GUIDs they shouldn't be too long.

As the comment suggests you can get a more compact string by
generating it yourself.  If all your kinds are the same you could use
something like:

def id_path_string(entity):
parent = entity.parent()
if parent == None:
return hex(entity.key.id())
return id_path_string(parent) + ":" + hex(entity.key.id())

Ross Ridge


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Customize login page

2008-10-17 Thread Fred

As a further note - to customize the application name that appears on
the log-in screen, go to your application dashboard, click
'Application Settings' and then change the application title. Finally,
re-deploy your application and the new name will appears in the log-in
screen!

On Sep 25, 6:15 am, "Calvin Spealman" <[EMAIL PROTECTED]> wrote:
> Which is a google-run app, and the undoubtedly have permissions and
> knowledge of things we haven't or wont be given access to. They would need
> to find a secure way to let you customize this page, without allowing any
> attacks. It is not an extremely simple thing to fix.
>
>
>
> On Thu, Sep 25, 2008 at 12:32 AM, Sudhir <[EMAIL PROTECTED]> wrote:
>
> > how about the moderator.appspot.com page? they have a customized
> > login
>
> > On Sep 24, 1:40 am, Sam G <[EMAIL PROTECTED]> wrote:
> > > It is possible to add a logo if you have tethered the domain to your
> > > Google Apps account.
> > > It uses the logo you upload for Google Apps.
> > > Beyond that, the only things that are dynamic on the login page is
> > > your domain name and your application name.
>
> > > I'm sure that Google wants to maintain a constant user experience
> > > throughout all of their products, so a user knows what a login screen
> > > looks like.
>
> > > Sam
>
> > > On Sep 23, 10:16 am, neich <[EMAIL PROTECTED]> wrote:
>
> > > > Hi,
>
> > > > I've been searching in the docs for any info on how to customize the
> > > > Google Account login page. The users.create_login_url() method doesn't
> > > > have any parameter (other than destination url). So, Am I right ? Is
> > > > it impossible to customize the login page ? It would be great to be
> > > > able to add some logo, or some personalized text.
>
> > > > Nacho
>
> --
> Read my blog! I depend on your acceptance of my opinion! I am 
> interesting!http://techblog.ironfroggy.com/
> Follow me if you're into that sort of thing:http://www.twitter.com/ironfroggy
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: Django helper - any further examples?

2008-10-17 Thread Alexander Kojevnikov

Rietveld from GvR:
http://code.google.com/p/rietveld/

On Oct 17, 10:31 pm, Blessed Geek <[EMAIL PROTECTED]> wrote:
> Google has a Django app engine helper as a skeletal application that
> has all the setup required for Django to work with GAE.
>
> Are there any examples demonstrating use of that skeletal setup?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Re: HTTPS Support for appspot.com

2008-10-17 Thread conman

Oh Boy!!

That are great news!! Thanks for your _excellent_ work!

Regards,
Constantin


On 17 Okt., 00:03, "Marzia Niccolai" <[EMAIL PROTECTED]> wrote:
> One of the most frequently requested features for App Engine has been HTTPS
> serving capabilities.  Today we're excited to announce that App Engine now
> supports incoming HTTPS connections using a certificate valid for all
> appspot.com URLs.  Here's how it works:
>
> * app.yaml files now support a new handler attribute, called "secure":
>
> - url: /accounts/.*
>   script: admin.py
>   login: admin
>   *secure: always*
>
> *This attribute can be either "always", "optional", or "never" (default),
> and determines the behavior of the handler for HTTP and HTTPS requests.  See
> our documentation for more 
> details:http://code.google.com/appengine/docs/configuringanapp.html#Secure_URLs
>
> * HTTPS requests have their own bandwidth quotas, but also count toward your
> total bandwidth quotas.  You can monitor these quotas on your dashboard.
>
> You may be wondering why we're only supporting appspot.com right now, and
> not arbitrary Google Apps domains.  This has to do with fundamental
> limitations in the SSL protocol 
> (see:http://en.wikipedia.org/wiki/Https#Limitations).  We're currently
> investigating workarounds for this using e.g.
> SNI 
> (http://en.wikipedia.org/wiki/Server_Name_Indication), which provides a
> viable solution for newer browsers--we'll keep you posted!
>
> This functionality is already available starting with the 1.1.5 SDK.
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] Django helper - any further examples?

2008-10-17 Thread Blessed Geek

Google has a Django app engine helper as a skeletal application that
has all the setup required for Django to work with GAE.

Are there any examples demonstrating use of that skeletal setup?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[google-appengine] RPC call in Google App Engine can't work with form

2008-10-17 Thread Ngu Soon Hui

Referring to the tutorial in http://code.google.com/appengine/articles/rpc.html.
If I change the HTML to




Result: 


Then I will have a get an exception when the below statement in
Javascript is called:

req.open('GET', '/rpc?' + query, async);

The exception is:

error 10054, connection reset by peer google app engine.

Is this a bug? Or a feature?

If this is by design, may I know how to use AJAX on Form submitting
for Google App Engine?
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---