-
Notifications
You must be signed in to change notification settings - Fork 2
/
PageContent.py
160 lines (130 loc) · 5.48 KB
/
PageContent.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
150
151
152
153
154
155
156
157
158
159
160
import jinja2
import os
import webapp2
import logging
from datetime import datetime
from google.appengine.ext import db
from google.appengine.ext import ndb
from google.appengine.api import users
from webapp2_extras import sessions
from google.appengine.api import memcache
from SecurityUtils import AccessOK
from models import PageContents
from models import Languages
TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'templates')
jinja_environment = \
jinja2.Environment(autoescape=True, loader=jinja2.FileSystemLoader(TEMPLATE_DIR))
jinja_environment.filters['AccessOK'] = AccessOK
class BaseHandler(webapp2.RequestHandler):
@webapp2.cached_property
def jinja2(self):
return jinja2.get_jinja2(app=self.app)
def render_template(
self,
filename,
template_values,
**template_args
):
template = jinja_environment.get_template(filename)
self.response.out.write(template.render(template_values))
def dispatch(self):
# Get a session store for this request.
self.session_store = sessions.get_store(request=self.request)
try:
# Dispatch the request.
webapp2.RequestHandler.dispatch(self)
finally:
# Save all sessions.
self.session_store.save_sessions(self.response)
@webapp2.cached_property
def session(self):
# Returns a session using the default cookie key.
return self.session_store.get_session()
class PageContentList(BaseHandler):
def get(self):
languages = memcache.get("languages")
if languages is not None:
logging.info("get languages from memcache.")
else:
languages = Languages.query()
logging.info("Can not get languages from memcache.")
if not memcache.add("languages", languages, 10):
logging.info("Memcache set failed.")
if self.request.get('langCode'):
langCode=self.request.get('langCode')
self.session['langCode'] = langCode
else:
langCode = self.session.get('langCode')
if not langCode:
self.session['langCode'] = 'en'
LangName = 'no language'
for language in languages:
if language.langCode == langCode:
langName = language.langName
pagecontents = PageContents.query()
NoContent = True
if pagecontents:
NoContent = False
logout = None
login = None
currentuser = users.get_current_user()
if currentuser:
logout = users.create_logout_url('/pagecontents' )
else:
login = users.create_login_url('/pagecontents/create')
self.render_template('PageContentList.html', {'pagecontents': pagecontents, 'NoContent': NoContent, 'currentuser':currentuser, 'login':login, 'logout': logout})
class PageContentCreate(BaseHandler):
def post(self):
logging.info('QQQ: PageContentCreate POST')
#return webapp2.redirect('/pagecontents')
CreatedBy = users.get_current_user()
n = PageContents(TemplateName=self.request.get('TemplateName'),
LangCode=self.request.get('LangCode'),
TokenTag=self.request.get('TokenTag'),
ContentText=self.request.get('ContentText'),
Status=self.request.get('Status'),
CreatedBy=CreatedBy,
StatusBy=CreatedBy
)
logging.info('QQQ: PageContentCreate before put')
n.put()
logging.info('QQQ: PageContentCreate after put')
x = self.redirect('/pagecontents')
logging.info('QQQ: x: %s' % x)
return x
def get(self):
StatusList = ['Pending Translation', 'Pending Review', 'Published'];
self.render_template('PageContentCreate.html', {'StatusList': StatusList})
class PageContentEdit(BaseHandler):
def post(self, pagecontent_id):
iden = int(pagecontent_id)
# PageContent = db.get(db.Key.from_path('PageContents', iden))
PageContent = ndb.Key('PageContents', iden).get()
currentuser = users.get_current_user()
PageContent.TemplateName = self.request.get('TemplateName')
PageContent.LangCode = self.request.get('LangCode')
PageContent.TokenTag = self.request.get('TokenTag')
PageContent.ContentText = self.request.get('ContentText')
PageContent.UpdatedBy = currentuser
PageContent.UpdatedDate = datetime.now()
StatusPrev = PageContent.Status
PageContent.Status = self.request.get('Status')
if not PageContent.Status == StatusPrev:
PageContent.StatusBy = currentuser
PageContent.StatusDate = datetime.now()
PageContent.put()
return self.redirect('/pagecontents')
def get(self, pagecontent_id):
iden = int(pagecontent_id)
# PageContent = db.get(db.Key.from_path('PageContents', iden))
PageContent = ndb.Key('PageContents', iden).get()
StatusList = ['Pending Translation', 'Pending Review', 'Published'];
self.render_template('PageContentEdit.html', {'PageContent': PageContent, 'StatusList': StatusList})
class PageContentDelete(BaseHandler):
def get(self, pagecontent_id):
iden = int(pagecontent_id)
PageContent = ndb.Key('PageContents', iden).get()
# PageContent = db.get(db.Key.from_path('PageContents', iden))
# db.delete(PageContent)
PageContent.key.delete()
return self.redirect('/pagecontents')