Browse Source

Add basic account deletion

Make URLs more hierarchical
Closes #18
master
Chris Smith 13 years ago
parent
commit
acd5968027
2 changed files with 34 additions and 5 deletions
  1. 23
    2
      src/helloworld.py
  2. 11
    3
      src/index.html

+ 23
- 2
src/helloworld.py View File

@@ -1,3 +1,4 @@
1
+import logging
1 2
 import os
2 3
 from Scraper import Scraper
3 4
 from google.appengine.ext.webapp import template
@@ -78,6 +79,25 @@ class AddAccountPage(webapp.RequestHandler):
78 79
 
79 80
         self.redirect('/')
80 81
 
82
+class DeleteAccountPage(webapp.RequestHandler):
83
+    def post(self):
84
+
85
+        if not users.get_current_user():
86
+            self.error(403)
87
+            return
88
+
89
+        account = db.get(db.Key(self.request.get('key')))
90
+
91
+        if account.user != users.get_current_user() and not users.is_current_user_admin():
92
+            logging.warning("Account deletion attempted by :u1 for account owned by :u2",
93
+                            u1 = users.get_current_user(), u2 = account.user)
94
+            self.error(403)
95
+            return
96
+
97
+        account.delete()
98
+
99
+        self.redirect('/')
100
+
81 101
 
82 102
 class UpdatePage(webapp.RequestHandler):
83 103
 
@@ -157,9 +177,10 @@ class UpdatePage(webapp.RequestHandler):
157 177
         return res
158 178
 
159 179
 application = webapp.WSGIApplication([('/', MainPage),
160
-                                      ('/admin/addsource', AddSourcePage),
180
+                                      ('/admin/source/add', AddSourcePage),
161 181
                                       ('/worker/update', UpdatePage),
162
-                                      ('/addaccount', AddAccountPage)],
182
+                                      ('/account/add', AddAccountPage),
183
+                                      ('/account/delete', DeleteAccountPage)],
163 184
                                      debug=True)
164 185
 
165 186
 def main():

+ 11
- 3
src/index.html View File

@@ -50,6 +50,10 @@
50 50
                 right: 2px;
51 51
                 font-size: small;
52 52
             }
53
+
54
+            td.actions form {
55
+                display: inline;
56
+            }
53 57
         </style>
54 58
     </head>
55 59
     <body>
@@ -58,7 +62,7 @@
58 62
             <div class="admin">
59 63
                 <h1>Admin</h1>
60 64
                 <h2>Add Source</h2>
61
-                <form action="/admin/addsource" method="post">
65
+                <form action="/admin/source/add" method="post">
62 66
                     <label>Name: <input type="text" name="name"/></label>
63 67
                     <label>URL: <input type="text" name="url"/></label>
64 68
                     <input type="submit" value="Add"/>
@@ -76,18 +80,22 @@
76 80
                 <tr>
77 81
                     <td>{{ account.source.name|escape }}</td>
78 82
                     <td>{{ account.credentials|escape }}</td>
79
-                    <td>
83
+                    <td class="actions">
80 84
                         <form action="/worker/update" method="post">
81 85
                             <input type="hidden" name="key" value="{{ account.key|escape }}"/>
82 86
                             <input type="submit" value="Update now"/>
83 87
                         </form>
88
+                        <form action="/account/delete" method="post">
89
+                            <input type="hidden" name="key" value="{{ account.key|escape }}"/>
90
+                            <input type="submit" value="Delete"/>
91
+                        </form>
84 92
                     </td>
85 93
                 </tr>
86 94
                 {% endfor %}
87 95
             </table>
88 96
 
89 97
             <h2>Add account</h2>
90
-            <form action="/addaccount" method="post">
98
+            <form action="/account/add" method="post">
91 99
                 <label>Type:
92 100
                    <select name="type">
93 101
                         {% for source in sources %}

Loading…
Cancel
Save