/
exportxml.py
67 lines (55 loc) · 2.42 KB
/
exportxml.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
import jinja2
import os
import urllib
import webapp2
import category
import item
from google.appengine.api import users
jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
select_category_page_path = 'export/selectcategory'
select_category_action_path = 'export/selectcategoryaction'
result_page_path = 'export/result'
class SelectCategoryPage(webapp2.RequestHandler):
"""Construct select category HTML page
"""
def get(self):
"""Handle user request
The select category HTML page would list all categories of all
users. The user should select one of them
"""
invalid_select = self.request.get('select_category')
user = users.get_current_user()
categories = category.get_categories()
url = users.create_logout_url(self.request.uri) if user else users.create_login_url(self.request.uri)
template_values = {
'categories': categories,
'url': url,
'user': user,
'invalid_select': invalid_select,
}
template = jinja_environment.get_template('{path}.html'.format(path=select_category_page_path))
self.response.out.write(template.render(template_values))
class SelectCategoryAction(webapp2.RequestHandler):
"""Handle select category form submition
"""
def get(self):
"""Handle user request
Construct category information in XML web page
"""
category_key = self.request.get('category_key')
if not category_key:
self.redirect('/{path}?'.format(path=select_category_page_path) +
urllib.urlencode({'select_category': 'Nothing'}))
return
category_data = category.get_category_by_key(key=category_key)
items = item.get_items(author=category_data.author, category_name=category_data.name)
template_values = {
'category': category_data,
'items': items,
}
template = jinja_environment.get_template('{path}.xml'.format(path=result_page_path))
self.response.headers['Content-Type'] = 'text/xml'
self.response.out.write(template.render(template_values))
app = webapp2.WSGIApplication([('/{path}'.format(path=select_category_page_path), SelectCategoryPage),
('/{path}'.format(path=select_category_action_path), SelectCategoryAction)],
debug=True)