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