##// END OF EJS Templates
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user....
marcink -
r191:b68b2246 default
parent child Browse files
Show More
@@ -4,70 +4,36 b' import os'
4 from pylons import request, response, session, tmpl_context as c, url, app_globals as g
4 from pylons import request, response, session, tmpl_context as c, url, app_globals as g
5 from pylons.controllers.util import abort, redirect
5 from pylons.controllers.util import abort, redirect
6 from pylons_app.lib.base import BaseController, render
6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib import auth
8 from pylons_app.model.forms import LoginForm
9 import formencode
10 import formencode.htmlfill as htmlfill
11 from pylons_app.model import meta
7 from pylons_app.model import meta
12 from pylons_app.model.db import Users, UserLogs
8 from pylons_app.model.db import UserLogs
13 from webhelpers.paginate import Page
9 from webhelpers.paginate import Page
14 from pylons_app.lib.utils import check_repo, invalidate_cache
10 from pylons_app.lib.utils import check_repo, invalidate_cache
11 from pylons_app.lib.auth import LoginRequired
15
12
16 log = logging.getLogger(__name__)
13 log = logging.getLogger(__name__)
17
14
18 class AdminController(BaseController):
15 class AdminController(BaseController):
19
16
17 @LoginRequired()
20 def __before__(self):
18 def __before__(self):
21 c.admin_user = session.get('admin_user', False)
19 user = session['hg_app_user']
22 c.admin_username = session.get('admin_username')
20 c.admin_user = user.is_admin
21 c.admin_username = user.username
22 super(AdminController, self).__before__()
23
23
24 def index(self):
24 def index(self):
25 # Return a rendered template
25 sa = meta.Session
26 if request.POST:
26
27 #import Login Form validator class
27 users_log = sa.query(UserLogs)\
28 login_form = LoginForm()
28 .order_by(UserLogs.action_date.desc())
29
29 p = int(request.params.get('page', 1))
30 try:
30 c.users_log = Page(users_log, page=p, items_per_page=10)
31 c.form_result = login_form.to_python(dict(request.params))
31 c.log_data = render('admin/admin_log.html')
32 if auth.admin_auth(c.form_result['username'], c.form_result['password']):
32 if request.params.get('partial'):
33 session['admin_user'] = True
33 return c.log_data
34 session['admin_username'] = c.form_result['username']
35 session.save()
36 return redirect(url('admin_home'))
37 else:
38 raise formencode.Invalid('Login Error', None, None,
39 error_dict={'username':'invalid login',
40 'password':'invalid password'})
41
42 except formencode.Invalid, error:
43 c.form_result = error.value
44 c.form_errors = error.error_dict or {}
45 html = render('admin/admin.html')
46
47 return htmlfill.render(
48 html,
49 defaults=c.form_result,
50 encoding="UTF-8"
51 )
52 if c.admin_user:
53 sa = meta.Session
54
55 users_log = sa.query(UserLogs)\
56 .order_by(UserLogs.action_date.desc())
57 p = int(request.params.get('page', 1))
58 c.users_log = Page(users_log, page=p, items_per_page=10)
59 c.log_data = render('admin/admin_log.html')
60 if request.params.get('partial'):
61 return c.log_data
62 return render('admin/admin.html')
34 return render('admin/admin.html')
63
35
64 def hgrc(self, dirname):
65 filename = os.path.join(dirname, '.hg', 'hgrc')
66 return filename
67
68 def add_repo(self, new_repo):
36 def add_repo(self, new_repo):
69
70
71 #extra check it can be add since it's the command
37 #extra check it can be add since it's the command
72 if new_repo == '_admin':
38 if new_repo == '_admin':
73 c.msg = 'DENIED'
39 c.msg = 'DENIED'
@@ -6,14 +6,16 b' from pylons.controllers.util import abor'
6 from pylons_app.lib.base import BaseController, render
6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.utils import get_repo_slug
7 from pylons_app.lib.utils import get_repo_slug
8 from pylons_app.model.hg_model import HgModel
8 from pylons_app.model.hg_model import HgModel
9 from pylons_app.lib.auth import LoginRequired
9 log = logging.getLogger(__name__)
10 log = logging.getLogger(__name__)
10
11
11
12
12 class BranchesController(BaseController):
13 class BranchesController(BaseController):
14
15 @LoginRequired()
13 def __before__(self):
16 def __before__(self):
14 c.repos_prefix = config['repos_name']
17 super(BranchesController, self).__before__()
15 c.repo_name = get_repo_slug(request)
18
16
17 def index(self):
19 def index(self):
18 hg_model = HgModel()
20 hg_model = HgModel()
19 c.repo_info = hg_model.get_repo(c.repo_name)
21 c.repo_info = hg_model.get_repo(c.repo_name)
@@ -20,12 +20,6 b' class ErrorController(BaseController):'
20 This behaviour can be altered by changing the parameters to the
20 This behaviour can be altered by changing the parameters to the
21 ErrorDocuments middleware in your config/middleware.py file.
21 ErrorDocuments middleware in your config/middleware.py file.
22 """
22 """
23 #
24 def __before__(self):
25 c.repos_prefix = config['repos_name']
26
27 c.repo_name = request.environ['pylons.original_request']\
28 .environ.get('PATH_INFO').split('/')[1]
29
23
30 def document(self):
24 def document(self):
31 resp = request.environ.get('pylons.original_response')
25 resp = request.environ.get('pylons.original_response')
@@ -8,13 +8,15 b' from pylons_app.lib.utils import get_rep'
8 from pylons_app.model.hg_model import HgModel
8 from pylons_app.model.hg_model import HgModel
9 from vcs.utils import diffs as differ
9 from vcs.utils import diffs as differ
10 from vcs.exceptions import RepositoryError, ChangesetError
10 from vcs.exceptions import RepositoryError, ChangesetError
11 from pylons_app.lib.auth import LoginRequired
11
12
12 log = logging.getLogger(__name__)
13 log = logging.getLogger(__name__)
13
14
14 class FilesController(BaseController):
15 class FilesController(BaseController):
16
17 @LoginRequired()
15 def __before__(self):
18 def __before__(self):
16 c.repos_prefix = config['repos_name']
19 super(FilesController, self).__before__()
17 c.repo_name = get_repo_slug(request)
18
20
19 def index(self, repo_name, revision, f_path):
21 def index(self, repo_name, revision, f_path):
20 hg_model = HgModel()
22 hg_model = HgModel()
@@ -70,6 +72,17 b' class FilesController(BaseController):'
70 % f_path.split('/')[-1]
72 % f_path.split('/')[-1]
71 return file_node.content
73 return file_node.content
72
74
75 def annotate(self, repo_name, revision, f_path):
76 hg_model = HgModel()
77 c.repo = hg_model.get_repo(c.repo_name)
78 cs = c.repo.get_changeset(revision)
79 c.file = cs.get_node(f_path)
80 c.file_msg = cs.get_file_message(f_path)
81 c.cur_rev = cs.raw_id
82 c.f_path = f_path
83 c.annotate = cs.get_file_annotate(f_path)
84 return render('files/files_annotate.html')
85
73 def archivefile(self, repo_name, revision, fileformat):
86 def archivefile(self, repo_name, revision, fileformat):
74 return '%s %s %s' % (repo_name, revision, fileformat)
87 return '%s %s %s' % (repo_name, revision, fileformat)
75
88
@@ -1,25 +1,27 b''
1 import logging
1 from mercurial.graphmod import revisions as graph_rev, colored, CHANGESET
2 from mercurial.node import short
2 from pylons import request, response, session, tmpl_context as c, url, config, \
3 from pylons import request, response, session, tmpl_context as c, url, config, \
3 app_globals as g
4 app_globals as g
4 from pylons.controllers.util import abort, redirect
5 from pylons.controllers.util import abort, redirect
6 from pylons_app.lib.auth import LoginRequired
5 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.base import BaseController, render
8 from pylons_app.lib.filters import age as _age, person
6 from pylons_app.lib.utils import get_repo_slug
9 from pylons_app.lib.utils import get_repo_slug
7 from pylons_app.model.hg_model import HgModel
10 from pylons_app.model.hg_model import HgModel
11 from simplejson import dumps
12 from webhelpers.paginate import Page
13 import logging
8
14
9 from mercurial.graphmod import revisions as graph_rev, colored, CHANGESET
10 from pylons_app.lib.filters import age as _age, person
11 from simplejson import dumps
12 from mercurial.node import short
13 from webhelpers.paginate import Page
14
15
15
16
16
17
17 log = logging.getLogger(__name__)
18 log = logging.getLogger(__name__)
18
19
19 class GraphController(BaseController):
20 class GraphController(BaseController):
21
22 @LoginRequired()
20 def __before__(self):
23 def __before__(self):
21 c.repos_prefix = config['repos_name']
24 super(GraphController, self).__before__()
22 c.repo_name = get_repo_slug(request)
23
25
24 def index(self):
26 def index(self):
25 # Return a rendered template
27 # Return a rendered template
@@ -6,13 +6,14 b' from pylons import tmpl_context as c, re'
6 from pylons_app.lib.base import BaseController, render
6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.utils import get_repo_slug
7 from pylons_app.lib.utils import get_repo_slug
8 from pylons_app.model.hg_model import HgModel
8 from pylons_app.model.hg_model import HgModel
9 from pylons_app.lib.auth import LoginRequired
9 log = logging.getLogger(__name__)
10 log = logging.getLogger(__name__)
10
11
11 class HgController(BaseController):
12 class HgController(BaseController):
12
13
14 @LoginRequired()
13 def __before__(self):
15 def __before__(self):
14 c.repos_prefix = config['repos_name']
16 super(HgController, self).__before__()
15 c.repo_name = get_repo_slug(request)
16
17
17 def index(self):
18 def index(self):
18 c.current_sort = request.GET.get('sort', 'name')
19 c.current_sort = request.GET.get('sort', 'name')
@@ -5,7 +5,6 b' from pylons.controllers.util import abor'
5 from pylons_app.lib import auth
5 from pylons_app.lib import auth
6 from pylons_app.lib.base import BaseController, render
6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.model.db import Users, UserLogs
7 from pylons_app.model.db import Users, UserLogs
8 from pylons_app.lib.auth import authenticate
9 from pylons_app.model.hg_model import HgModel
8 from pylons_app.model.hg_model import HgModel
10 from operator import itemgetter
9 from operator import itemgetter
11 import shutil
10 import shutil
@@ -18,10 +17,10 b' class ReposController(BaseController):'
18 # file has a resource setup:
17 # file has a resource setup:
19 # map.resource('repo', 'repos')
18 # map.resource('repo', 'repos')
20
19
21 @authenticate
22 def __before__(self):
20 def __before__(self):
23 c.admin_user = session.get('admin_user')
21 c.admin_user = session.get('admin_user')
24 c.admin_username = session.get('admin_username')
22 c.admin_username = session.get('admin_username')
23 super(ReposController, self).__before__()
25
24
26 def index(self, format='html'):
25 def index(self, format='html'):
27 """GET /repos: All items in the collection"""
26 """GET /repos: All items in the collection"""
@@ -7,13 +7,15 b' from pylons_app.lib.base import BaseCont'
7 from pylons_app.lib.utils import get_repo_slug
7 from pylons_app.lib.utils import get_repo_slug
8 from pylons_app.model.hg_model import HgModel
8 from pylons_app.model.hg_model import HgModel
9 from webhelpers.paginate import Page
9 from webhelpers.paginate import Page
10 from pylons_app.lib.auth import LoginRequired
10
11
11 log = logging.getLogger(__name__)
12 log = logging.getLogger(__name__)
12
13
13 class ShortlogController(BaseController):
14 class ShortlogController(BaseController):
15
16 @LoginRequired()
14 def __before__(self):
17 def __before__(self):
15 c.repos_prefix = config['repos_name']
18 super(ShortlogController, self).__before__()
16 c.repo_name = get_repo_slug(request)
17
19
18 def index(self):
20 def index(self):
19 hg_model = HgModel()
21 hg_model = HgModel()
@@ -1,17 +1,20 b''
1 import logging
1 from pylons import tmpl_context as c, app_globals as g, session, request, config, \
2
2 url
3 from pylons import tmpl_context as c, app_globals as g, session, request, config, url
4 from pylons.controllers.util import abort, redirect
3 from pylons.controllers.util import abort, redirect
5
4 from pylons_app.lib.auth import LoginRequired
6 from pylons_app.lib.base import BaseController, render
5 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.utils import get_repo_slug
6 from pylons_app.lib.utils import get_repo_slug
8 from pylons_app.model.hg_model import HgModel
7 from pylons_app.model.hg_model import HgModel
8 import logging
9
10
9 log = logging.getLogger(__name__)
11 log = logging.getLogger(__name__)
10
12
11 class SummaryController(BaseController):
13 class SummaryController(BaseController):
14
15 @LoginRequired()
12 def __before__(self):
16 def __before__(self):
13 c.repos_prefix = config['repos_name']
17 super(SummaryController, self).__before__()
14 c.repo_name = get_repo_slug(request)
15
18
16 def index(self):
19 def index(self):
17 hg_model = HgModel()
20 hg_model = HgModel()
@@ -19,13 +22,14 b' class SummaryController(BaseController):'
19 c.repo_changesets = c.repo_info.get_changesets(10)
22 c.repo_changesets = c.repo_info.get_changesets(10)
20
23
21 e = request.environ
24 e = request.environ
22 uri = r'%(protocol)s://%(user)s@%(host)s/%(repo_name)s' % {
25 #BUG: protocol doesnt show https
26 uri = u'%(protocol)s://%(user)s@%(host)s/%(repo_name)s' % {
23 'protocol': e.get('wsgi.url_scheme'),
27 'protocol': e.get('wsgi.url_scheme'),
24 'user':e.get('REMOTE_USER'),
28 'user':str(c.hg_app_user.username),
25 'host':e.get('HTTP_HOST'),
29 'host':e.get('HTTP_HOST'),
26 'repo_name':c.repo_name,
30 'repo_name':c.repo_name,
27 }
31 }
28 c.clone_repo_url = url(uri)
32 c.clone_repo_url = uri
29 c.repo_tags = c.repo_info.tags[:10]
33 c.repo_tags = c.repo_info.tags[:10]
30 c.repo_branches = c.repo_info.branches[:10]
34 c.repo_branches = c.repo_info.branches[:10]
31 return render('/summary.html')
35 return render('summary/summary.html')
@@ -6,13 +6,15 b' from pylons.controllers.util import abor'
6 from pylons_app.lib.base import BaseController, render
6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.utils import get_repo_slug
7 from pylons_app.lib.utils import get_repo_slug
8 from pylons_app.model.hg_model import HgModel
8 from pylons_app.model.hg_model import HgModel
9 from pylons_app.lib.auth import LoginRequired
9 log = logging.getLogger(__name__)
10 log = logging.getLogger(__name__)
10
11
11
12
12 class TagsController(BaseController):
13 class TagsController(BaseController):
14
15 @LoginRequired()
13 def __before__(self):
16 def __before__(self):
14 c.repos_prefix = config['repos_name']
17 super(TagsController, self).__before__()
15 c.repo_name = get_repo_slug(request)
16
18
17 def index(self):
19 def index(self):
18 hg_model = HgModel()
20 hg_model = HgModel()
@@ -6,7 +6,6 b' from pylons.controllers.util import abor'
6 from pylons_app.lib.base import BaseController, render
6 from pylons_app.lib.base import BaseController, render
7 from formencode import htmlfill
7 from formencode import htmlfill
8 from pylons_app.model.db import Users, UserLogs
8 from pylons_app.model.db import Users, UserLogs
9 from pylons_app.lib.auth import authenticate
10 import crypt
9 import crypt
11
10
12 log = logging.getLogger(__name__)
11 log = logging.getLogger(__name__)
@@ -17,10 +16,10 b' class UsersController(BaseController):'
17 # file has a resource setup:
16 # file has a resource setup:
18 # map.resource('user', 'users')
17 # map.resource('user', 'users')
19
18
20 @authenticate
21 def __before__(self):
19 def __before__(self):
22 c.admin_user = session.get('admin_user')
20 c.admin_user = session.get('admin_user')
23 c.admin_username = session.get('admin_username')
21 c.admin_username = session.get('admin_username')
22 super(UsersController, self).__before__()
24
23
25 def index(self, format='html'):
24 def index(self, format='html'):
26 """GET /users: All items in the collection"""
25 """GET /users: All items in the collection"""
General Comments 0
You need to be logged in to leave comments. Login now