Mercurial > public > src > rhodecode
annotate pylons_app/lib/app_globals.py @ 31:2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
author | Marcin Kuzminski <marcin@python-blog.com> |
---|---|
date | Thu, 04 Mar 2010 23:13:12 +0100 |
parents | bbaab7501c1a |
children | 2e1247e62c5b |
rev | line source |
---|---|
0 | 1 """The application's Globals object""" |
10
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
2 #uncomment the following if you want to serve a single repo |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
3 #from mercurial.hgweb.hgweb_mod import hgweb |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
4 from mercurial.hgweb.hgwebdir_mod import hgwebdir |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
5 from mercurial import templater |
10
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
6 from mercurial.hgweb.request import wsgiapplication |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
7 from mercurial import ui, config |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
8 import os |
0 | 9 class Globals(object): |
10 | |
11 """Globals acts as a container for objects available throughout the | |
12 life of the application | |
13 | |
14 """ | |
15 | |
16 def __init__(self): | |
17 """One instance of Globals is created during application | |
18 initialization and is available during requests via the | |
19 'app_globals' variable | |
20 | |
21 """ | |
10
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
22 #two ways of building the merc app i don't know |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
23 #the fastest one but belive the wsgiapp is better |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
24 #self.hgapp = self.make_web_app() |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
25 self.hgapp = wsgiapplication(self.make_web_app) |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
26 |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
27 |
10
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
28 def make_web_app(self): |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
29 repos = "hgwebdir.config" |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
30 baseui = ui.ui() |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
31 cfg = config.config() |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
32 cfg.read(repos) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
33 paths = cfg.items('paths') |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
34 self.check_repo_dir(paths) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
35 self.set_statics(cfg) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
36 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
37 for k, v in cfg.items('web'): |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
38 baseui.setconfig('web', k, v) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
39 #magic trick to make our custom template dir working |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
40 templater.path.append(cfg.get('web', 'templates', None)) |
31
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
41 |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
42 #baseui.setconfig('web', 'description', '') |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
43 #baseui.setconfig('web', 'name', '') |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
44 #baseui.setconfig('web', 'contact', '') |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
45 #baseui.setconfig('web', 'allow_archive', '') |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
46 #baseui.setconfig('web', 'style', 'monoblue_plain') |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
47 #baseui.setconfig('web', 'baseurl', '') |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
48 #baseui.setconfig('web', 'staticurl', '') |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
49 |
2963f2894a7a
Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents:
20
diff
changeset
|
50 hgwebapp = hgwebdir(paths, baseui=baseui) |
10
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
0
diff
changeset
|
51 return hgwebapp |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
52 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
53 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
54 def set_statics(self, cfg): |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
55 ''' |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
56 set's the statics for use in mako templates |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
57 @param cfg: |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
58 ''' |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
59 self.statics = cfg.get('web', 'staticurl', '/static') |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
60 if not self.statics.endswith('/'): |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
61 self.statics += '/' |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
62 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
63 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
64 def check_repo_dir(self, paths): |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
65 repos_path = paths[0][1].split('/') |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
66 if repos_path[-1] in ['*', '**']: |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
67 repos_path = repos_path[:-1] |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
68 if repos_path[0] != '/': |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
69 repos_path[0] = '/' |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
70 if not os.path.isdir(os.path.join(*repos_path)): |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
71 raise Exception('Not a valid repository in %s' % paths[0][1]) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
72 |