7 |
7 |
8 import os |
8 import os |
9 from mercurial import revlog |
9 from mercurial import revlog |
10 from common import staticfile |
10 from common import staticfile |
11 |
11 |
12 def log(web, req): |
12 def log(web, req, tmpl): |
13 if req.form.has_key('file') and req.form['file'][0]: |
13 if req.form.has_key('file') and req.form['file'][0]: |
14 filelog(web, req) |
14 filelog(web, req, tmpl) |
15 else: |
15 else: |
16 changelog(web, req) |
16 changelog(web, req, tmpl) |
17 |
17 |
18 def file(web, req): |
18 def file(web, req, tmpl): |
19 path = web.cleanpath(req.form.get('file', [''])[0]) |
19 path = web.cleanpath(req.form.get('file', [''])[0]) |
20 if path: |
20 if path: |
21 try: |
21 try: |
22 req.write(web.filerevision(web.filectx(req))) |
22 req.write(web.filerevision(tmpl, web.filectx(req))) |
23 return |
23 return |
24 except revlog.LookupError: |
24 except revlog.LookupError: |
25 pass |
25 pass |
26 |
26 |
27 req.write(web.manifest(web.changectx(req), path)) |
27 req.write(web.manifest(tmpl, web.changectx(req), path)) |
28 |
28 |
29 def changelog(web, req, shortlog = False): |
29 def changelog(web, req, tmpl, shortlog = False): |
30 if req.form.has_key('node'): |
30 if req.form.has_key('node'): |
31 ctx = web.changectx(req) |
31 ctx = web.changectx(req) |
32 else: |
32 else: |
33 if req.form.has_key('rev'): |
33 if req.form.has_key('rev'): |
34 hi = req.form['rev'][0] |
34 hi = req.form['rev'][0] |
35 else: |
35 else: |
36 hi = web.repo.changelog.count() - 1 |
36 hi = web.repo.changelog.count() - 1 |
37 try: |
37 try: |
38 ctx = web.repo.changectx(hi) |
38 ctx = web.repo.changectx(hi) |
39 except hg.RepoError: |
39 except hg.RepoError: |
40 req.write(web.search(hi)) # XXX redirect to 404 page? |
40 req.write(web.search(tmpl, hi)) # XXX redirect to 404 page? |
41 return |
41 return |
42 |
42 |
43 req.write(web.changelog(ctx, shortlog = shortlog)) |
43 req.write(web.changelog(tmpl, ctx, shortlog = shortlog)) |
44 |
44 |
45 def shortlog(web, req): |
45 def shortlog(web, req, tmpl): |
46 changelog(web, req, shortlog = True) |
46 changelog(web, req, tmpl, shortlog = True) |
47 |
47 |
48 def changeset(web, req): |
48 def changeset(web, req, tmpl): |
49 req.write(web.changeset(web.changectx(req))) |
49 req.write(web.changeset(tmpl, web.changectx(req))) |
50 |
50 |
51 rev = changeset |
51 rev = changeset |
52 |
52 |
53 def manifest(web, req): |
53 def manifest(web, req, tmpl): |
54 req.write(web.manifest(web.changectx(req), |
54 req.write(web.manifest(tmpl, web.changectx(req), |
55 web.cleanpath(req.form['path'][0]))) |
55 web.cleanpath(req.form['path'][0]))) |
56 |
56 |
57 def tags(web, req): |
57 def tags(web, req, tmpl): |
58 req.write(web.tags()) |
58 req.write(web.tags(tmpl)) |
59 |
59 |
60 def summary(web, req): |
60 def summary(web, req, tmpl): |
61 req.write(web.summary()) |
61 req.write(web.summary(tmpl)) |
62 |
62 |
63 def filediff(web, req): |
63 def filediff(web, req, tmpl): |
64 req.write(web.filediff(web.filectx(req))) |
64 req.write(web.filediff(tmpl, web.filectx(req))) |
65 |
65 |
66 diff = filediff |
66 diff = filediff |
67 |
67 |
68 def annotate(web, req): |
68 def annotate(web, req, tmpl): |
69 req.write(web.fileannotate(web.filectx(req))) |
69 req.write(web.fileannotate(tmpl, web.filectx(req))) |
70 |
70 |
71 def filelog(web, req): |
71 def filelog(web, req, tmpl): |
72 req.write(web.filelog(web.filectx(req))) |
72 req.write(web.filelog(tmpl, web.filectx(req))) |
73 |
73 |
74 def archive(web, req): |
74 def archive(web, req, tmpl): |
75 type_ = req.form['type'][0] |
75 type_ = req.form['type'][0] |
76 allowed = web.configlist("web", "allow_archive") |
76 allowed = web.configlist("web", "allow_archive") |
77 if (type_ in web.archives and (type_ in allowed or |
77 if (type_ in web.archives and (type_ in allowed or |
78 web.configbool("web", "allow" + type_, False))): |
78 web.configbool("web", "allow" + type_, False))): |
79 web.archive(req, req.form['node'][0], type_) |
79 web.archive(tmpl, req, req.form['node'][0], type_) |
80 return |
80 return |
81 |
81 |
82 req.respond(400, web.t('error', |
82 req.respond(400, tmpl('error', |
83 error='Unsupported archive type: %s' % type_)) |
83 error='Unsupported archive type: %s' % type_)) |
84 |
84 |
85 def static(web, req): |
85 def static(web, req, tmpl): |
86 fname = req.form['file'][0] |
86 fname = req.form['file'][0] |
87 # a repo owner may set web.static in .hg/hgrc to get any file |
87 # a repo owner may set web.static in .hg/hgrc to get any file |
88 # readable by the user running the CGI script |
88 # readable by the user running the CGI script |
89 static = web.config("web", "static", |
89 static = web.config("web", "static", |
90 os.path.join(web.templatepath, "static"), |
90 os.path.join(web.templatepath, "static"), |