##// END OF EJS Templates
lightweight dashboard fix for repos group
marcink -
r2945:68e95f5a beta
parent child Browse files
Show More
@@ -35,17 +35,20 from pylons.i18n.translation import _
35
35
36 from sqlalchemy.exc import IntegrityError
36 from sqlalchemy.exc import IntegrityError
37
37
38 import rhodecode
38 from rhodecode.lib import helpers as h
39 from rhodecode.lib import helpers as h
40 from rhodecode.lib.ext_json import json
39 from rhodecode.lib.auth import LoginRequired, HasPermissionAnyDecorator,\
41 from rhodecode.lib.auth import LoginRequired, HasPermissionAnyDecorator,\
40 HasReposGroupPermissionAnyDecorator
42 HasReposGroupPermissionAnyDecorator
41 from rhodecode.lib.base import BaseController, render
43 from rhodecode.lib.base import BaseController, render
42 from rhodecode.model.db import RepoGroup
44 from rhodecode.model.db import RepoGroup, Repository
43 from rhodecode.model.repos_group import ReposGroupModel
45 from rhodecode.model.repos_group import ReposGroupModel
44 from rhodecode.model.forms import ReposGroupForm
46 from rhodecode.model.forms import ReposGroupForm
45 from rhodecode.model.meta import Session
47 from rhodecode.model.meta import Session
46 from rhodecode.model.repo import RepoModel
48 from rhodecode.model.repo import RepoModel
47 from webob.exc import HTTPInternalServerError, HTTPNotFound
49 from webob.exc import HTTPInternalServerError, HTTPNotFound
48 from rhodecode.lib.utils2 import str2bool
50 from rhodecode.lib.utils2 import str2bool
51 from sqlalchemy.sql.expression import func
49
52
50 log = logging.getLogger(__name__)
53 log = logging.getLogger(__name__)
51
54
@@ -281,20 +284,66 class ReposGroupsController(BaseControll
281 # url('repos_group', id=ID)
284 # url('repos_group', id=ID)
282
285
283 c.group = RepoGroup.get_or_404(id)
286 c.group = RepoGroup.get_or_404(id)
284
285 c.group_repos = c.group.repositories.all()
287 c.group_repos = c.group.repositories.all()
286
288
287 #overwrite our cached list with current filter
289 #overwrite our cached list with current filter
288 gr_filter = c.group_repos
290 gr_filter = c.group_repos
289 c.cached_repo_list = self.scm_model.get_repos(all_repos=gr_filter)
290
291 c.repos_list = c.cached_repo_list
292
293 c.repo_cnt = 0
291 c.repo_cnt = 0
294
292
295 groups = RepoGroup.query().order_by(RepoGroup.group_name)\
293 groups = RepoGroup.query().order_by(RepoGroup.group_name)\
296 .filter(RepoGroup.group_parent_id == id).all()
294 .filter(RepoGroup.group_parent_id == id).all()
297 c.groups = self.scm_model.get_repos_groups(groups)
295 c.groups = self.scm_model.get_repos_groups(groups)
296
297 if c.visual.lightweight_dashboard is False:
298 c.cached_repo_list = self.scm_model.get_repos(all_repos=gr_filter)
299
300 c.repos_list = c.cached_repo_list
301 ## lightweight version of dashboard
302 else:
303 c.repos_list = Repository.query()\
304 .filter(Repository.group_id == id)\
305 .order_by(func.lower(Repository.repo_name))\
306 .all()
307 repos_data = []
308 total_records = len(c.repos_list)
309
310 _tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup
311 template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
312
313 quick_menu = lambda repo_name: (template.get_def("quick_menu")
314 .render(repo_name, _=_, h=h, c=c))
315 repo_lnk = lambda name, rtype, private, fork_of: (
316 template.get_def("repo_name")
317 .render(name, rtype, private, fork_of, short_name=False,
318 admin=False, _=_, h=h, c=c))
319 last_change = lambda last_change: (template.get_def("last_change")
320 .render(last_change, _=_, h=h, c=c))
321 rss_lnk = lambda repo_name: (template.get_def("rss")
322 .render(repo_name, _=_, h=h, c=c))
323 atom_lnk = lambda repo_name: (template.get_def("atom")
324 .render(repo_name, _=_, h=h, c=c))
325
326 for repo in c.repos_list:
327 repos_data.append({
328 "menu": quick_menu(repo.repo_name),
329 "raw_name": repo.repo_name.lower(),
330 "name": repo_lnk(repo.repo_name, repo.repo_type,
331 repo.private, repo.fork),
332 "last_change": last_change(repo.last_db_change),
333 "desc": repo.description,
334 "owner": h.person(repo.user.username),
335 "rss": rss_lnk(repo.repo_name),
336 "atom": atom_lnk(repo.repo_name),
337 })
338
339 c.data = json.dumps({
340 "totalRecords": total_records,
341 "startIndex": 0,
342 "sort": "name",
343 "dir": "asc",
344 "records": repos_data
345 })
346
298 return render('admin/repos_groups/repos_groups.html')
347 return render('admin/repos_groups/repos_groups.html')
299
348
300 @HasPermissionAnyDecorator('hg.admin')
349 @HasPermissionAnyDecorator('hg.admin')
General Comments 0
You need to be logged in to leave comments. Login now