comparison pylons_app/controllers/hg.py @ 8:3092016c6d0c

Changed to webapp, removed get from routes,
author Marcin Kuzminski
date Thu, 18 Feb 2010 17:36:43 +0100
parents 2620dac853ad
children 525ed90e4577
comparison
equal deleted inserted replaced
7:8a2ddd2d6b4e 8:3092016c6d0c
13 log = logging.getLogger(__name__) 13 log = logging.getLogger(__name__)
14 14
15 from mercurial import ui, hg 15 from mercurial import ui, hg
16 from mercurial.error import RepoError 16 from mercurial.error import RepoError
17 from ConfigParser import ConfigParser 17 from ConfigParser import ConfigParser
18 #http://bel-epa.com/hg/
19 #def make_web_app():
20 # repos = "hgwebdir.config"
21 # hgwebapp = hgwebdir(repos)
22 # return hgwebapp
23 #
24 #class HgController(BaseController):
25 #
26 # def index(self):
27 # hgapp = wsgiapplication(make_web_app)
28 # return hgapp(request.environ, self.start_response)
29 #
30 # def view(self, *args, **kwargs):
31 # return u'dupa'
32 # #pprint(request.environ)
33 # hgapp = wsgiapplication(make_web_app)
34 # return hgapp(request.environ, self.start_response)
35 18
36 def _make_app(): 19 def make_web_app():
37 #for single a repo
38 #return hgweb("/path/to/repo", "Name")
39 repos = "hgwebdir.config" 20 repos = "hgwebdir.config"
40 return hgwebdir(repos) 21 hgwebapp = hgwebdir(repos)
41 22 return hgwebapp
42 def wsgi_app(environ, start_response):
43 start_response('200 OK', [('Content-type', 'text/html')])
44 return ['<html>\n<body>\nHello World!\n</body>\n</html>']
45 23
46 class HgController(BaseController): 24 class HgController(BaseController):
25 #based on
26 #http://bel-epa.com/hg/
27 def index(self):
28 hgapp = wsgiapplication(make_web_app)
29 return hgapp(request.environ, self.start_response)
30
31 def view(self, *args, **kwargs):
32 hgapp = wsgiapplication(make_web_app)
33 return hgapp(request.environ, self.start_response)
34
35 def add_repo(self, new_repo):
36 tmpl = '''
37 <html>
38 <body>
39 %(msg)s%(new_repo)s!<br \>
40 <a href="/">repos</a>
41 </body>
42 </html>
43 '''
44 #extra check it can be add since it's the command
45 if new_repo == 'add':
46 return [tmpl % ({'new_repo':'', 'msg':'you basstard ! this repo is a command'})]
47
48 new_repo = new_repo.replace(" ", "_")
49 new_repo = new_repo.replace("-", "_")
50
51 try:
52 self._create_repo(new_repo)
53 except Exception as e:
54 return [tmpl % ({'new_repo':' Exception when adding: ' + new_repo, 'msg':str(e)})]
55
56 return [tmpl % ({'new_repo':new_repo, 'msg':'added repo: '})]
47 57
48 def _check_repo(self, repo_name): 58 def _check_repo(self, repo_name):
49
50 p = os.path.dirname(__file__) 59 p = os.path.dirname(__file__)
51 config_path = os.path.join(p, '../..', 'hgwebdir.config') 60 config_path = os.path.join(p, '../..', 'hgwebdir.config')
52 print config_path 61 print config_path
53 62
54 cp = ConfigParser() 63 cp = ConfigParser()
81 log.info('creating repo %s in %s', repo_name, self.repo_path) 90 log.info('creating repo %s in %s', repo_name, self.repo_path)
82 cmd = """mkdir %s && hg init %s""" \ 91 cmd = """mkdir %s && hg init %s""" \
83 % (self.repo_path, self.repo_path) 92 % (self.repo_path, self.repo_path)
84 os.popen(cmd) 93 os.popen(cmd)
85 94
95 #def _make_app():
96 # #for single a repo
97 # #return hgweb("/path/to/repo", "Name")
98 # repos = "hgwebdir.config"
99 # return hgwebdir(repos)
100 #
86 101
87 def add_repo(self, new_repo): 102 # def view(self, environ, start_response):
88 tmpl = ''' 103 # #the following is only needed when using hgwebdir
89 <html> 104 # app = _make_app()
90 <body> 105 # #return wsgi_app(environ, start_response)
91 %(msg)s%(new_repo)s!<br \> 106 # response = app(request.environ, self.start_response)
92 <a href="/">repos</a> 107 #
93 </body> 108 # if environ['PATH_INFO'].find("static") != -1:
94 </html> 109 # return response
95 ''' 110 # else:
96 #extra check it can be add since it's the command 111 # #wrap the murcurial response in a mako template.
97 if new_repo == 'add': 112 # template = Template("".join(response),
98 return [tmpl % ({'new_repo':'', 'msg':'you basstard ! this repo is a command'})] 113 # lookup = environ['pylons.pylons']\
99 114 # .config['pylons.g'].mako_lookup)
100 new_repo = new_repo.replace(" ", "_") 115 #
101 new_repo = new_repo.replace("-", "_") 116 # return template.render(g = g, c = c, session = session, h = h)
102
103 try:
104 self._create_repo(new_repo)
105 except Exception as e:
106 return [tmpl % ({'new_repo':' Exception when adding: ' + new_repo, 'msg':str(e)})]
107
108 return [tmpl % ({'new_repo':new_repo, 'msg':'added repo: '})]
109
110 def view(self, environ, start_response):
111 #the following is only needed when using hgwebdir
112 app = _make_app()
113 #return wsgi_app(environ, start_response)
114 response = app(request.environ, self.start_response)
115
116 if environ['PATH_INFO'].find("static") != -1:
117 return response
118 else:
119 #wrap the murcurial response in a mako template.
120 template = Template("".join(response),
121 lookup = environ['pylons.pylons']\
122 .config['pylons.g'].mako_lookup)
123
124 return template.render(g = g, c = c, session = session, h = h)
125