Added nobts path to page module to no show edit button
[kisspi.git] / modules / page / page.py
1 # -*- coding: utf-8 -*-
2 import kisspi
3 import os
4 import datetime
5 import time
6 import codecs
7
8 MOD = 'page'
9 markdown = kisspi.web.utils.safemarkdown
10 templetor = kisspi.web.template.Template
11
12 def get_page(page):
13     path = kisspi.get_module_path(MOD) + 'pages/'
14     pages = os.listdir(path)
15     if not page in pages:
16         return datetime.datetime.now(), ''
17
18     fi = codecs.open(path+page, mode="r", encoding="utf8")
19     msg = fi.readlines()
20     fi.close()
21
22     date = datetime.datetime.fromtimestamp(float(msg[0]))
23     msg = ''.join(msg[1:])
24     return date, msg
25
26 def get_html(msg):
27     if msg.startswith('#templetor'):
28         result = templetor(msg[10:])().__body__
29         html = result 
30     else:
31         html = markdown(msg)
32     return html
33
34 def show(page, buttons=True):
35     not_found = u'''
36 Page '%s' not exists
37 --------------------
38     '''
39     add_button = '<a href="/%s/edit/%s">Add</a>' % (MOD, page)
40     edit_button = '<a href="/%s/edit/%s">Edit</a>' % (MOD, page)
41     not_found = markdown(not_found % page) + add_button
42
43     date, msg = get_page(page)
44     if not msg:
45         return not_found
46     last_edited = ' Last edited: %s ' % date.ctime()
47
48     html = get_html(msg)
49
50     if buttons:
51         html += edit_button + last_edited 
52
53     return html
54
55 class Show:
56     title = ''
57     def GET(self, page):
58         self.title = page
59         html = show(page)
60         return html 
61
62 class Nobts:
63     title = ''
64     def GET(self, page):
65         html = show(page, buttons=False)
66         return html 
67
68 class Edit:
69     title = ''
70     def GET(self, page):
71         title = 'Edit - ' + page
72         render = kisspi.get_module_render(MOD)
73
74         date, text = get_page(page)
75
76         return render.add(text)
77
78     def POST(self, page):
79         title = 'Edit - ' + page
80         render = kisspi.get_module_render(MOD)
81         form = kisspi.get_input()
82         newpage = form.newpage
83         button = form.button
84
85         if button == 'save':
86             path = kisspi.get_module_path(MOD) + 'pages/' + page
87             fo = codecs.open(path, mode="w", encoding="utf8")
88             fo.write('%s\n' % time.time())
89             fo.write(newpage)
90             fo.close()
91             kisspi.utils.flash(u"Page '%s' created" % page)
92             kisspi.redirect('/page/'+page)
93         else:
94             title = 'Preview - ' + page
95
96             prev = get_html(newpage)
97
98             return render.add(newpage, prev)
99