Mercurial > public > src > rhodecode
annotate pylons_app/lib/app_globals.py @ 43:2e1247e62c5b
changed for pylons 0.1 / 1.0
added admin controller
author | marcink |
---|---|
date | Wed, 07 Apr 2010 15:28:50 +0200 |
parents | 2963f2894a7a |
children | e00dccb6f211 |
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 |
43 | 9 from beaker.cache import CacheManager |
10 from beaker.util import parse_cache_config_options | |
11 | |
0 | 12 class Globals(object): |
13 | |
14 """Globals acts as a container for objects available throughout the | |
15 life of the application | |
16 | |
17 """ | |
18 | |
43 | 19 def __init__(self, config): |
0 | 20 """One instance of Globals is created during application |
21 initialization and is available during requests via the | |
22 'app_globals' variable | |
23 | |
24 """ | |
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
|
25 #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
|
26 #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
|
27 #self.hgapp = self.make_web_app() |
43 | 28 self.cache = CacheManager(**parse_cache_config_options(config)) |
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
|
29 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
|
30 |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
31 |
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
|
32 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
|
33 repos = "hgwebdir.config" |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
34 baseui = ui.ui() |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
35 cfg = config.config() |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
36 cfg.read(repos) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
37 paths = cfg.items('paths') |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
38 self.check_repo_dir(paths) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
39 self.set_statics(cfg) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
40 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
41 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
|
42 baseui.setconfig('web', k, v) |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
43 #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
|
44 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
|
45 |
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', '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
|
47 #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
|
48 #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
|
49 #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
|
50 #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
|
51 #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
|
52 #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
|
53 |
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
|
54 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
|
55 return hgwebapp |
20
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
56 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
57 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
58 def set_statics(self, cfg): |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
59 ''' |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
60 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
|
61 @param cfg: |
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 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
|
64 if not self.statics.endswith('/'): |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
65 self.statics += '/' |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
66 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
67 |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
68 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
|
69 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
|
70 if repos_path[-1] in ['*', '**']: |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
71 repos_path = repos_path[:-1] |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
72 if repos_path[0] != '/': |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
73 repos_path[0] = '/' |
bbaab7501c1a
Added custom templates, did over check of code to make it work.
Marcin Kuzminski
parents:
10
diff
changeset
|
74 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
|
75 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
|
76 |