##// END OF EJS Templates
Added full last changeset info to lightweight dashboard
Added full last changeset info to lightweight dashboard

File last commit:

r3147:8182ebed beta
r3147:8182ebed beta
Show More
home.py
133 lines | 5.4 KiB | text/x-python | PythonLexer
updated docs on every controller
r861 # -*- coding: utf-8 -*-
"""
rhodecode.controllers.home
~~~~~~~~~~~~~~~~~~~~~~~~~~
Home controller for Rhodecode
source code cleanup: remove trailing white space, normalize file endings
r1203
updated docs on every controller
r861 :created_on: Feb 18, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
updated docs on every controller
r861 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
Fixes for raw_id, needed for git...
r636 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
Fixes for raw_id, needed for git...
r636 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
updated docs on every controller
r861
import logging
Fixes for raw_id, needed for git...
r636 from pylons import tmpl_context as c, request
Added lightweight dashboard option. ref #500
r2936 from pylons.i18n.translation import _
Use webob exception as often as possible
r2242 from webob.exc import HTTPBadRequest
updated docs on every controller
r861
Added lightweight dashboard option. ref #500
r2936 import rhodecode
from rhodecode.lib import helpers as h
from rhodecode.lib.ext_json import json
Fixes for raw_id, needed for git...
r636 from rhodecode.lib.auth import LoginRequired
from rhodecode.lib.base import BaseController, render
#227 Initial version of repository groups permissions system...
r1982 from rhodecode.model.db import Repository
Added lightweight dashboard option. ref #500
r2936 from sqlalchemy.sql.expression import func
implemented repo switcher list as dynamically loaded by xhr requestt....
r1158
Fixes for raw_id, needed for git...
r636 log = logging.getLogger(__name__)
pep8ify
r1212
Fixes for raw_id, needed for git...
r636 class HomeController(BaseController):
@LoginRequired()
def __before__(self):
super(HomeController, self).__before__()
def index(self):
#227 Initial version of repository groups permissions system...
r1982 c.groups = self.scm_model.get_repos_groups()
#401 repository group is automatically pre-selected when adding repos inside a repository group
r2130 c.group = None
Added lightweight dashboard option. ref #500
r2936
if c.visual.lightweight_dashboard is False:
c.repos_list = self.scm_model.get_repos()
## lightweight version of dashboard
else:
c.repos_list = Repository.query()\
.filter(Repository.group_id == None)\
.order_by(func.lower(Repository.repo_name))\
.all()
repos_data = []
total_records = len(c.repos_list)
_tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup
template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
quick_menu = lambda repo_name: (template.get_def("quick_menu")
.render(repo_name, _=_, h=h, c=c))
repo_lnk = lambda name, rtype, private, fork_of: (
template.get_def("repo_name")
.render(name, rtype, private, fork_of, short_name=False,
admin=False, _=_, h=h, c=c))
Update last_change from VCS data on request....
r2937 last_change = lambda last_change: (template.get_def("last_change")
.render(last_change, _=_, h=h, c=c))
Added lightweight dashboard option. ref #500
r2936 rss_lnk = lambda repo_name: (template.get_def("rss")
.render(repo_name, _=_, h=h, c=c))
atom_lnk = lambda repo_name: (template.get_def("atom")
.render(repo_name, _=_, h=h, c=c))
Added full last changeset info to lightweight dashboard
r3147 tip = lambda repo_name, cs_cache: (template.get_def("revision")
.render(repo_name,
cs_cache.get('revision'),
cs_cache.get('raw_id'),
cs_cache.get('author'),
cs_cache.get('message'), _=_, h=h,
c=c))
Added lightweight dashboard option. ref #500
r2936
parse metatags for lightweight dashboard
r3007 def desc(desc):
if c.visual.stylify_metatags:
return h.urlify_text(h.desc_stylize(h.truncate(desc, 60)))
else:
return h.urlify_text(h.truncate(desc, 60))
Added lightweight dashboard option. ref #500
r2936 for repo in c.repos_list:
repos_data.append({
"menu": quick_menu(repo.repo_name),
"raw_name": repo.repo_name.lower(),
"name": repo_lnk(repo.repo_name, repo.repo_type,
repo.private, repo.fork),
Update last_change from VCS data on request....
r2937 "last_change": last_change(repo.last_db_change),
Added full last changeset info to lightweight dashboard
r3147 "tip": tip(repo.repo_name, repo.changeset_cache),
parse metatags for lightweight dashboard
r3007 "desc": desc(repo.description),
Added lightweight dashboard option. ref #500
r2936 "owner": h.person(repo.user.username),
"rss": rss_lnk(repo.repo_name),
"atom": atom_lnk(repo.repo_name),
})
c.data = json.dumps({
"totalRecords": total_records,
"startIndex": 0,
"sort": "name",
"dir": "asc",
"records": repos_data
})
Fixes for raw_id, needed for git...
r636 return render('/index.html')
implemented repo switcher list as dynamically loaded by xhr requestt....
r1158
def repo_switcher(self):
if request.is_xhr:
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 all_repos = Repository.query().order_by(Repository.repo_name).all()
c.repos_list = self.scm_model.get_repos(all_repos,
Use simplified cached repos list for quick repo switcher, in some cases it can have 2-3x speed-up since it doesn't need to init the scms
r2604 sort_key='name_sort',
simple=True)
implemented repo switcher list as dynamically loaded by xhr requestt....
r1158 return render('/repo_switcher_list.html')
else:
fixed badRequest on views decorated by @jsonify
r2970 raise HTTPBadRequest()
lazy load of branches and tags menu...
r1608
def branch_tag_switcher(self, repo_name):
if request.is_xhr:
fixed xhr check for tags-branches view
r1609 c.rhodecode_db_repo = Repository.get_by_repo_name(c.repo_name)
c.rhodecode_repo = c.rhodecode_db_repo.scm_instance
lazy load of branches and tags menu...
r1608 return render('/switch_to_list.html')
else:
fixed badRequest on views decorated by @jsonify
r2970 raise HTTPBadRequest()