##// END OF EJS Templates
hovercards: handle empty repository
marcink -
r4132:ca85e1b2 default
parent child Browse files
Show More
@@ -1,109 +1,110 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 # Copyright (C) 2016-2019 RhodeCode GmbH
3 # Copyright (C) 2016-2019 RhodeCode GmbH
4 #
4 #
5 # This program is free software: you can redistribute it and/or modify
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
7 # (only), as published by the Free Software Foundation.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU Affero General Public License
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
16 #
17 # This program is dual-licensed. If you wish to learn more about the
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 import re
21 import re
22 import logging
22 import logging
23 import collections
23 import collections
24
24
25 from pyramid.httpexceptions import HTTPNotFound
25 from pyramid.httpexceptions import HTTPNotFound
26 from pyramid.view import view_config
26 from pyramid.view import view_config
27
27
28 from rhodecode.apps._base import BaseAppView, RepoAppView
28 from rhodecode.apps._base import BaseAppView, RepoAppView
29 from rhodecode.lib import helpers as h
29 from rhodecode.lib import helpers as h
30 from rhodecode.lib.auth import (
30 from rhodecode.lib.auth import (
31 LoginRequired, NotAnonymous, HasRepoGroupPermissionAnyDecorator, CSRFRequired,
31 LoginRequired, NotAnonymous, HasRepoGroupPermissionAnyDecorator, CSRFRequired,
32 HasRepoPermissionAnyDecorator)
32 HasRepoPermissionAnyDecorator)
33 from rhodecode.lib.codeblocks import filenode_as_lines_tokens
33 from rhodecode.lib.codeblocks import filenode_as_lines_tokens
34 from rhodecode.lib.index import searcher_from_config
34 from rhodecode.lib.index import searcher_from_config
35 from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int
35 from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int
36 from rhodecode.lib.ext_json import json
36 from rhodecode.lib.ext_json import json
37 from rhodecode.lib.vcs.exceptions import CommitDoesNotExistError
37 from rhodecode.lib.vcs.exceptions import CommitDoesNotExistError, EmptyRepositoryError
38 from rhodecode.lib.vcs.nodes import FileNode
38 from rhodecode.lib.vcs.nodes import FileNode
39 from rhodecode.model.db import (
39 from rhodecode.model.db import (
40 func, true, or_, case, in_filter_generator, Repository, RepoGroup, User, UserGroup, PullRequest)
40 func, true, or_, case, in_filter_generator, Repository, RepoGroup, User, UserGroup, PullRequest)
41 from rhodecode.model.repo import RepoModel
41 from rhodecode.model.repo import RepoModel
42 from rhodecode.model.repo_group import RepoGroupModel
42 from rhodecode.model.repo_group import RepoGroupModel
43 from rhodecode.model.scm import RepoGroupList, RepoList
43 from rhodecode.model.scm import RepoGroupList, RepoList
44 from rhodecode.model.user import UserModel
44 from rhodecode.model.user import UserModel
45 from rhodecode.model.user_group import UserGroupModel
45 from rhodecode.model.user_group import UserGroupModel
46
46
47 log = logging.getLogger(__name__)
47 log = logging.getLogger(__name__)
48
48
49
49
50 class HoverCardsView(BaseAppView):
50 class HoverCardsView(BaseAppView):
51
51
52 def load_default_context(self):
52 def load_default_context(self):
53 c = self._get_local_tmpl_context()
53 c = self._get_local_tmpl_context()
54 return c
54 return c
55
55
56 @LoginRequired()
56 @LoginRequired()
57 @view_config(
57 @view_config(
58 route_name='hovercard_user', request_method='GET', xhr=True,
58 route_name='hovercard_user', request_method='GET', xhr=True,
59 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
59 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
60 def hovercard_user(self):
60 def hovercard_user(self):
61 c = self.load_default_context()
61 c = self.load_default_context()
62 user_id = self.request.matchdict['user_id']
62 user_id = self.request.matchdict['user_id']
63 c.user = User.get_or_404(user_id)
63 c.user = User.get_or_404(user_id)
64 return self._get_template_context(c)
64 return self._get_template_context(c)
65
65
66 @LoginRequired()
66 @LoginRequired()
67 @view_config(
67 @view_config(
68 route_name='hovercard_user_group', request_method='GET', xhr=True,
68 route_name='hovercard_user_group', request_method='GET', xhr=True,
69 renderer='rhodecode:templates/hovercards/hovercard_user_group.mako')
69 renderer='rhodecode:templates/hovercards/hovercard_user_group.mako')
70 def hovercard_user_group(self):
70 def hovercard_user_group(self):
71 c = self.load_default_context()
71 c = self.load_default_context()
72 user_group_id = self.request.matchdict['user_group_id']
72 user_group_id = self.request.matchdict['user_group_id']
73 c.user_group = UserGroup.get_or_404(user_group_id)
73 c.user_group = UserGroup.get_or_404(user_group_id)
74 return self._get_template_context(c)
74 return self._get_template_context(c)
75
75
76 @LoginRequired()
76 @LoginRequired()
77 @view_config(
77 @view_config(
78 route_name='hovercard_pull_request', request_method='GET', xhr=True,
78 route_name='hovercard_pull_request', request_method='GET', xhr=True,
79 renderer='rhodecode:templates/hovercards/hovercard_pull_request.mako')
79 renderer='rhodecode:templates/hovercards/hovercard_pull_request.mako')
80 def hovercard_pull_request(self):
80 def hovercard_pull_request(self):
81 c = self.load_default_context()
81 c = self.load_default_context()
82 c.pull_request = PullRequest.get_or_404(
82 c.pull_request = PullRequest.get_or_404(
83 self.request.matchdict['pull_request_id'])
83 self.request.matchdict['pull_request_id'])
84 perms = ['repository.read', 'repository.write', 'repository.admin']
84 perms = ['repository.read', 'repository.write', 'repository.admin']
85 c.can_view_pr = h.HasRepoPermissionAny(*perms)(
85 c.can_view_pr = h.HasRepoPermissionAny(*perms)(
86 c.pull_request.target_repo.repo_name)
86 c.pull_request.target_repo.repo_name)
87 return self._get_template_context(c)
87 return self._get_template_context(c)
88
88
89
89
90 class HoverCardsRepoView(RepoAppView):
90 class HoverCardsRepoView(RepoAppView):
91 def load_default_context(self):
91 def load_default_context(self):
92 c = self._get_local_tmpl_context()
92 c = self._get_local_tmpl_context()
93 return c
93 return c
94
94
95 @LoginRequired()
95 @LoginRequired()
96 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin')
96 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin')
97 @view_config(
97 @view_config(
98 route_name='hovercard_repo_commit', request_method='GET', xhr=True,
98 route_name='hovercard_repo_commit', request_method='GET', xhr=True,
99 renderer='rhodecode:templates/hovercards/hovercard_repo_commit.mako')
99 renderer='rhodecode:templates/hovercards/hovercard_repo_commit.mako')
100 def hovercard_repo_commit(self):
100 def hovercard_repo_commit(self):
101 c = self.load_default_context()
101 c = self.load_default_context()
102 commit_id = self.request.matchdict['commit_id']
102 commit_id = self.request.matchdict['commit_id']
103 pre_load = ['author', 'branch', 'date', 'message']
103 pre_load = ['author', 'branch', 'date', 'message']
104 try:
104 try:
105 c.commit = self.rhodecode_vcs_repo.get_commit(commit_id=commit_id, pre_load=pre_load)
105 c.commit = self.rhodecode_vcs_repo.get_commit(
106 except CommitDoesNotExistError:
106 commit_id=commit_id, pre_load=pre_load)
107 except (CommitDoesNotExistError, EmptyRepositoryError):
107 raise HTTPNotFound()
108 raise HTTPNotFound()
108
109
109 return self._get_template_context(c)
110 return self._get_template_context(c)
General Comments 0
You need to be logged in to leave comments. Login now