5 # This software may be used and distributed according to the terms |
5 # This software may be used and distributed according to the terms |
6 # of the GNU General Public License, incorporated herein by reference. |
6 # of the GNU General Public License, incorporated herein by reference. |
7 |
7 |
8 import os, mimetypes, re, cgi, copy |
8 import os, mimetypes, re, cgi, copy |
9 import webutil |
9 import webutil |
10 from mercurial import revlog, archival, templatefilters |
10 from mercurial import error, archival, templatefilters |
11 from mercurial.node import short, hex, nullid |
11 from mercurial.node import short, hex, nullid |
12 from mercurial.util import binary, datestr |
12 from mercurial.util import binary, datestr |
13 from mercurial.repo import RepoError |
13 from mercurial.repo import RepoError |
14 from common import paritygen, staticfile, get_contact, ErrorResponse |
14 from common import paritygen, staticfile, get_contact, ErrorResponse |
15 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND |
15 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND |
37 req.respond(HTTP_OK, web.ctype) |
37 req.respond(HTTP_OK, web.ctype) |
38 return content |
38 return content |
39 |
39 |
40 try: |
40 try: |
41 fctx = webutil.filectx(web.repo, req) |
41 fctx = webutil.filectx(web.repo, req) |
42 except revlog.LookupError, inst: |
42 except error.LookupError, inst: |
43 try: |
43 try: |
44 content = manifest(web, req, tmpl) |
44 content = manifest(web, req, tmpl) |
45 req.respond(HTTP_OK, web.ctype) |
45 req.respond(HTTP_OK, web.ctype) |
46 return content |
46 return content |
47 except ErrorResponse: |
47 except ErrorResponse: |
91 path = webutil.cleanpath(web.repo, req.form.get('file', [''])[0]) |
91 path = webutil.cleanpath(web.repo, req.form.get('file', [''])[0]) |
92 if not path: |
92 if not path: |
93 return manifest(web, req, tmpl) |
93 return manifest(web, req, tmpl) |
94 try: |
94 try: |
95 return _filerevision(web, tmpl, webutil.filectx(web.repo, req)) |
95 return _filerevision(web, tmpl, webutil.filectx(web.repo, req)) |
96 except revlog.LookupError, inst: |
96 except error.LookupError, inst: |
97 try: |
97 try: |
98 return manifest(web, req, tmpl) |
98 return manifest(web, req, tmpl) |
99 except ErrorResponse: |
99 except ErrorResponse: |
100 raise inst |
100 raise inst |
101 |
101 |
519 |
519 |
520 try: |
520 try: |
521 fctx = webutil.filectx(web.repo, req) |
521 fctx = webutil.filectx(web.repo, req) |
522 f = fctx.path() |
522 f = fctx.path() |
523 fl = fctx.filelog() |
523 fl = fctx.filelog() |
524 except revlog.LookupError: |
524 except error.LookupError: |
525 f = webutil.cleanpath(web.repo, req.form['file'][0]) |
525 f = webutil.cleanpath(web.repo, req.form['file'][0]) |
526 fl = web.repo.file(f) |
526 fl = web.repo.file(f) |
527 numrevs = len(fl) |
527 numrevs = len(fl) |
528 if not numrevs: # file doesn't exist at all |
528 if not numrevs: # file doesn't exist at all |
529 raise |
529 raise |