annotate slides.py @ 244:eee52d5a4af8 default tip

created
author 127.0.0.1
date Sun, 30 Jun 2013 11:08:33 +0200
parents f22fefe05c25
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
147
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
1 #!/usr/bin/python
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
3
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
4 """
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
5 An example of extending Hatta: adding a slideshow functionality.
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
6 """
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
7
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
8 import werkzeug
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
9 import os
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
10
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
11 import hatta
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
12
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
13 _ = lambda x: x
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
14
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
15 class WikiPageWiki(hatta.WikiPageWiki):
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
16 def footer(self, special_title, edit_url):
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
17 for part in super(WikiPageWiki, self).footer(special_title, edit_url):
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
18 yield part
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
19 yield werkzeug.html.a(werkzeug.html(_('Slides')),
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
20 href=self.get_url(self.title, self.wiki.slides),
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
21 class_='slides')
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
22 yield u'\n'
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
23
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
24
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
25 class Wiki(hatta.Wiki):
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
26 @hatta.wiki.URL('/+slides/<title:title>')
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
27 def slides(self, request, title):
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
28 """Dump the HTML content of the pages listed."""
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
29
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
30 items = self.index.page_links_and_labels(title)
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
31 contents = []
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
32 for t, label in items:
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
33 page = self.get_page(request, t)
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
34 try:
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
35 html = ''.join(page.view_content())
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
36 except hatta.error.NotFoundErr:
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
37 continue
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
38 slide_title = (u'<h1>%s</h1>' % werkzeug.escape(label))
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
39 contents.append(slide_title + html)
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
40 content = ('<div class="slide">%s</div>'
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
41 % '</div><div class="slide">'.join(contents))
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
42 html = """<!DOCTYPE html>
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
43 <link type="text/css" href="../+download/slides.css" rel="stylesheet">
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
44 <link type="text/css" href="../+download/pygments.css" rel="stylesheet">
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
45 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
46 <title>%s</title>
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
47 %s
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
48 <script src="../+download/jquery.js"></script>
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
49 <script src="../+download/slides.js"></script>
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
50 """ % (werkzeug.escape(title), content)
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
51 response = hatta.WikiResponse(html, mimetype='text/html')
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
52 return response
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
53
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
54
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
55 if __name__=='__main__':
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
56 config = hatta.read_config()
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
57 wiki = Wiki(config)
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
58 wiki.mime_map['text/x-wiki'] = WikiPageWiki
f22fefe05c25 slides code
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff changeset
59 hatta.main(wiki=wiki)