-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandlers.py
109 lines (83 loc) · 3.12 KB
/
handlers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# *-* coding: UTF-8 *-*
#-------------------------------------------------------------------------------
# Name: handlers
# Purpose: most site handlers
#
# Author: Eric
#
# Created: 2016-02-26
# Copyright: (c) Eric 2016
# Licence: <your licence>
#-------------------------------------------------------------------------------
from basehandler import BaseHandler
from decorators import user_required, admin_required
import os
from config import config
#import logging
#import sys
#import webapp2
#from google.appengine.api import users # we are using this for authentication
#from google.appengine.ext import ndb
#import models # we are using this for authorization and storing of further pii
#import re
#import datetime
DEV = os.environ['SERVER_SOFTWARE'].startswith('Development')
def generate_auth_token(key, url, ts, contest_id, student_id=''):
from hashlib import sha1
import hmac
msg = url + str(ts) + str(contest_id) + str(student_id)
hashed = hmac.new(key, msg, sha1)
auth_token = hashed.hexdigest()
return auth_token
class UpdateHandler(BaseHandler):
# all updates go here
@admin_required
def get(self):
import urllib2
import json
self.response.out.write('<html><body>')
self.response.out.write('<h1>running updates</h1>')
# todo: implement
self.response.out.write('<h2>updates finished.</h2>')
self.response.out.write('<p><a href="/">Home</a></p>')
self.response.out.write('</body></html>')
## STATIC TEMPLATE HANDLERS ##
class MainHandler(BaseHandler):
def get(self):
params = {}
return self.render_template('home.html', **params)
class AboutHandler(BaseHandler):
def get(self, club=None):
params = {}
if club == None:
return self.render_template('about.html', **params)
params['links'] = config['club_links'][club]
return self.render_template('about-'+club+'.html', **params)
class RecipeHandler(BaseHandler):
def get(self, style=None, name=None):
params = {}
if style == None:
return self.render_template('recipes.html', **params)
elif style != None and name == None:
# todo: get <style> recipes to display in list or table
return self.render_template('recipes-'+style+'.html', **params)
elif style != None and name != None:
# todo: get <name> recipe to display
return self.render_template('recipes-'+style+'-'+name+'.html', **params)
def post(self):
params = {}
message = 'Search functionality is coming soon!'
self.add_message(message, 'info')
return self.render_template('recipes.html', **params)
class NewsHandler(BaseHandler):
def get(self):
params = {}
return self.render_template('news.html', **params)
class EventsHandler(BaseHandler):
def get(self):
params = {}
return self.render_template('events.html', **params)
class ResourcesHandler(BaseHandler):
def get(self):
params = {}
return self.render_template('resources.html', **params)