Changeset 754
- Timestamp:
- 05/09/06 12:30:45 (3 years ago)
- Files:
-
- wikiworkflowpatch/0.9/wikiworkflowpatch.diff (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wikiworkflowpatch/0.9/wikiworkflowpatch.diff
r452 r754 1 1 Index: trac/wiki/api.py 2 2 =================================================================== 3 --- trac/wiki/api.py ( revision 32)4 +++ trac/wiki/api.py ( working copy)5 @@ -65,16 +65,3 0@@3 --- trac/wiki/api.py (.../vendor/trac-0.9.4) (revision 25) 4 +++ trac/wiki/api.py (.../branches/wikiflowpatch/0.9) (working copy) 5 @@ -65,16 +65,35 @@ 6 6 7 7 def get_link_resolvers(): … … 20 20 + version is the version of text the edit was based on. 21 21 + """ 22 + 23 +class IWikiModel(Interface): 24 + 25 + def get_page(name=None, version=None, db=None, latest=None): 26 + """Get a WikiPage object.""" 22 27 + 23 28 class WikiSystem(Component): … … 35 40 INDEX_UPDATE_INTERVAL = 5 # seconds 36 41 37 @@ -213,3 +2 27,11 @@42 @@ -213,3 +232,11 @@ 38 43 else: 39 44 return '<a class="wiki" href="%s">%s</a>' \ … … 49 54 Index: trac/wiki/web_ui.py 50 55 =================================================================== 51 --- trac/wiki/web_ui.py ( revision 32)52 +++ trac/wiki/web_ui.py ( working copy)56 --- trac/wiki/web_ui.py (.../vendor/trac-0.9.4) (revision 25) 57 +++ trac/wiki/web_ui.py (.../branches/wikiflowpatch/0.9) (working copy) 53 58 @@ -30,6 +30,7 @@ 54 59 from trac.versioncontrol.diff import get_diff_options, hdf_diff … … 59 64 from trac.wiki.formatter import wiki_to_html, wiki_to_oneliner 60 65 61 @@ -79,12 +80,16 @@ 66 @@ -63,7 +64,8 @@ 67 # IRequestHandler methods 68 69 def match_request(self, req): 70 - match = re.match(r'^/wiki(?:/(.*))?', req.path_info) 71 + # match = re.match(r'^/wiki(?:/(.*))?', req.path_info) 72 + match = re.match(r'^/wiki(?:/(.*)|\W+)?$', req.path_info) 73 if match: 74 if match.group(1): 75 req.args['page'] = match.group(1) 76 @@ -79,12 +81,16 @@ 62 77 63 78 add_stylesheet(req, 'common/css/wiki.css') … … 79 94 self._render_editor(req, db, page) 80 95 elif req.args.has_key('preview'): 81 @@ -101,11 +10 6,24 @@96 @@ -101,11 +107,24 @@ 82 97 elif action == 'delete': 83 98 self._render_confirm(req, db, page) … … 105 120 if req.args.get('format') == 'txt': 106 121 req.send_response(200) 107 @@ -155, 7 +173,7@@122 @@ -155,13 +174,14 @@ 108 123 req.perm.assert_permission('WIKI_DELETE') 109 124 … … 114 129 version = None 115 130 if req.args.has_key('version'): 116 @@ -185,7 +203,7 @@ 117 131 version = int(req.args.get('version', 0)) 132 133 page.delete(version, db) 134 + # XXX why is there a commit here, but none after save() 135 db.commit() 136 137 if not page.exists: 138 @@ -183,9 +203,11 @@ 139 # WIKI_ADMIN 140 page.readonly = int(req.args.has_key('readonly')) 141 142 + # definitely need to pass db in here, so that change listeners 143 + # can cause rollback 118 144 page.save(req.args.get('author'), req.args.get('comment'), 119 req.remote_addr)145 - req.remote_addr) 120 146 - req.redirect(self.env.href.wiki(page.name)) 147 + req.remote_addr, db=db) 121 148 + req.redirect(self.env.href.wiki(page.name, version=page.version)) 122 149 123 150 def _render_confirm(self, req, db, page): 124 151 if page.readonly: 125 @@ -312,7 +33 0,7 @@152 @@ -312,7 +334,7 @@ 126 153 info['readonly'] = int(req.args.has_key('readonly')) 127 154 req.hdf['wiki'] = info … … 132 159 HDF. 133 160 134 @@ -327,7 +34 5,8 @@161 @@ -327,7 +349,8 @@ 135 162 req.hdf['title'] = page.name + ' (history)' 136 163 … … 144 171 Index: trac/wiki/model.py 145 172 =================================================================== 146 --- trac/wiki/model.py (revision 32) 147 +++ trac/wiki/model.py (working copy) 148 @@ -22,15 +22,15 @@ 173 --- trac/wiki/model.py (.../vendor/trac-0.9.4) (revision 25) 174 +++ trac/wiki/model.py (.../branches/wikiflowpatch/0.9) (working copy) 175 @@ -20,17 +20,17 @@ 176 import time 177 149 178 from trac.core import * 150 from trac.wiki.api import WikiSystem 179 -from trac.wiki.api import WikiSystem 180 +from trac.wiki.api import WikiSystem, IWikiModel 151 181 152 182 - … … 211 241 cursor = db.cursor() 212 242 cursor.execute("UPDATE wiki SET readonly=%s WHERE name=%s", 213 @@ -137,12 +148, 34@@243 @@ -137,12 +148,53 @@ 214 244 self.old_readonly = self.readonly 215 245 self.old_text = self.text … … 243 273 + for controller in WikiSystem(self.env).workflow_controllers: 244 274 + w = controller.would_collide(req, self.name, self.version) 245 + # this does the right thing for None, True, or False, with275 + # This does the right thing for None, True, or False, with 246 276 + # True taking precedence over False, and both taking 247 + # precedence over None -- python is great277 + # precedence over None -- python is soooo nice. 248 278 + would = would or w 249 279 + return would 250 280 + 281 +class WikiModel(Component): 282 + implements(IWikiModel) 283 + 284 + def get_page(self, name=None, version=None, db=None, latest=None): 285 + """Get a WikiPage object.""" 286 + return WikiPage(env=self.env, name=name, version=version, 287 + db=db, latest=latest) 288 + 289 + def page_count(self, db=None): 290 + if not db: 291 + db = self.env.get_db_cnx() 292 + cursor = db.cursor() 293 + cursor.execute("SELECT count(name) FROM wiki") 294 + row = cursor.fetchone() 295 + if row: 296 + count = row[0] 297 + else: 298 + count = 0 299 + return count 251 300 + 252 301 Index: templates/wiki.cs 253 302 =================================================================== 254 --- templates/wiki.cs ( revision 32)255 +++ templates/wiki.cs ( working copy)303 --- templates/wiki.cs (.../vendor/trac-0.9.4) (revision 25) 304 +++ templates/wiki.cs (.../branches/wikiflowpatch/0.9) (working copy) 256 305 @@ -289,6 +289,9 @@ 257 306 if:trac.acl.WIKI_MODIFY ?>
