Changeset 759:928f43458f43 in hatta-dev
Legend:
- Unmodified
- Added
- Removed
-
hatta.py
r758 r759 125 125 mime = 'text/x-wiki' 126 126 return mime 127 128 129 class WikiError(werkzeug.exceptions.HTTPException): 130 """Base class for all error pages.""" 131 132 133 class ForbiddenErrErr(WikiError): 134 code = 403 135 136 137 class NotFoundErrErr(WikiError): 138 code = 404 139 140 141 class UnsupportedMediaTypeErr(WikiError): 142 code = 415 143 144 145 class NotImplementedErr(WikiError): 146 code = 501 147 148 149 class ServiceUnavailableErr(WikiError): 150 code = 503 127 151 128 152 … … 390 414 abspath = os.path.abspath(path) 391 415 if os.path.islink(path) or os.path.isdir(path): 392 raise werkzeug.exceptions.Forbidden(416 raise ForbiddenErr( 393 417 _(u"Can't use symbolic links or directories as pages")) 394 418 if not abspath.startswith(self.path): 395 raise werkzeug.exceptions.Forbidden(419 raise ForbiddenErr( 396 420 _(u"Can't read or write outside of the pages repository")) 397 421 … … 413 437 def _file_to_title(self, filepath): 414 438 if not filepath.startswith(self.repo_prefix): 415 raise werkzeug.exceptions.Forbidden(439 raise ForbiddenErr( 416 440 _(u"Can't read or write outside of the pages repository")) 417 441 name = filepath[len(self.repo_prefix):].strip('/') … … 549 573 return open(file_path, "rb") 550 574 except IOError: 551 raise werkzeug.exceptions.NotFound()575 raise NotFoundErr() 552 576 553 577 def page_file_meta(self, title): … … 566 590 filectx_tip = self._find_filectx(title) 567 591 if filectx_tip is None: 568 raise werkzeug.exceptions.NotFound()592 raise NotFoundErr() 569 593 #return -1, None, u'', u'' 570 594 rev = filectx_tip.filerev() … … 628 652 filectx_tip = self._find_filectx(title) 629 653 if filectx_tip is None: 630 raise werkzeug.exceptions.NotFound()654 raise NotFoundErr() 631 655 try: 632 656 data = filectx_tip.filectx(rev).data() 633 657 except IndexError: 634 raise werkzeug.exceptions.NotFound()658 raise NotFoundErr() 635 659 return data 636 660 … … 720 744 except OSError, e: 721 745 if e.errno == 17 and not os.path.isdir(dir_path): 722 raise werkzeug.exceptions.Forbidden(746 raise ForbiddenErr( 723 747 _(u"Can't make subpages of existing pages")) 724 748 elif e.errno != 17: … … 1495 1519 try: 1496 1520 text = get_text() 1497 except werkzeug.exceptions.NotFound:1521 except NotFoundErr: 1498 1522 text = u'' 1499 1523 extract_links = getattr(page, 'extract_links', lambda x: []) … … 1870 1894 self.wiki._check_lock(self.title) 1871 1895 edit_url = self.get_url(self.title, self.wiki.edit) 1872 except werkzeug.exceptions.Forbidden:1896 except ForbiddenErr: 1873 1897 pass 1874 1898 … … 1915 1939 self.wiki._check_lock(title) 1916 1940 read_only = False 1917 except werkzeug.exceptions.Forbidden:1941 except ForbiddenErr: 1918 1942 read_only = True 1919 1943 for rev, date, author, comment in self.wiki.storage.page_history(title): … … 1992 2016 if old_author == author: 1993 2017 comment = old_comment 1994 except werkzeug.exceptions.NotFound:2018 except NotFoundErr: 1995 2019 comment = _(u'created') 1996 2020 rev = -1 1997 except werkzeug.exceptions.Forbidden, e:2021 except ForbiddenErr, e: 1998 2022 yield werkzeug.html.p( 1999 2023 werkzeug.html(_(unicode(e)))) … … 2117 2141 else: 2118 2142 lexer = pygments.lexers.guess_lexer(text) 2119 except pygments.util.ClassNotFound :2143 except pygments.util.ClassNotFoundErr: 2120 2144 yield werkzeug.html.pre(werkzeug.html(text)) 2121 2145 return … … 2144 2168 try: 2145 2169 text = self.storage.page_text(self.title) 2146 except werkzeug.exceptions.NotFound:2170 except NotFoundErr: 2147 2171 text = u'' 2148 2172 return self.parser.extract_links(text) … … 2188 2212 def view_content(self, lines=None): 2189 2213 if self.title not in self.storage: 2190 raise werkzeug.exceptions.NotFound()2214 raise NotFoundErr() 2191 2215 content = ['<p>Download <a href="%s">%s</a> as <i>%s</i>.</p>' % 2192 2216 (self.request.get_download_url(self.title), … … 2229 2253 def view_content(self, lines=None): 2230 2254 if self.title not in self.storage: 2231 raise werkzeug.exceptions.NotFound()2255 raise NotFoundErr() 2232 2256 content = ['<img src="%s" alt="%s">' 2233 2257 % (self.request.get_url(self.title, self.wiki.render), … … 2256 2280 im.save(cache_file,'PNG') 2257 2281 except IOError: 2258 raise werkzeug.exceptions.UnsupportedMediaType('Image corrupted')2282 raise UnsupportedMediaTypeErr('Image corrupted') 2259 2283 cache_file.close() 2260 2284 return cache_path … … 2285 2309 def view_content(self, lines=None): 2286 2310 if self.title not in self.storage: 2287 raise werkzeug.exceptions.NotFound()2311 raise NotFoundErr() 2288 2312 return self.content_iter(lines) 2289 2313 … … 2621 2645 try: 2622 2646 content = page.view_content() 2623 except werkzeug.exceptions.NotFound:2647 except NotFoundErr: 2624 2648 url = request.get_url(title, self.edit, external=True) 2625 2649 return werkzeug.routing.redirect(url, code=303) … … 2662 2686 ] 2663 2687 if self.read_only: 2664 raise werkzeug.exceptions.Forbidden(_(u"This site is read-only."))2688 raise ForbiddenErr(_(u"This site is read-only.")) 2665 2689 if title in restricted_pages: 2666 raise werkzeug.exceptions.Forbidden(_(u"""Can't edit this page.2690 raise ForbiddenErr(_(u"""Can't edit this page. 2667 2691 It can only be edited by the site admin directly on the disk.""")) 2668 2692 if title in self.index.page_links(self.locked_page): 2669 raise werkzeug.exceptions.Forbidden(_(u"This page is locked."))2693 raise ForbiddenErr(_(u"This page is locked.")) 2670 2694 2671 2695 def save(self, request, title): … … 2698 2722 for link, label in page.extract_links(text): 2699 2723 if title == link: 2700 raise werkzeug.exceptions.Forbidden(2724 raise ForbiddenErr( 2701 2725 _(u"This page is locked.")) 2702 2726 if u'href="' in comment or u'http:' in comment: 2703 raise werkzeug.exceptions.Forbidden()2727 raise ForbiddenErr() 2704 2728 if text.strip() == '': 2705 2729 self.storage.delete_page(title, author, comment) … … 3154 3178 try: 3155 3179 text = self.storage.page_text(title) 3156 except werkzeug.exceptions.NotFound:3180 except NotFoundErr: 3157 3181 return u'' 3158 3182 regexp = re.compile(u"|".join(re.escape(w) for w in words), … … 3240 3264 3241 3265 if pygments is None: 3242 raise werkzeug.exceptions.NotFound()3266 raise NotImplementedErr(_(u"Code highlighting is not available.")) 3243 3267 3244 3268 pygments_style = self.pygments_style … … 3275 3299 3276 3300 if not self.config.get_bool('hgweb', False): 3277 raise werkzeug.exceptions.Forbidden( 3278 _(u'Repository access disabled.')) 3301 raise ForbiddenErr(_(u'Repository access disabled.')) 3279 3302 app = mercurial.hgweb.request.wsgiapplication( 3280 3303 lambda: mercurial.hgweb.hgweb(self.storage.repo, self.site_name)) … … 3292 3315 3293 3316 if not request.remote_addr.startswith('127.'): 3294 raise werkzeug.exceptions.Forbidden( 3295 _(u'This URL can only be called locally.')) 3317 raise ForbiddenErr(_(u'This URL can only be called locally.')) 3296 3318 def agony(): 3297 3319 yield u'Oh dear!'
Note: See TracChangeset
for help on using the changeset viewer.
