-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsettings.py
152 lines (120 loc) · 4.36 KB
/
settings.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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# coding=utf-8
import webapp2
from google.appengine.api import users
from shared.base_handler import BaseHandler
import model
import service
import nodes
import shared.client_type_map as type_map
from shared.pagelet_processor import *
class SettingsBaseHandler(BaseHandler):
active_tab = 'account'
def get(self):
context = {
'render_settings_page': self.render_settings_page()
}
self.render('settings/settings_base.html', context)
def render_settings_page(self):
page = self.get_content_node()
page.set_root_node()
return page.render()
def get_content_node(self):
meta = {
'active_tab': self.active_tab
}
page = nodes.ZNodeSettingsPage(self, meta)
return page
def tab_content_pagelet(self):
#subclass override.
pass
def pagelet(self):
group_name = self.request.get('page_group')
if group_name == 'default':
content = self.get_content_node()
self.pagelet_(content)
else:
self.tab_content_pagelet()
class SettingsAccountHandler(SettingsBaseHandler):
active_tab = 'account'
def tab_content_pagelet(self):
account = self.get_current_account()
meta = {
'account_id':account.key.id()
}
content = nodes.ZNodeSettingsAccount(self, meta)
self.pagelet_(content)
def edit_name(self):
nick_name = self.request.get('nickname')
response = self.get_ajax_response()
# Validation logic locats in service layer.
success, error_messages = service.AccountService().update_nick_name(nick_name, self.get_current_account())
edit_name_form_pagelet_ = response.get_pagelet_by_type('ZH.ui.SettingsFormEditName')
edit_name_form_node_ = edit_name_form_pagelet_.get_node_instance()
if success:
# Close the edit form.
edit_name_form_node_.set_expanded(False)
response.set_message('保存成功!').set_refresh(True)
else:
for err in error_messages:
edit_name_form_node_.append_error_message(err)
self.output_ajax_response(response)
def edit_url(self):
# TODO: save url
response = self.get_ajax_response()
edit_url_form_pagelet_ = response.get_pagelet_by_type('ZH.ui.SettingsFormEditUrl')
edit_url_form_node_ = edit_url_form_pagelet_.get_node_instance()
edit_url_form_node_.set_expanded(False)
response.set_message('保存成功!').set_refresh(True)
self.output_ajax_response(response)
def edit_email(self):
# TODO: save email
response = self.get_ajax_response()
edit_email_form_pagelet_ = response.get_pagelet_by_type('ZH.ui.SettingsFormEditEmail')
edit_email_form_node_ = edit_email_form_pagelet_.get_node_instance()
edit_email_form_node_.set_expanded(False)
response.set_message('保存成功!').set_refresh(True)
self.output_ajax_response(response)
def edit_password(self):
# TODO: save password
response = self.get_ajax_response()
edit_password_form_pagelet_ = response.get_pagelet_by_type('ZH.ui.SettingsFormEditPassword')
edit_password_form_node_ = edit_password_form_pagelet_.get_node_instance()
edit_password_form_node_.set_expanded(False)
response.set_message('保存成功!').set_refresh(True)
self.output_ajax_response(response)
class SettingsNotifyHandler(SettingsBaseHandler):
active_tab = 'notify'
def tab_content_pagelet(self):
account = self.get_current_account()
meta = {
'account_id':account.key.id()
}
content = nodes.ZNodeSettingsNotify(self, meta)
self.pagelet_(content)
class SettingsEmailHandler(SettingsBaseHandler):
active_tab = 'email'
def tab_content_pagelet(self):
account = self.get_current_account()
meta = {
'account_id':account.key.id()
}
content = nodes.ZNodeSettingsEmail(self, meta)
self.pagelet_(content)
class SettingsBindHandler(SettingsBaseHandler):
active_tab = 'bind'
def tab_content_pagelet(self):
account = self.get_current_account()
meta = {
'account_id':account.key.id()
}
content = nodes.ZNodeSettingsBind(self, meta)
self.pagelet_(content)
class SettingsBlockUserHandler(SettingsBaseHandler):
active_tab = 'block_user'
def tab_content_pagelet(self):
account = self.get_current_account()
meta = {
'account_id':account.key.id()
}
content = nodes.ZNodeSettingsBlockUser(self, meta)
self.pagelet_(content)