annotate bitsyblog/bitsyblog.py @ 27:4101fdb16ab2

move data up a bit
author k0s <k0scist@gmail.com>
date Sat, 31 Oct 2009 01:36:25 -0400
parents e37d117a9deb
children e54a6405a496
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
1 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
2 a tiny tiny blog.
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
3 this is the view class and is more bitsyblog than anything
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
4 else can claim to be
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
5 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
6
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
7 ### global variables
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
8
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
9 # who can view which blog posts
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
10 roles = { 'public': ( 'public', ),
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
11 'friend': ( 'public', 'secret' ),
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
12 'author': ( 'public', 'secret', 'private' ), }
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
13
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
14 ### imports
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
15
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
16 import dateutil.parser # XXX separate, for now
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
17 import parser # bitsyblog dateutil parser
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
18
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
19 import cgi
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
20 import datetime
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
21 import docutils
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
22 import docutils.core
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
23 import inspect
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
24 import markup
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
25 import os
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
26 import PyRSS2Gen
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
27 import re
4
60cfc4b825f0 order imports
k0s <k0scist@gmail.com>
parents: 3
diff changeset
28
60cfc4b825f0 order imports
k0s <k0scist@gmail.com>
parents: 3
diff changeset
29 import utils # local import
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
30
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
31 from blog import FileBlog
4
60cfc4b825f0 order imports
k0s <k0scist@gmail.com>
parents: 3
diff changeset
32 from cStringIO import StringIO
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
33 from docutils.utils import SystemMessage
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
34 from genshi.builder import Markup
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
35 from genshi.template import TemplateLoader
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
36 from lxml import etree
4
60cfc4b825f0 order imports
k0s <k0scist@gmail.com>
parents: 3
diff changeset
37 from markup.form import Form
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
38 from paste.fileapp import FileApp
6
3198742f7a86 notes to self
k0s <k0scist@gmail.com>
parents: 4
diff changeset
39 from pkg_resources import resource_filename
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
40 from urlparse import urlparse
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
41 from user import FilespaceUsers
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
42 from webob import Request, Response, exc
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
43
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
44 ### exceptions
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
45
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
46 class BlogPathException(Exception):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
47 """exception when trying to retrieve the blog"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
48
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
49 ### the main course
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
50
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
51 class BitsyBlog(object):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
52 """a very tiny blog"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
53
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
54 ### class level variables
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
55 defaults = { 'date_format': '%H:%M %F',
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
56 'file_dir': os.path.dirname(__file__),
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
57 'subject': '[ %(date)s ]:',
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
58 'n_links': 5, # number of links for navigation
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
59 'site_name': 'bitsyblog',
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
60 'auto_reload': 'True',
6
3198742f7a86 notes to self
k0s <k0scist@gmail.com>
parents: 4
diff changeset
61 'help_file': None,
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
62 }
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
63
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
64
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
65 cooked_bodies = {}
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
66
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
67 def __init__(self, **kw):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
68 for key in self.defaults:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
69 setattr(self, key, kw.get(key, self.defaults[key]))
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
70 self.n_links = int(self.n_links) # could be a string from the .ini
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
71 self.response_functions = { 'GET': self.get,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
72 'POST': self.post,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
73 'PUT': self.put
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
74 }
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
75
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
76 # abstract attributes
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
77 self.users = FilespaceUsers(self.file_dir)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
78 self.blog = FileBlog(self.file_dir)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
79 self.cooker = self.restructuredText
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
80
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
81 # template renderer
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
82 self.loader = TemplateLoader(resource_filename(__name__, 'templates'),
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
83 auto_reload=self.auto_reload.lower()=='true')
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
84
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
85 # static file renderer
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
86
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
87 # helpfile
3
1368be6c3b70 fix self.help_file
k0s <k0scist@gmail.com>
parents: 0
diff changeset
88 if self.help_file and os.path.exists(self.help_file):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
89 help = file(self.help_file).read()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
90 self.help = docutils.core.publish_string(help,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
91 writer_name='html',
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
92 settings_overrides={'report_level': 5})
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
93
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
94 # for BitsyAuth
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
95 self.newuser = self.users.new
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
96
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
97 ### methods dealing with HTTP
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
98
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
99 def __call__(self, environ, start_response):
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
100 request = Request(environ)
27
4101fdb16ab2 move data up a bit
k0s <k0scist@gmail.com>
parents: 26
diff changeset
101
4101fdb16ab2 move data up a bit
k0s <k0scist@gmail.com>
parents: 26
diff changeset
102 # GENSHI: data dictionary
4101fdb16ab2 move data up a bit
k0s <k0scist@gmail.com>
parents: 26
diff changeset
103 request.environ['data'] = { 'site_name': self.site_name,
4101fdb16ab2 move data up a bit
k0s <k0scist@gmail.com>
parents: 26
diff changeset
104 'request': request,
4101fdb16ab2 move data up a bit
k0s <k0scist@gmail.com>
parents: 26
diff changeset
105 'link': self.link,
4101fdb16ab2 move data up a bit
k0s <k0scist@gmail.com>
parents: 26
diff changeset
106 'logo': self.logo(request) }
4101fdb16ab2 move data up a bit
k0s <k0scist@gmail.com>
parents: 26
diff changeset
107
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
108 res = self.response_functions.get(request.method, self.error())(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
109 return res(environ, start_response)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
110
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
111 def get_response(self, text, content_type='text/html'):
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
112 # XXX to deprecate
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
113 res = Response(content_type=content_type, body=text)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
114 return res
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
115
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
116 def logo(self, request):
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
117 _logo = 'bitsyblog.png' # TODO: should go to self.logo
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
118 logo = os.path.join(self.file_dir, _logo)
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
119 if os.path.exists(logo):
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
120 return self.link(request, _logo)
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
121
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
122 def get_index(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
123 """returns material pertaining to the root of the site"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
124
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
125 path = request.path_info.strip('/')
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
126 n_links = self.number_of_links(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
127
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
128 ### the front page
19
8931c5b7e632 * fixing up index to display [in progress]
k0s <k0scist@gmail.com>
parents: 17
diff changeset
129 if not path:
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
130 return self.get_response(self.index(request, n_links))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
131
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
132 ### feeds
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
133
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
134 n_posts = self.number_of_posts(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
135
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
136 # site rss
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
137 if path == 'rss':
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
138 if n_posts is None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
139 n_posts = 10
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
140 return self.get_response(self.site_rss(request, n_posts), content_type='text/xml')
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
141
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
142 # site atom
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
143 if path == 'atom':
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
144 if n_posts is None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
145 n_posts = 10
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
146 return self.get_response(self.atom(request, self.blog.latest(self.users.users(), n_posts)), content_type='text/xml')
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
147
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
148 ### help
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
149 if path == 'help' and hasattr(self, 'help'):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
150 return self.get_response(self.help)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
151
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
152 ### static files
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
153
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
154 # site.css
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
155 if path == 'css/site.css':
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
156 css_file = os.path.join(self.file_dir, 'site.css')
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
157 return self.get_response(file(css_file).read(), content_type='text/css') # should use FileApp
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
158
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
159 # logo
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
160 if path == 'bitsyblog.png':
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
161 logo = os.path.join(self.file_dir, 'bitsyblog.png')
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
162 if not self.logo(request):
19
8931c5b7e632 * fixing up index to display [in progress]
k0s <k0scist@gmail.com>
parents: 17
diff changeset
163 raise exc.HTTPNotFound
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
164 return self.get_response(file(logo, 'rb').read(), content_type='image/png') # should use FileApp
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
165
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
166 def get_user_space(self, user, path, request):
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
167 """returns a part of the user space"""
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
168
14
645aa0f3279f userland refactoring...still lives on request, sadly, but better
k0s <k0scist@gmail.com>
parents: 12
diff changeset
169 # request.user = self.users[user] # user whose blog is viewed
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
170 check = self.check_user(user, request) # is this the authenticated user?
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
171
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
172 feed = None # not an rss/atom feed by default (flag)
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
173 n_posts = self.number_of_posts(request, user)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
174
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
175 # special paths
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
176 if path == [ 'post' ]:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
177 if check is not None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
178 return check
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
179 return self.get_response(self.form_post(request, user))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
180
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
181 if path == [ 'preferences' ]:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
182 if check is not None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
183 return check
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
184 return self.get_response(self.preferences(request, user))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
185
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
186 if path == [ 'rss' ]:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
187 feed = 'rss'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
188 path = []
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
189 if n_posts is None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
190 n_posts = 10 # TODO: allow to be configurable
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
191
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
192 if path == [ 'atom' ]:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
193 feed = 'atom'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
194 path = []
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
195 if n_posts is None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
196 n_posts = 10 # TODO: allow to be configurable
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
197
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
198 if len(path) == 2:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
199 if path[0] == 'css':
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
200 for i in request.user.settings['CSS']:
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
201 # find the right CSS file
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
202 if i['filename'] == path[1]:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
203 return self.get_response(i['css'], content_type='text/css')
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
204 else:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
205 return exc.HTTPNotFound('CSS "%s" not found' % path[1])
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
206
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
207 role = self.role(user, request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
208
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
209 # get the blog
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
210 try:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
211 blog = self.get_blog(user, path, role, n_items=n_posts)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
212 except BlogPathException, e:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
213 return exc.HTTPNotFound(str(e))
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
214 except exc.HTTPException, e:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
215 return e.wsgi_response
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
216
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
217 if feed == 'rss':
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
218 content = self.rss(request, user, blog) # XXX different signatures
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
219 return self.get_response(content, content_type='text/xml')
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
220
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
221 if feed == 'atom':
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
222 content = self.atom(request, blog, user) # XXX different signatures
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
223 return self.get_response(content, content_type='text/xml')
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
224
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
225 # reverse the blog if necessary
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
226 if request.GET.get('sort') == 'forward':
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
227 blog = list(reversed(blog))
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
228
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
229 n_links = self.number_of_links(request, user)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
230 # don't display navigation for short blogs
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
231 if len(blog) < 2:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
232 n_links = 0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
233
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
234 # write the blog
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
235 content = self.write_blog(user, blog, request.path_info, n_links, request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
236
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
237 # return the content
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
238 return self.get_response(content)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
239
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
240 def get(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
241 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
242 display the blog or respond to a get request
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
243 """
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
244
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
245 # front matter of the site
19
8931c5b7e632 * fixing up index to display [in progress]
k0s <k0scist@gmail.com>
parents: 17
diff changeset
246 index = self.get_index(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
247 if index is not None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
248 return index
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
249
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
250 ### user space
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
251 user, path = self.userpath(request)
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
252
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
253 return self.get_user_space(user, path, request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
254
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
255 def post(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
256 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
257 write a blog entry and other POST requests
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
258 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
259
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
260 # find user + path
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
261 user, path = self.userpath(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
262
23
bf314b9a261a posting TTW now works
k0s <k0scist@gmail.com>
parents: 22
diff changeset
263 # check to make sure the user is authenticated
25
62c961bb91e6 * allow changing of privacy on blog entries
k0s <k0scist@gmail.com>
parents: 23
diff changeset
264 # and is the resource owner
23
bf314b9a261a posting TTW now works
k0s <k0scist@gmail.com>
parents: 22
diff changeset
265 check = self.check_user(user, request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
266 if check is not None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
267 return check
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
268
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
269 if len(path):
25
62c961bb91e6 * allow changing of privacy on blog entries
k0s <k0scist@gmail.com>
parents: 23
diff changeset
270
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
271 if path == [ 'preferences' ]:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
272
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
273 # make the data look like we want
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
274 settings = {}
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
275 settings['Date format'] = request.POST.get('Date format')
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
276 settings['Subject'] = '%(date)s'.join((request.POST['Subject-0'], request.POST['Subject-2']))
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
277 settings['Stylesheet'] = request.POST['Stylesheet']
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
278 settings['CSS file'] = request.POST.get('CSS file')
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
279 settings['Friends'] = ', '.join(request.POST.getall('Friends'))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
280
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
281 errors = self.users.write_settings(user, **settings)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
282 if errors: # re-display form with errors
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
283 return self.get_response(self.preferences(request, user, errors))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
284
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
285 return self.get_response(self.preferences(request, user, message='Changes saved'))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
286 elif len(path) == 1 and self.isentry(path[0]):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
287 entry = self.blog.entry(user, path[0], roles['author'])
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
288 if entry is None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
289 return exc.HTTPNotFound("Blog entry %s not found %s" % path[0])
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
290 privacy = request.POST.get('privacy')
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
291 datestamp = entry.datestamp()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
292 if privacy:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
293 self.blog.delete(user, datestamp)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
294 self.blog.post(user, datestamp, entry.body, privacy)
23
bf314b9a261a posting TTW now works
k0s <k0scist@gmail.com>
parents: 22
diff changeset
295 return exc.HTTPSeeOther("Settings updated", location=self.user_url(request, user, datestamp))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
296 else:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
297 return exc.HTTPMethodNotAllowed("Not sure what you're trying to do")
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
298
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
299 # get the body of the post
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
300 body = request.body
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
301 body = request.POST.get('form-post', body)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
302 body = body.strip()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
303 if not body:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
304 return exc.HTTPSeeOther("Your post has no content! No blog for you",
23
bf314b9a261a posting TTW now works
k0s <k0scist@gmail.com>
parents: 22
diff changeset
305 location=self.user_url(request, user, 'post'))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
306
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
307 # determine if the post is secret or private
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
308 privacy = request.GET.get('privacy') or request.POST.get('privacy') or 'public'
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
309
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
310 # write the file
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
311 now = utils.datestamp(datetime.datetime.now())
23
bf314b9a261a posting TTW now works
k0s <k0scist@gmail.com>
parents: 22
diff changeset
312 location = self.user_url(request, user, now)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
313 self.blog.post(user, now, body, privacy)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
314
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
315 # point the user at the post
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
316 return exc.HTTPSeeOther("Post blogged by bitsy", location=location)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
317
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
318 def put(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
319 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
320 PUT several blog entries from a file
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
321 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
322
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
323 # find user + path
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
324 user, path = self.userpath(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
325
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
326 if user not in self.users.users():
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
327 return exc.HTTPNotFound("No blog found for %s" % user)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
328
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
329 if len(path):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
330 return exc.HTTPMethodNotAllowed("Not sure what you're trying to do")
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
331
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
332 # find the dates + entries in the file
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
333 regex = '\[.*\]:'
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
334 entries = re.split(regex, request.body)[1:]
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
335 dates = [ date.strip().strip(':').strip('[]').strip()
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
336 for date in re.findall(regex, request.body) ]
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
337 dates = [ dateutil.parser.parse(date) for date in dates ]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
338
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
339 # write to the blog
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
340 for i in range(len(entries)):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
341 datestamp = utils.datestamp(dates[i])
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
342 self.blog.post(user, datestamp, entries[i], 'public')
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
343
6
3198742f7a86 notes to self
k0s <k0scist@gmail.com>
parents: 4
diff changeset
344 # TODO: redirect to index page
3198742f7a86 notes to self
k0s <k0scist@gmail.com>
parents: 4
diff changeset
345 return exc.HTTPOk("%s posts blogged" % len(entries))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
346
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
347
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
348 def error(self):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
349 """deal with non-supported methods"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
350 methods = ', '.join(self.response_functions.keys()[:1])
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
351 methods += ' and %s' % self.response_functions.keys()[-1]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
352 return exc.HTTPMethodNotAllowed("Only %s operations are allowed" % methods)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
353
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
354 ### auth/auth functions
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
355
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
356 def passwords(self):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
357 return self.users.passwords()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
358
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
359 def authenticated(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
360 """return authenticated user"""
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
361 # XXX needed?
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
362 return request.environ.get('REMOTE_USER')
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
363
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
364 def check_user(self, user, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
365 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
366 determine authenticated user
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
367 returns None on success
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
368 """
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
369 authenticated = self.authenticated(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
370 if authenticated is None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
371 return exc.HTTPUnauthorized('Unauthorized')
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
372 elif user != authenticated:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
373 return exc.HTTPForbidden("Forbidden")
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
374
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
375 def role(self, user, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
376 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
377 determine what role the authenticated member has
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
378 with respect to the user
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
379 """
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
380 auth = self.authenticated(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
381 if not auth:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
382 return 'public'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
383 if auth == user:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
384 return 'author'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
385 else:
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
386 if auth in request.user.settings['Friends']:
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
387 return 'friend'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
388 else:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
389 return 'public'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
390
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
391 ### user methods
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
392
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
393 def userpath(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
394 """user who's blog one is viewing"""
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
395 path = request.path_info.strip('/').split('/')
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
396 name = path[0]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
397 path = path[1:]
14
645aa0f3279f userland refactoring...still lives on request, sadly, but better
k0s <k0scist@gmail.com>
parents: 12
diff changeset
398 if name:
645aa0f3279f userland refactoring...still lives on request, sadly, but better
k0s <k0scist@gmail.com>
parents: 12
diff changeset
399 if name not in self.users:
645aa0f3279f userland refactoring...still lives on request, sadly, but better
k0s <k0scist@gmail.com>
parents: 12
diff changeset
400 exc.HTTPNotFound("No blog found for %s" % user)
645aa0f3279f userland refactoring...still lives on request, sadly, but better
k0s <k0scist@gmail.com>
parents: 12
diff changeset
401 request.user = self.users[name]
645aa0f3279f userland refactoring...still lives on request, sadly, but better
k0s <k0scist@gmail.com>
parents: 12
diff changeset
402 else:
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
403 name = None
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
404 return name, path
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
405
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
406 ### methods
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
407
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
408 def link(self, request, path=(), permanant=False):
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
409 if isinstance(path, basestring):
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
410 path = [ path ]
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
411 path = [ i.strip('/') for i in path ]
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
412 if permanant:
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
413 application_url = request.application_url
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
414 else:
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
415
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
416 application_url = urlparse(request.application_url)[2]
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
417 path = [ application_url ] + list(path)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
418 return '/'.join(path)
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
419
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
420 def user_url(self, request, user, *args, **kw):
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
421 """link to a user resource"""
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
422 permalink = kw.get('permalink', False)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
423 path = [ user ]
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
424 path.extend(args)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
425 return self.link(request, path, permalink)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
426
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
427 def permalink(self, request, blogentry):
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
428 """permalink for a blog entry"""
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
429 return self.user_url(request, blogentry.user, blogentry.datestamp(), permalink=True)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
430
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
431 def mangledurl(self, request, blogentry):
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
432 """return a mangled url for obfuscated sharing"""
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
433 return self.user_url(request, blogentry.user, 'x%x' % (int(blogentry.datestamp()) * self.users.secret(blogentry.user)), permalink=True)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
434
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
435 def unmangleurl(self, url, user):
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
436 """unmangle a url for obfuscated sharing"""
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
437 url = url.strip('x')
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
438 try:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
439 value = int(url, 16)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
440 except ValueError:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
441 return None
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
442
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
443 # XXX once one has a mangled url, one can obtain the secret
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
444 value /= self.users.secret(user)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
445
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
446 entry = str(value)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
447 if self.isentry(entry):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
448 return self.blog.entry(user, entry, ['public', 'secret', 'private'])
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
449
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
450 ### blog retrival methods
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
451
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
452 def isentry(self, string): # TODO -> blog.py
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
453 """returns whether the string is a blog entry"""
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
454 return (len(string) == len(''.join(utils.timeformat))) and string.isdigit()
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
455
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
456 def number_of_posts(self, request, user=None):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
457 """return the number of blog posts to display"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
458 # determine number of posts to display (None -> all)
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
459 n_posts = request.GET.get('posts', None)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
460 if n_posts is not None:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
461 try:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
462 n_posts = int(n_posts)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
463 if n_links > 0 and n_links > n_posts:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
464 n_links = n_posts # don't display more links than posts
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
465 except (TypeError, ValueError):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
466 n_posts = None
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
467 return n_posts
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
468
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
469 def number_of_links(self, request, user=None):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
470 """return the number of links to display in the navigation"""
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
471 n_links = request.GET.get('n')
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
472 if n_links == 'all':
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
473 return -1
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
474 try:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
475 n_links = int(n_links)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
476 except (TypeError, ValueError):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
477 n_links = self.n_links
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
478 return n_links
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
479
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
480 def get_blog(self, user, path, role='public', n_items=None):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
481 """retrieve the blog entry based on the path"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
482
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
483 notfound = "blog entry not found"
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
484
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
485 # get permissions
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
486 allowed = roles[role]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
487
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
488 # entire blog
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
489 if not path:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
490 return self.blog(user, allowed, n_items)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
491
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
492 # mangled urls
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
493 if len(path) == 1 and path[0].startswith('x'):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
494 entry = self.unmangleurl(path[0], user)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
495 if entry:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
496 return [ entry ]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
497 else:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
498 raise BlogPathException(notfound)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
499
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
500 # individual blog entry
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
501 if (len(path) == 1) and self.isentry(path[0]):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
502 blog = self.blog.entry(user, path[0], allowed)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
503 if not blog:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
504 raise BlogPathException(notfound)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
505 return [ blog ]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
506
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
507 # parse the path into a date path
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
508 n_date_vals = 3 # year, month, date
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
509 if len(path) > n_date_vals:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
510 raise BlogPathException(notfound)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
511
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
512 # ensure the path conforms to expected values (ints):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
513 try:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
514 [ int(i) for i in path]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
515 except ValueError:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
516 raise BlogPathException(notfound)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
517
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
518 # get the blog
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
519 return self.blog.entries(user, allowed, *path)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
520
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
521 ### methods that write HTML
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
522
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
523 def render(self, request, body, title=None, feedtitle=None):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
524 """layout the page in a unified way"""
17
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
525 _title = [ self.site_name ]
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
526 user = getattr(request, 'user', None)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
527 if user:
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
528 stylesheets = request.user['CSS']
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
529 stylesheets = [ (("/%s" % self.user_url(request, user.name, 'css', css['filename'])),
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
530 css['name']) for css in stylesheets ]
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
531 _title.insert(0, request.user.name)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
532 else:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
533 stylesheets = (("/css/site.css", "Default"),)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
534
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
535 if title:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
536 _title.insert(0, title)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
537
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
538 title = ' - '.join(_title)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
539 head_markup = ()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
540 if feedtitle:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
541 head_markup = ( '<link rel="alternate" type="application/atom+xml" title="%s" href="atom" />' % feedtitle,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
542 '<link rel="alternate" type="application/rss+xml" title="%s" href="rss" />' % feedtitle,)
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
543
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
544 return markup.wrap(self.site_nav(request)+body, title, stylesheets, head_markup=head_markup)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
545
17
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
546 def stylesheets(self, request):
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
547 user = getattr(request, 'user', None)
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
548 if user:
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
549 stylesheets = request.user['CSS']
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
550 stylesheets = [ (self.user_url(request, user.name, 'css', css['filename']),
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
551 css['name']) for css in stylesheets ]
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
552 else:
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
553 stylesheets = [(self.link(request, "css/site.css"), "Default")]
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
554 return stylesheets
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
555
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
556
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
557 def site_nav(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
558 """returns HTML for site navigation"""
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
559
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
560 links = [(self.link(request), '/'), ]
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
561 user = self.authenticated(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
562 if user:
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
563 links.extend([(self.user_url(request, user), user),
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
564 (self.user_url(request, user, 'post'), 'post'),
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
565 (self.user_url(request, user, 'preferences'), 'preferences'),
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
566 (self.link(request, 'logout'), 'logout')])
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
567 else:
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
568 links.extend([(self.link(request, 'login'), 'login'),
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
569 (self.link(request, 'join'), 'join')])
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
570
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
571 if hasattr(self, 'help'):
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
572 links.append((self.link(request, 'help'), 'help'))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
573
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
574 request.environ['data']['links'] = links
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
575
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
576
19
8931c5b7e632 * fixing up index to display [in progress]
k0s <k0scist@gmail.com>
parents: 17
diff changeset
577 def index(self, request, n_links):
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
578 data = request.environ['data']
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
579 self.site_nav(request)
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
580 template = self.loader.load('index.html')
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
581 return template.generate(**request.environ['data']).render()
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
582
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
583 # retval = StringIO()
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
584 # print >> retval, '<h1><img src="bitsyblog.png" alt="bitsyblog"/></h1>'
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
585
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
586 # # get the blogs
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
587 # blogs = {}
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
588 # for user in self.users:
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
589 # blog = self.blog(user, ('public',), n_links)
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
590 # if blog:
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
591 # blogs[user] = blog
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
592 # users = blogs.keys()
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
593
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
594 # # display latest active user first
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
595 # users.sort(key=lambda user: blogs[user][0].date, reverse=True)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
596
20
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
597 # # display users' blogs
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
598 # for user in users:
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
599 # print >> retval, '<div id="%s" class="user">' % user
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
600 # print >> retval, '<a href="%s">%s</a>' % (user, user)
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
601 # blog = blogs[user]
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
602 # print >> retval, self.navigation(user, blog, '/%s' % user, n_links)
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
603 # print >> retval, '</div>'
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
604
1554cb56aa2f got index working, just doesnt do anything
k0s <k0scist@gmail.com>
parents: 19
diff changeset
605 # return self.render(request, retval.getvalue(), feedtitle=self.site_name)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
606
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
607 def navigation(self, user, blog, path, n_links, n_char=80):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
608 prefs = self.users[user].settings
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
609
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
610 if n_links == 0 or not len(blog):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
611 return ''
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
612 retval = StringIO()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
613 print >> retval, '<div class="navigation">'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
614 more = ''
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
615 if (n_links != -1) and (len(blog) > n_links):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
616 more = '<a href="%s?n=all">more</a>' % path
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
617 blog = blog[:n_links]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
618
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
619 entries = []
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
620 for entry in blog:
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
621 blog_id = entry.datestamp()
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
622 format = prefs.get('Date format', self.date_format)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
623 datestamp = entry.date.strftime(format)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
624 synopsis = entry.title()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
625 if synopsis:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
626 synopsis = ': %s' % cgi.escape(synopsis)
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
627 entries.append(markup.link("%s#%s" % (path, blog_id), datestamp) + synopsis)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
628
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
629 print >> retval, markup.listify(entries)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
630 print >> retval, more
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
631 print >> retval, '</div>'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
632 return retval.getvalue()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
633
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
634
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
635 def write_blog(self, user, blog, path, n_links, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
636 """return the user's blog in HTML"""
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
637
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
638 # XXX probably should go elsewhere
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
639 for entry in blog:
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
640 if (user, entry.datestamp()) not in self.cooked_bodies:
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
641 self.cooked_bodies[(user, entry.datestamp())] = self.cooker(entry.body)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
642 entry.cooked_body = Markup(self.cooked_bodies[(user, entry.datestamp())])
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
643
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
644 # site nav
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
645 # XXX def site_nav() puts directly in request.environ['data']
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
646 # should return instead
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
647 self.site_nav(request)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
648
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
649 # user data -> should be moved up the chain
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
650 data = request.environ['data']
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
651 data['user'] = user
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
652 data['role'] = self.role(user, request)
17
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
653 data['stylesheets'] = self.stylesheets(request)
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
654 data['subject'] = request.user.settings.get('Subject', self.subject)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
655 data['date_format'] = request.user.settings.get('Date format', self.date_format)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
656 data['user_url'] = self.user_url
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
657 data['mangledurl'] = self.mangledurl
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
658
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
659 # blog data
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
660 data['blog'] = blog
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
661 data['n_links'] = n_links
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
662
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
663 # render the template
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
664 template = self.loader.load('blog.html')
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
665 return template.generate(**data).render()
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
666
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
667 def restructuredText(self, string):
17
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
668 """renders a string with restructured text"""
e5cbc53cacf8 now have stylesheets
k0s <k0scist@gmail.com>
parents: 16
diff changeset
669
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
670 origstring = string
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
671 settings = { 'report_level': 5 }
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
672 string = string.strip()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
673 try:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
674
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
675 parts = docutils.core.publish_parts(string.strip(),
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
676 writer_name='html',
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
677 settings_overrides=settings)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
678 body = parts['body']
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
679 except SystemMessage, e:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
680 lines = [ cgi.escape(i.strip()) for i in string.split('\n') ]
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
681 body = '<br/>\n'.join(lines)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
682
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
683
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
684 retval = '<div class="blog-body">%s</div>' % body
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
685 return retval
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
686
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
687 # this should be reenabled if 'system-message's again appear in the markup
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
688 try:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
689 foo = etree.fromstring(retval)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
690 except etree.XMLSyntaxError:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
691 return retval
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
692 # should cleanup the <div class="system-message">
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
693 for i in foo.getiterator():
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
694 if dict(i.items()).get('class') == 'system-message':
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
695 i.clear()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
696
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
697 return etree.tostring(foo)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
698
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
699
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
700 ### feeds
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
701
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
702 def site_rss(self, request, n_items=10):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
703 blog = self.blog.latest(list(self.users.users()), n_items)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
704 title = self.site_name + ' - rss'
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
705 link = request.application_url
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
706 description = "latest scribblings on %s" % self.site_name
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
707 lastBuildDate = datetime.datetime.now()
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
708 items = [ self.rss_item(request, entry.user, entry) for entry in blog ]
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
709 rss = PyRSS2Gen.RSS2(title=title,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
710 link=link,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
711 description=description,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
712 lastBuildDate=lastBuildDate,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
713 items=items)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
714 return rss.to_xml()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
715
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
716 def rss(self, request, user, blog):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
717 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
718 rss feed for a user's blog
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
719 done with PyRSS2Gen:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
720 http://www.dalkescientific.com/Python/PyRSS2Gen.html
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
721 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
722 title = "%s's blog" % user
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
723 link = os.path.split(request.url)[0]
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
724 description = "latest blog entries for %s on %s" % (user, self.site_name)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
725 lastBuildDate = datetime.datetime.now() # not sure what this means
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
726
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
727 items = [ self.rss_item(request, user, entry) for entry in blog ]
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
728 rss = PyRSS2Gen.RSS2(title=title,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
729 link=link,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
730 description=description,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
731 lastBuildDate=lastBuildDate,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
732 items=items)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
733 return rss.to_xml()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
734
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
735 def rss_item(self, request, user, entry):
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
736 if hasattr(request, 'user') and request.user.name == user:
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
737 prefs = request.user.settings
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
738 else:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
739 prefs = self.users[user].settings
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
740 subject = prefs.get('Subject', self.subject)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
741 date_format = prefs.get('Date format', self.date_format)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
742 title = entry.title()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
743 return PyRSS2Gen.RSSItem(title=title, #subject % { 'date': entry.date.strftime(date_format) },
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
744 link=self.permalink(entry),
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
745 description=unicode(entry.body, errors='replace'),
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
746 author=user,
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
747 guid=PyRSS2Gen.Guid(self.permalink(entry)),
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
748 pubDate=entry.date)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
749
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
750
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
751 def atom(self, request, blog, author=None):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
752 retval = StringIO()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
753 print >> retval, """<?xml version="1.0" encoding="utf-8"?>
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
754 <feed xmlns="http://www.w3.org/2005/Atom">
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
755 """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
756 if author:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
757 title = "%s's blog" % author
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
758 link = request.host_url + '/' + author
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
759 else:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
760 title = self.site_name + ' - atom'
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
761 link = request.application_url
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
762
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
763 date = blog[0].date.isoformat()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
764
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
765 print >> retval, '<title>%s</title>' % title
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
766 print >> retval, '<link href="%s" />' % link
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
767 print >> retval, '<updated>%s</updated>' % date
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
768 if author:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
769 print >> retval, """
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
770 <author>
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
771 <name>%s</name>
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
772 </author>""" % author
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
773
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
774 for entry in blog:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
775 print >> retval, '<entry>'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
776 print >> retval, '<title>%s</title>' % cgi.escape(entry.title())
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
777 print >> retval, '<link href="%s" />' % self.permalink(entry)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
778 print >> retval, '<updated>%s</updated>' % entry.date.isoformat()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
779 print >> retval, '<summary>%s</summary>' % cgi.escape(entry.body)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
780
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
781 print >> retval, '</entry>'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
782
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
783 print >> retval, '</feed>'
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
784 return retval.getvalue()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
785
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
786 ### forms and accompanying display
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
787
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
788 def form_post(self, request, user):
21
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
789
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
790 # genshi data
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
791 self.site_nav(request)
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
792 data = request.environ['data']
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
793 data['user'] = user
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
794 data['stylesheets'] = self.stylesheets(request)
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
795 data['user_url'] = self.user_url
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
796
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
797 # render the template
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
798 template = self.loader.load('post.html')
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
799 return template.generate(**data).render()
7cdb3eecc045 make post form genshi
k0s <k0scist@gmail.com>
parents: 20
diff changeset
800
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
801
12
dd8c1c8ae0da more removing of self.request and general cleanup
k0s <k0scist@gmail.com>
parents: 9
diff changeset
802 def preferences(self, request, user, errors=None, message=None):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
803 """user preferences form"""
26
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
804
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
805 # genshi data
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
806 self.site_nav(request)
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
807 data = request.environ['data']
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
808 data['user'] = user
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
809 data['stylesheets'] = self.stylesheets(request)
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
810
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
811 # form data
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
812 prefs = request.user.settings
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
813 data['date_format'] = prefs.get('Date format', self.date_format)
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
814 data['now'] = datetime.datetime.now().strftime(data['date_format'])
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
815 subject = prefs.get('Subject', self.subject)
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
816 data['subject'] = subject.split('%(date)s', 1)
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
817 data['css_files'] = [ i['name'] for i in prefs['CSS' ] ]
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
818 data['users'] = [ i for i in list(self.users.users())
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
819 if i != user ]
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
820 data['message'] = message
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
821
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
822 # render the template
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
823 template = self.loader.load('preferences.html')
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
824 return template.generate(**data).render()
e37d117a9deb preferences form now works
k0s <k0scist@gmail.com>
parents: 25
diff changeset
825
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
826
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
827 class BitsierBlog(BitsyBlog):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
828 """single user version of bitsyblog"""
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
829
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
830 def get(self, request):
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
831
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
832 ### user space
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
833 user, path = self.userpath(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
834 if user not in self.users:
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
835 return exc.HTTPNotFound("Blog entry not found")
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
836
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
837 return self.get_user_space(user, path, request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
838
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
839 def userpath(self, request):
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
840 path = request.path_info.strip('/').split('/')
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
841 if path == ['']:
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
842 path = []
14
645aa0f3279f userland refactoring...still lives on request, sadly, but better
k0s <k0scist@gmail.com>
parents: 12
diff changeset
843 request.user = self.users[self.user]
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
844 return self.user, path
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
845
9
e4f28fde518a more self.request cleanup
k0s <k0scist@gmail.com>
parents: 7
diff changeset
846 def user_url(self, request, user, *args, **kw):
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
847 permalink = kw.get('permalink', False)
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
848 return self.link(request, args, permalink)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
849
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
850 def passwords(self):
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
851 return { self.user: self.users.password(self.user) }
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
852
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
853 def site_nav(self, request):
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
854 """returns HTML for site navigation"""
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
855 links = [(self.user_url(request, self.user), self.user), ]
7
57a45adf33d4 separate out request from self. ultimately a new object should be
k0s <k0scist@gmail.com>
parents: 6
diff changeset
856 user = self.authenticated(request)
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
857 if user:
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
858 links.extend([(self.user_url(request, user, 'post'), 'post'),
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
859 (self.user_url(request, user, 'preferences'), 'preferences'),
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
860 (self.link(request, 'logout'), 'logout')])
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
861 else:
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
862 links.append((self.link(request, 'login'), 'login'))
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
863
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
864 if hasattr(self, 'help'):
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
865 links.append((self.link(request, 'help'), 'about'))
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
866
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
867
15
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
868 request.environ['data']['links'] = links
36698624435b blog page mostly works
k0s <k0scist@gmail.com>
parents: 14
diff changeset
869