Mercurial > hg > SimpleWiki
comparison simplewiki/handlers.py @ 5:b2fbb4f982da default tip
[mq]: edit
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Tue, 07 Sep 2010 22:58:11 -0700 |
| parents | dd1c4916cbcd |
| children |
comparison
equal
deleted
inserted
replaced
| 4:dd1c4916cbcd | 5:b2fbb4f982da |
|---|---|
| 123 def __init__(self, app, request): | 123 def __init__(self, app, request): |
| 124 Handler.__init__(self, app, request) | 124 Handler.__init__(self, app, request) |
| 125 if 'file' not in request.POST: | 125 if 'file' not in request.POST: |
| 126 raise HandlerMatchException | 126 raise HandlerMatchException |
| 127 self.file = self.request.POST['file'] | 127 self.file = self.request.POST['file'] |
| 128 if not getattr(self.file, 'filename', None): | 128 filename = getattr(self.file, 'filename', '') |
| 129 raise HandlerMatchException | 129 if filename: |
| 130 content = self.file.file.read() | |
| 131 else: | |
| 132 content = self.file | |
| 133 | |
| 130 self.location = request.path_info.rstrip('/') | 134 self.location = request.path_info.rstrip('/') |
| 131 path = os.path.join(self.app.directory, *self.request.environ['path']) | 135 path = os.path.join(self.app.directory, *self.request.environ['path']) |
| 132 if os.path.isdir(path): | 136 if os.path.isdir(path): |
| 133 self.directory = path | 137 self.directory = path |
| 134 self.filename = os.path.join(self.directory, self.file.filename) | 138 self.filename = os.path.join(self.directory, filename) |
| 135 self.location += '/' + self.file.filename | 139 self.location += '/' + filename |
| 136 else: | 140 else: |
| 137 self.directory = os.path.dirname(path) | 141 self.directory = os.path.dirname(path) |
| 138 self.filename = path | 142 self.filename = path |
| 139 | 143 |
| 140 f = file(self.filename, 'wb') | 144 f = file(self.filename, 'wb') |
| 141 f.write(self.file.file.read()) | 145 f.write(content) |
| 142 f.close() | 146 f.close() |
| 143 | 147 |
| 144 def __call__(self): | 148 def __call__(self): |
| 145 self.redirect(self.location) | 149 self.redirect(self.location) |
| 146 | 150 |
| 154 raise HandlerMatchException | 158 raise HandlerMatchException |
| 155 | 159 |
| 156 def __call__(self): | 160 def __call__(self): |
| 157 return FileApp(self.file) | 161 return FileApp(self.file) |
| 158 | 162 |
| 163 class EditView(Handler): | |
| 164 methods = set(['GET']) | |
| 165 template = 'edit.html' | |
| 166 | |
| 167 def __init__(self, app, request): | |
| 168 if 'edit' not in request.GET: | |
| 169 raise HandlerMatchException | |
| 170 | |
| 171 Handler.__init__(self, app, request) | |
| 172 | |
| 173 self.file = os.path.join(self.app.directory, *request.environ['path']) | |
| 174 if not os.path.exists(self.file): | |
| 175 raise HandlerMatchException | |
| 176 self.data = { 'request': request, | |
| 177 'link': self.link, | |
| 178 'file': '/' + '/'.join(request.environ['path']), | |
| 179 'content': file(self.file).read() | |
| 180 } | |
| 181 | |
| 182 def __call__(self): | |
| 183 return getattr(self, self.request.method.title())() | |
| 184 | |
| 185 def Get(self): | |
| 186 template = self.app.loader.load(self.template) | |
| 187 return Response(content_type='text/html', | |
| 188 body=template.generate(**self.data).render('html')) |
