Browse Source

Templatey goodness

master
Chris Smith 14 years ago
parent
commit
72d80581ca
2 changed files with 93 additions and 40 deletions
  1. 9
    40
      src/helloworld.py
  2. 84
    0
      src/index.html

+ 9
- 40
src/helloworld.py View File

@@ -1,5 +1,7 @@
1 1
 import cgi
2 2
 from Scraper import scraper
3
+import os
4
+from google.appengine.ext.webapp import template
3 5
 
4 6
 from google.appengine.ext import webapp
5 7
 from google.appengine.api import users
@@ -37,28 +39,14 @@ class MainPage(webapp.RequestHandler):
37 39
             self.redirect(users.create_login_url(self.request.uri))
38 40
             return
39 41
 
40
-        self.show_header()
42
+        template_values = {
43
+            'is_admin': users.is_current_user_admin(),
44
+            'accounts': UserAccount.gql("WHERE user = :user", user=user),
45
+            'achievements': AwardedAchievement.gql("WHERE user = :user", user=user)
46
+        }
41 47
 
42
-        if users.is_current_user_admin():
43
-            self.show_admin_form()
44
-
45
-        self.show_sources()
46
-        self.show_achievements()
47
-
48
-        self.show_footer()
49
-
50
-    def show_header(self):
51
-        self.response.out.write("""
52
-          <html>
53
-            <head>
54
-              <title>Achievements Aggregator</title>
55
-            </head>
56
-            <body>""")
57
-
58
-    def show_footer(self):
59
-        self.response.out.write("""
60
-            </body>
61
-          </html>""")
48
+        path = os.path.join(os.path.dirname(__file__), 'index.html')
49
+        self.response.out.write(template.render(path, template_values))
62 50
 
63 51
     def show_admin_form(self):
64 52
         self.response.out.write("""
@@ -84,25 +72,6 @@ class MainPage(webapp.RequestHandler):
84 72
         self.response.out.write("</table>")
85 73
 
86 74
     def show_sources(self):
87
-        self.response.out.write("<h1>My Accounts</h1>")
88
-        self.response.out.write("<table>")
89
-        self.response.out.write("<tr><th>Source</th><th>Credentials</th></tr>")
90
-
91
-        for account in UserAccount.gql("WHERE user = :user", user=users.get_current_user()):
92
-            self.response.out.write("<tr><td>")
93
-            self.response.out.write(cgi.escape(account.source.name))
94
-            self.response.out.write("</td><td>")
95
-            self.response.out.write(cgi.escape(account.credentials))
96
-            self.response.out.write("""
97
-               </td><td>
98
-                 <form action="/worker/update" method="post">
99
-                 <input type="hidden" name="key" value=""")
100
-            self.response.out.write('"' + cgi.escape(str(account.key())) + '"')
101
-            self.response.out.write(""">
102
-                 <input type="submit" value="Update now">
103
-               </td></tr>
104
-               """)
105
-
106 75
         self.response.out.write("</table>")
107 76
         self.response.out.write("""<h2>Add Account</h2>
108 77
           <form action="/addaccount" method="post">

+ 84
- 0
src/index.html View File

@@ -0,0 +1,84 @@
1
+<html>
2
+    <head>
3
+        <title>Achievement Aggregator</title>
4
+        <style type="text/css">
5
+            .achievement {
6
+                border: 1px solid black;
7
+                position: relative;
8
+                display: block;
9
+                width: 450px;
10
+                height: 90px;
11
+            }
12
+
13
+            .achievement .img {
14
+                width: 90px;
15
+                height: 90px;
16
+                float: left;
17
+                text-align: center;
18
+            }
19
+
20
+            .achievement .source {
21
+                display: inline;
22
+                font-weight: bold;
23
+            }
24
+
25
+            .achievement .source:after {
26
+                content: ':';
27
+            }
28
+
29
+            .achievement .name {
30
+                display: inline;
31
+            }
32
+
33
+            .achievement .description {
34
+                font-style: italic;
35
+            }
36
+
37
+            .achievement .date {
38
+                position: absolute;
39
+                margin: 0;
40
+                top: 0;
41
+                right: 0;
42
+                font-size: small;
43
+            }
44
+        </style>
45
+    </head>
46
+    <body>
47
+        <div id="content">
48
+            <h1>My Accounts</h1>
49
+            <table>
50
+                <tr>
51
+                    <th>Source</th>
52
+                    <th>Credentials</th>
53
+                </tr>
54
+                {% for account in accounts %}
55
+                <tr>
56
+                    <td>{{ account.source.name|escape }}</td>
57
+                    <td>{{ account.credentials|escape }}</td>
58
+                    <td>
59
+                        <form action="/worker/update" method="post">
60
+                            <input type="hidden" name="key" value="{{ account.key|escape }}"/>
61
+                            <input type="submit" value="Update now"/>
62
+                        </form>
63
+                    </td>
64
+                </tr>
65
+                {% endfor %}
66
+            </table>
67
+
68
+            <h1>My Achievements</h1>
69
+
70
+            {% for achievement in achievements %}
71
+            <div class="achievement">
72
+                <p class="source">{{ achievement.achievement.source.name|escape }}</p>
73
+                <div class="img">
74
+                    <img src="{{ achievement.achievement.image|escape }}"
75
+                         alt="{{ achievement.achievement.name|escape }}"/>
76
+                </div>
77
+                <p class="name">{{ achievement.achievement.name|escape }}</p>
78
+                <p class="description">{{ achievement.achievement.description|escape }}</p>
79
+                <p class="date">{{ achievement.awarded|escape }}</p>
80
+            </div>
81
+            {% endfor %}
82
+        </div>
83
+    </body>
84
+</html>

Loading…
Cancel
Save