'/sources/(.*)', 'sources', '/messages/', 'messages', '/devices/(.*)', 'devices', '/profile', 'profile', '/notifry', 'notifry', '/page/(.*)', 'page', ) # Create the renderer and the initial context. renderer = Renderer('templates/') renderer.addTemplate('user', users.get_current_user()) renderer.addTemplate('title', '') renderer.addTemplate('dateformat', '%A, %d %B %Y %H:%M UTC') # Helper function to make sure the user is aware that login is required. def login_required(): if not users.get_current_user(): if renderer.get_mode() == 'html': # Redirect to a login page, coming back here when done. raise web.found(users.create_login_url(web.url())) elif renderer.get_mode() == 'json': # Return an error in JSON. renderer.addData('error', 'Not logged in.') return renderer.render('apionly.html')
from lib.AC2DM import AC2DM from model.AC2DMAuthToken import AC2DMAuthToken from model.AC2DMAuthToken import AC2DMTokenException from model.UserDevices import UserDevices import datetime urls = ( '/admin/', 'index', '/admin/token/(.*)', 'token', '/admin/createtoken/', 'createtoken', '/admin/stats/(.*)', 'stats', '/admin/users', 'users' ) # Create the renderer and the initial context. renderer = Renderer('templates/') renderer.addTemplate('title', '') renderer.addTemplate('user', users.get_current_user()) # Front page of Admin. class index: def GET(self): return renderer.render('admin/index.html') class stats: def GET(self, name): if name == '': # Stats index. return renderer.render('admin/stats/index.html') if name == 'counters': # Counters.
import web from google.appengine.api import users from lib.Renderer import Renderer from lib.AC2DM import AC2DM from model.AC2DMAuthToken import AC2DMAuthToken from model.AC2DMAuthToken import AC2DMTokenException from model.UserDevices import UserDevices import datetime urls = ('/admin/', 'index', '/admin/token/(.*)', 'token', '/admin/createtoken/', 'createtoken', '/admin/stats/(.*)', 'stats', '/admin/users', 'users') # Create the renderer and the initial context. renderer = Renderer('templates/') renderer.addTemplate('title', '') renderer.addTemplate('user', users.get_current_user()) # Front page of Admin. class index: def GET(self): return renderer.render('admin/index.html') class stats: def GET(self, name): if name == '': # Stats index. return renderer.render('admin/stats/index.html')
'/', 'index', '/login', 'login', '/params', 'params', '/logout', 'logout', '/sources/(.*)', 'sources', # '/messages/', 'messages', '/devices/(.*)', 'devices', '/profile', 'profile', '/saveuserdata', 'saveuserdata', '/maildata', 'maildata', '/newtifry', 'newtifry', '/page/(.*)', 'page', ) # Create the renderer and the initial context. renderer = Renderer('templates/') renderer.addTemplate('user', users.get_current_user()) renderer.addTemplate('title', '') renderer.addTemplate('dateformat', '%A, %d %B %Y %H:%M UTC') # Helper function to make sure the user is aware that login is required. def login_required(): user = users.get_current_user() if not user: if renderer.get_mode() == 'html': # Redirect to a login page, coming back here when done. raise web.found(users.create_login_url(web.url())) elif renderer.get_mode() == 'json': # Return an error in JSON. renderer.addData('error', 'Not logged in.') return renderer.render('apionly.html')
from lib.Renderer import Renderer from model.UserMessages import UserMessages from model.UserMessage import UserMessage from google.appengine.ext import deferred from google.appengine.ext import db from lib.DeleteHelper import delete_messages_for_collection import datetime from model.GeneralCounterShard import GeneralCounterShard from model.GeneralCounterShard import GeneralCounterShardConfig urls = ( '/cron/deletemessages', 'deletemessages' ) # Create the renderer and the initial context. renderer = Renderer('templates/') # Cron script to delete messages. class deletemessages: def GET(self): # Older than 1 day. older_than = datetime.datetime.now() - datetime.timedelta(1) # Find all messages. messages = UserMessage.all(keys_only=True) messages.filter("timestamp < ", older_than) results = messages.fetch(200) db.delete(results) message_count = len(results) # And do the same with the stats counter shards.