Mercurial > kallithea
comparison rhodecode/controllers/journal.py @ 2031:82a88013a3fd
merge 1.3 into stable
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 26 Feb 2012 17:25:09 +0200 |
parents | bf263968da47 a76e9bacbedc |
children | 63e58ef80ef1 |
comparison
equal
deleted
inserted
replaced
2005:ab0e122b38a7 | 2031:82a88013a3fd |
---|---|
5 | 5 |
6 Journal controller for pylons | 6 Journal controller for pylons |
7 | 7 |
8 :created_on: Nov 21, 2010 | 8 :created_on: Nov 21, 2010 |
9 :author: marcink | 9 :author: marcink |
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com> | 10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
11 :license: GPLv3, see COPYING for more details. | 11 :license: GPLv3, see COPYING for more details. |
12 """ | 12 """ |
13 # This program is free software: you can redistribute it and/or modify | 13 # This program is free software: you can redistribute it and/or modify |
14 # it under the terms of the GNU General Public License as published by | 14 # it under the terms of the GNU General Public License as published by |
15 # the Free Software Foundation, either version 3 of the License, or | 15 # the Free Software Foundation, either version 3 of the License, or |
21 # GNU General Public License for more details. | 21 # GNU General Public License for more details. |
22 # | 22 # |
23 # You should have received a copy of the GNU General Public License | 23 # You should have received a copy of the GNU General Public License |
24 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 24 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
25 import logging | 25 import logging |
26 from itertools import groupby | |
26 | 27 |
27 from sqlalchemy import or_ | 28 from sqlalchemy import or_ |
28 from sqlalchemy.orm import joinedload, make_transient | 29 from sqlalchemy.orm import joinedload |
29 from webhelpers.paginate import Page | 30 from webhelpers.paginate import Page |
30 from itertools import groupby | 31 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed |
31 | 32 |
32 from paste.httpexceptions import HTTPBadRequest | 33 from paste.httpexceptions import HTTPBadRequest |
33 from pylons import request, tmpl_context as c, response, url | 34 from pylons import request, tmpl_context as c, response, url |
34 from pylons.i18n.translation import _ | 35 from pylons.i18n.translation import _ |
35 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed | |
36 | 36 |
37 import rhodecode.lib.helpers as h | 37 import rhodecode.lib.helpers as h |
38 from rhodecode.lib.auth import LoginRequired, NotAnonymous | 38 from rhodecode.lib.auth import LoginRequired, NotAnonymous |
39 from rhodecode.lib.base import BaseController, render | 39 from rhodecode.lib.base import BaseController, render |
40 from rhodecode.model.db import UserLog, UserFollowing | 40 from rhodecode.model.db import UserLog, UserFollowing, Repository, User |
41 from rhodecode.model.meta import Session | |
42 from sqlalchemy.sql.expression import func | |
43 from rhodecode.model.scm import ScmModel | |
41 | 44 |
42 log = logging.getLogger(__name__) | 45 log = logging.getLogger(__name__) |
43 | 46 |
44 | 47 |
45 class JournalController(BaseController): | 48 class JournalController(BaseController): |
55 @LoginRequired() | 58 @LoginRequired() |
56 @NotAnonymous() | 59 @NotAnonymous() |
57 def index(self): | 60 def index(self): |
58 # Return a rendered template | 61 # Return a rendered template |
59 p = int(request.params.get('page', 1)) | 62 p = int(request.params.get('page', 1)) |
63 | |
64 c.user = User.get(self.rhodecode_user.user_id) | |
65 all_repos = self.sa.query(Repository)\ | |
66 .filter(Repository.user_id == c.user.user_id)\ | |
67 .order_by(func.lower(Repository.repo_name)).all() | |
68 | |
69 c.user_repos = ScmModel().get_repos(all_repos) | |
60 | 70 |
61 c.following = self.sa.query(UserFollowing)\ | 71 c.following = self.sa.query(UserFollowing)\ |
62 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ | 72 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ |
63 .options(joinedload(UserFollowing.follows_repository))\ | 73 .options(joinedload(UserFollowing.follows_repository))\ |
64 .all() | 74 .all() |
122 user_id = request.POST.get('follows_user_id') | 132 user_id = request.POST.get('follows_user_id') |
123 if user_id: | 133 if user_id: |
124 try: | 134 try: |
125 self.scm_model.toggle_following_user(user_id, | 135 self.scm_model.toggle_following_user(user_id, |
126 self.rhodecode_user.user_id) | 136 self.rhodecode_user.user_id) |
137 Session.commit() | |
127 return 'ok' | 138 return 'ok' |
128 except: | 139 except: |
129 raise HTTPBadRequest() | 140 raise HTTPBadRequest() |
130 | 141 |
131 repo_id = request.POST.get('follows_repo_id') | 142 repo_id = request.POST.get('follows_repo_id') |
132 if repo_id: | 143 if repo_id: |
133 try: | 144 try: |
134 self.scm_model.toggle_following_repo(repo_id, | 145 self.scm_model.toggle_following_repo(repo_id, |
135 self.rhodecode_user.user_id) | 146 self.rhodecode_user.user_id) |
147 Session.commit() | |
136 return 'ok' | 148 return 'ok' |
137 except: | 149 except: |
138 raise HTTPBadRequest() | 150 raise HTTPBadRequest() |
139 | 151 |
140 log.debug('token mismatch %s vs %s', cur_token, token) | 152 log.debug('token mismatch %s vs %s' % (cur_token, token)) |
141 raise HTTPBadRequest() | 153 raise HTTPBadRequest() |
142 | 154 |
143 @LoginRequired() | 155 @LoginRequired() |
144 def public_journal(self): | 156 def public_journal(self): |
145 # Return a rendered template | 157 # Return a rendered template |