|
|
接上文- def post(self):
- checkauth(self)
- url_mime = self.request.get('url_mime')
- avatar = self.request.get('avatar')
- if url_mime or avatar:
- if avatar:
- try:
- resizeandsaveavatar(self, url_mime, avatar)
- sendmsg(self, 'added')
- except Exception, ex:
- sendmsg(self, "failed to transform and/or save: %s" % ex)
- else:
- if self.request.get('fetch') == 'yes':
- try:
- fc = urlfetch.fetch(url_mime)
- if fc.status_code == 200:
- if 'Content-Type' in fc.headers:
- url_mime = fc.headers['Content-Type']
- else:
- url_mime = None
- avatar = fc.content
- try:
- resizeandsaveavatar(self, url_mime, avatar)
- sendmsg(self, 'added')
- except Exception, ex:
- sendmsg(self, "failed to transform and/or save: %s" % ex)
- else:
- sendmsg(self, 'cannot fetch avatar: http status ' + str(fc.status_code))
- except Exception, ex:
- sendmsg(self, 'cannot fetch avatar: %s' % ex)
- else:
- try:
- resizeandsaveavatar(self, url_mime)
- sendmsg(self, 'added')
- except Exception, ex:
- sendmsg(self, "failed to transform and/or save: %s" % ex)
- else:
- sendmsg(self, 'fill in the form!')
- def sendavatarbykey(handler, key):
- avatar = db.get(key)
- if avatar:
- sendavatar(handler, avatar.url_mime, avatar.avatar)
- else:
- sendavatar(handler)
- class showspecavatar(webapp.RequestHandler):
- def get(self, key):
- sendavatarbykey(self, key)
- class showavatar(webapp.RequestHandler):
- def get(self, ext):
- alist = getcachedlist()
- key = random.choice(alist)
- sendavatarbykey(self, key)
- class flushavatarcache(webapp.RequestHandler):
- def get(self):
- checkauth(self)
- self.response.headers['Content-Type'] = 'text/plain'
- self.response.out.write(str(flushcache()))
- self.response.out.write("""
- The return value is 0 (DELETE_NETWORK_FAILURE) on network failure,
- 1 (DELETE_ITEM_MISSING) if the server tried to delete the item but didn't have it,
- and 2 (DELETE_SUCCESSFUL) if the item was actually deleted.
- This can be used as a boolean value, where a network failure is the only bad condition.""")
- class delavatar(webapp.RequestHandler):
- def get(self, key):
- checkauth(self)
- avatar = db.get(key)
- if avatar:
- avatar.delete()
- flushcache()
- sendmsg(self, 'avatar %s is deleted' % key)
- else:
- sendmsg(self, 'nothing to delete')
- class listavatar(webapp.RequestHandler):
- def get(self, sizelimit=None):
- if sizelimit:
- trstr = """
- <tr><td><a href="/delavatar/%%s">Delete</a></td><td><img width="%s" height="%s" src="/avatar/%%s"/></td><td>%%s</td></td><td>%%s</td></tr>
- """ % (sizelimit, sizelimit)
- else:
- trstr = """
- <tr><td><a href="/delavatar/%s">Delete</a></td><td><img src="/avatar/%s"/></td><td>%s</td><td>%s</td></tr>
- """
- q = Avatar.all()
- self.response.headers['Content-Type'] = 'text/html'
- self.response.out.write("""
- <html>
- <head><title>List of Avatars (%d in total)</title></head>
- <body>
- <a href="/addavatar">Add Avatar</a> | <a href="/flushavatarcache" target="_blank">Flush Cache</a> | Size: <input type="text" size="4" id="limit">
- <input type="button" value="go" onclick="window.location='/listavatar/'+document.getElementById('limit').value"/>
-
- <table border="1"><tr><td>Action</td><td>Avatar</td><td>URL/MIME</td><td>Key</td></tr>
- """ % q.count())
- for avatar in q:
- key = str(avatar.key())
- self.response.out.write(trstr % (key, key, ('MIME:' if avatar.avatar else 'URL:') + str(avatar.url_mime), key))
- self.response.out.write("""
- </table>
- </body>
- </html>
- """)
- def main():
- application = webapp.WSGIApplication([
- ('/addavatar', addavatar),
- ('/avatar(\..*)?', showavatar),
- ('/avatar/(.+)', showspecavatar),
- ('/delavatar/(.+)', delavatar),
- ('/listavatar', listavatar),
- ('/listavatar/(.*)', listavatar),
- ('/flushavatarcache', flushavatarcache)
- ])
- wsgiref.handlers.CGIHandler().run(application)
- if __name__ == "__main__":
- main()
复制代码 以上为转载,但代码我也不知道那里找来的了
[ 本帖最后由 lyylts 于 2010-8-7 08:51 编辑 ] |
|