-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandlers.py
91 lines (76 loc) · 3.06 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
import jinja2
import os
from google.appengine.api import users
from cgi import escape
import webapp2
from google.appengine.api.users import User
from models import Message
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
class BaseHandler(webapp2.RequestHandler):
def __init__(self, request, response):
self.initialize(request, response)
self.user = users.get_current_user()
def render(self, tpl_file, tvals={}):
tvals['user'] = self.user
tvals['logout'] = users.create_logout_url("/")
tpl = jinja_environment.get_template('templates/' + tpl_file + '.html')
self.response.out.write(tpl.render(tvals))
class MainHandler(BaseHandler):
def get(self):
""" show list of user messages """
messes = Message.get_my_messes(self.user)
self.render('main', {'messes': messes})
def post(self):
""" post new message """
title = self.request.get('mess-title')
content = self.request.get('mess-text')
access_list = self.request.get('mess-acc').split(', ')
access_list = [User(email=email).key for email in access_list]
mess = Message(title=title, user=self.user, content=content, access_list=access_list)
mess.put()
self.redirect('/')
class InboxHandler(BaseHandler):
def get(self):
""" show list of inbox user messages """
messes = Message.get_inbox_messes(self.user)
self.render('inbox', {'messes': messes})
def post(self):
""" post answer message """
title = self.request.get('mess-title')
content = self.request.get('mess-text')
parent_mess = self.request.get('mess-parent')
parent_mess = Message.getone(parent_mess)
access_list = self.request.get('mess-acc').split(', ')
access_list = [User(email=email).key for email in access_list]
mess = Message(title=title, user=self.user, content=content, access_list=access_list, parent_mess=parent_mess)
mess.put()
self.redirect('/')
class MessHandler(BaseHandler):
def get(self, mess_key):
""" show message """
mess_key = escape(mess_key)
mess = Message.getone(mess_key)
if mess.can_read(self.user):
self.render('mess', {'mess': mess})
else:
self.redirect('/')
class MessEditHandler(BaseHandler):
def get(self, mess_key):
""" show message editor """
mess_key = escape(mess_key)
mess = Message.getone(mess_key)
if mess.author == self.user:
self.render('mess_edit', {'mess': mess})
else:
self.redirect('/')
def post(self, mess_key):
""" update message """
mess_key = escape(mess_key)
mess = Message.getone(mess_key)
mess.title = self.request.get('mess-title')
mess.content = self.request.get('mess-text')
access_list = self.request.get('mess-acc').split(', ')
mess.access_list = [User(email=email).key for email in access_list]
mess.put()
self.redirect('/')