| Index: tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/guestbook/server/guestbook.py
|
| diff --git a/tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/guestbook/server/guestbook.py b/tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/guestbook/server/guestbook.py
|
| deleted file mode 100755
|
| index b7d383bedeb0e8b3e553cd11502ab450b285746b..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/gsutilz/third_party/protorpc/demos/guestbook/server/guestbook.py
|
| +++ /dev/null
|
| @@ -1,156 +0,0 @@
|
| -#!/usr/bin/env python
|
| -#
|
| -# Copyright 2007 Google Inc.
|
| -#
|
| -# Licensed under the Apache License, Version 2.0 (the "License");
|
| -# you may not use this file except in compliance with the License.
|
| -# You may obtain a copy of the License at
|
| -#
|
| -# http://www.apache.org/licenses/LICENSE-2.0
|
| -#
|
| -# Unless required by applicable law or agreed to in writing, software
|
| -# distributed under the License is distributed on an "AS IS" BASIS,
|
| -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -# See the License for the specific language governing permissions and
|
| -# limitations under the License.
|
| -#
|
| -
|
| -import appengine_config
|
| -
|
| -import cgi
|
| -import datetime
|
| -import time
|
| -import wsgiref.handlers
|
| -
|
| -from google.appengine.ext import db
|
| -from google.appengine.api import users
|
| -from google.appengine.ext import webapp
|
| -
|
| -from protorpc import message_types
|
| -from protorpc import messages
|
| -from protorpc import remote
|
| -from protorpc.webapp import service_handlers
|
| -
|
| -
|
| -class Greeting(db.Model):
|
| - author = db.UserProperty()
|
| - content = db.StringProperty(multiline=True)
|
| - date = db.DateTimeProperty(auto_now_add=True)
|
| -
|
| -
|
| -class MainPage(webapp.RequestHandler):
|
| - def get(self):
|
| - self.response.out.write('<html><body>')
|
| -
|
| - greetings = db.GqlQuery("SELECT * "
|
| - "FROM Greeting "
|
| - "ORDER BY date DESC LIMIT 10")
|
| -
|
| - for greeting in greetings:
|
| - if greeting.author:
|
| - self.response.out.write('<b>%s</b> wrote:' % greeting.author.nickname())
|
| - else:
|
| - self.response.out.write('An anonymous person wrote:')
|
| - self.response.out.write('<blockquote>%s</blockquote>' %
|
| - cgi.escape(greeting.content))
|
| -
|
| -
|
| - self.response.out.write("""
|
| - <form action="/sign" method="post">
|
| - <div><textarea name="content" rows="3" cols="60"></textarea></div>
|
| - <div><input type="submit" value="Sign Guestbook"></div>
|
| - </form>
|
| - </body>
|
| - </html>""")
|
| -
|
| -
|
| -class Guestbook(webapp.RequestHandler):
|
| - def post(self):
|
| - greeting = Greeting()
|
| -
|
| - if users.get_current_user():
|
| - greeting.author = users.get_current_user()
|
| -
|
| - greeting.content = self.request.get('content')
|
| - greeting.put()
|
| - self.redirect('/')
|
| -
|
| -
|
| -class Note(messages.Message):
|
| -
|
| - text = messages.StringField(1, required=True)
|
| - when = messages.IntegerField(2)
|
| -
|
| -
|
| -class GetNotesRequest(messages.Message):
|
| -
|
| - limit = messages.IntegerField(1, default=10)
|
| - on_or_before = messages.IntegerField(2)
|
| -
|
| - class Order(messages.Enum):
|
| - WHEN = 1
|
| - TEXT = 2
|
| - order = messages.EnumField(Order, 3, default=Order.WHEN)
|
| -
|
| -
|
| -class Notes(messages.Message):
|
| - notes = messages.MessageField(Note, 1, repeated=True)
|
| -
|
| -
|
| -class PostService(remote.Service):
|
| -
|
| - # Add the remote decorator to indicate the service methods
|
| - @remote.method(Note)
|
| - def post_note(self, request):
|
| -
|
| - # If the Note instance has a timestamp, use that timestamp
|
| - if request.when is not None:
|
| - when = datetime.datetime.utcfromtimestamp(request.when)
|
| -
|
| - # Else use the current time
|
| - else:
|
| - when = datetime.datetime.now()
|
| - note = Greeting(content=request.text, date=when)
|
| - note.put()
|
| - return message_types.VoidMessage()
|
| -
|
| - @remote.method(GetNotesRequest, Notes)
|
| - def get_notes(self, request):
|
| - query = Greeting.all().order('-date')
|
| -
|
| - if request.on_or_before:
|
| - when = datetime.datetime.utcfromtimestamp(
|
| - request.on_or_before)
|
| - query.filter('date <=', when)
|
| -
|
| - notes = []
|
| - for note_model in query.fetch(request.limit):
|
| - if note_model.date:
|
| - when = int(time.mktime(note_model.date.utctimetuple()))
|
| - else:
|
| - when = None
|
| - note = Note(text=note_model.content, when=when)
|
| - notes.append(note)
|
| -
|
| - if request.order == GetNotesRequest.Order.TEXT:
|
| - notes.sort(key=lambda note: note.text)
|
| -
|
| - return Notes(notes=notes)
|
| -
|
| -
|
| -service_mapping = service_handlers.service_mapping(
|
| - [('/postservice', PostService)])
|
| -
|
| -application = webapp.WSGIApplication([
|
| - ('/', MainPage),
|
| - ('/sign', Guestbook),
|
| -] + service_mapping,
|
| -debug=True)
|
| -
|
| -
|
| -def main():
|
| - wsgiref.handlers.CGIHandler().run(application)
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - main()
|
|
|