Mercurial > kallithea
annotate rhodecode/controllers/journal.py @ 3485:b19b1723ff10 beta
pullrequest: pullrequest from changelog view
It seems like it didn't work ... perhaps because I broke it. But now we clean
it up and make it work:
Use rev_end as the revision to merge. We don't know where to merge ... but
start_rev cannot be used for that.
This might to some extent have been working before ... but we prefer to clean
it up and start over again when the normal merge workflow is fully working.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Fri, 01 Mar 2013 17:16:24 +0100 |
parents | 0226b6d6b2b5 |
children | cd50d1b5f35b 10b4e34841a4 |
rev | line source |
---|---|
861
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
1 # -*- coding: utf-8 -*- |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
2 """ |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
3 rhodecode.controllers.journal |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
5 |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
6 Journal controller for pylons |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1175
diff
changeset
|
7 |
861
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
8 :created_on: Nov 21, 2010 |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
9 :author: marcink |
1824
89efedac4e6c
2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
861
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
11 :license: GPLv3, see COPYING for more details. |
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
12 """ |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
13 # This program is free software: you can redistribute it and/or modify |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
14 # it under the terms of the GNU General Public License as published by |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
15 # the Free Software Foundation, either version 3 of the License, or |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
16 # (at your option) any later version. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1175
diff
changeset
|
17 # |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
18 # This program is distributed in the hope that it will be useful, |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
21 # GNU General Public License for more details. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1175
diff
changeset
|
22 # |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
23 # You should have received a copy of the GNU General Public License |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
24 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
861
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
25 import logging |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1421
diff
changeset
|
26 from itertools import groupby |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
27 |
1041
98be43b888c4
Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents:
1019
diff
changeset
|
28 from sqlalchemy import or_ |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1421
diff
changeset
|
29 from sqlalchemy.orm import joinedload |
3154
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
30 from sqlalchemy.sql.expression import func |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
31 |
1041
98be43b888c4
Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents:
1019
diff
changeset
|
32 from webhelpers.paginate import Page |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1421
diff
changeset
|
33 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed |
861
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
34 |
2242
87e9718ab4a2
Use webob exception as often as possible
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
35 from webob.exc import HTTPBadRequest |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
36 from pylons import request, tmpl_context as c, response, url |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
37 from pylons.i18n.translation import _ |
995
d14723711d17
fixes for journal, added paging now it's possible to view whole journal
Marcin Kuzminski <marcin@python-works.com>
parents:
994
diff
changeset
|
38 |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
39 import rhodecode.lib.helpers as h |
793
3025b0f9475e
disabled journal for anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents:
738
diff
changeset
|
40 from rhodecode.lib.auth import LoginRequired, NotAnonymous |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
41 from rhodecode.lib.base import BaseController, render |
1741
fcbc35ecb024
personal Journal UI
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
42 from rhodecode.model.db import UserLog, UserFollowing, Repository, User |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1421
diff
changeset
|
43 from rhodecode.model.meta import Session |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
44 from rhodecode.lib.utils2 import safe_int, AttributeDict |
3070
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
45 from rhodecode.controllers.admin.admin import _journal_filter |
3154
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
46 from rhodecode.model.repo import RepoModel |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
47 from rhodecode.lib.compat import json |
861
fd2ea6ceadc8
updated docs on every controller
Marcin Kuzminski <marcin@python-works.com>
parents:
793
diff
changeset
|
48 |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
49 log = logging.getLogger(__name__) |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
50 |
1212 | 51 |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
52 class JournalController(BaseController): |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
53 |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
54 def __before__(self): |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
55 super(JournalController, self).__before__() |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
56 self.language = 'en-us' |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
57 self.ttl = "5" |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
58 self.feed_nr = 20 |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
59 c.search_term = request.GET.get('filter') |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
60 |
1120
a8d759613d8f
fixed some bugs in api key auth, added access by api key into rss/atom feeds in global journal
Marcin Kuzminski <marcin@python-works.com>
parents:
1117
diff
changeset
|
61 @LoginRequired() |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
62 @NotAnonymous() |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
63 def index(self): |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
64 # Return a rendered template |
2845
6b176c679896
failsafe the GET `page` argument
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
65 p = safe_int(request.params.get('page', 1), 1) |
1741
fcbc35ecb024
personal Journal UI
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
66 c.user = User.get(self.rhodecode_user.user_id) |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
67 c.following = self.sa.query(UserFollowing)\ |
1117
6eb5bb24a948
Major rewrite of auth objects. Moved parts of filling user data into user model.
Marcin Kuzminski <marcin@python-works.com>
parents:
1088
diff
changeset
|
68 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ |
1000
229437211bef
Optimized queries on journal, and added quick stop following action button in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
995
diff
changeset
|
69 .options(joinedload(UserFollowing.follows_repository))\ |
229437211bef
Optimized queries on journal, and added quick stop following action button in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
995
diff
changeset
|
70 .all() |
793
3025b0f9475e
disabled journal for anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents:
738
diff
changeset
|
71 |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
72 journal = self._get_journal_data(c.following) |
994
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
73 |
3070
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
74 def url_generator(**kw): |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
75 return url.current(filter=c.search_term, **kw) |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
76 |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
77 c.journal_pager = Page(journal, page=p, items_per_page=20, url=url_generator) |
995
d14723711d17
fixes for journal, added paging now it's possible to view whole journal
Marcin Kuzminski <marcin@python-works.com>
parents:
994
diff
changeset
|
78 c.journal_day_aggreagate = self._get_daily_aggregate(c.journal_pager) |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1041
diff
changeset
|
79 |
995
d14723711d17
fixes for journal, added paging now it's possible to view whole journal
Marcin Kuzminski <marcin@python-works.com>
parents:
994
diff
changeset
|
80 c.journal_data = render('journal/journal_data.html') |
1421
c6b811f11c94
Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
1212
diff
changeset
|
81 if request.environ.get('HTTP_X_PARTIAL_XHR'): |
995
d14723711d17
fixes for journal, added paging now it's possible to view whole journal
Marcin Kuzminski <marcin@python-works.com>
parents:
994
diff
changeset
|
82 return c.journal_data |
3154
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
83 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
84 repos_list = Session().query(Repository)\ |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
85 .filter(Repository.user_id == |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
86 self.rhodecode_user.user_id)\ |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
87 .order_by(func.lower(Repository.repo_name)).all() |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
88 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
89 repos_data = RepoModel().get_repos_as_dict(repos_list=repos_list, |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
90 admin=True) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
91 #json used to render the grid |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
92 c.data = json.dumps(repos_data) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
93 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
94 watched_repos_data = [] |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
95 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
96 ## watched repos |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
97 _render = RepoModel._render_datatable |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
98 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
99 def quick_menu(repo_name): |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
100 return _render('quick_menu', repo_name) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
101 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
102 def repo_lnk(name, rtype, private, fork_of): |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
103 return _render('repo_name', name, rtype, private, fork_of, |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
104 short_name=False, admin=False) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
105 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
106 def last_rev(repo_name, cs_cache): |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
107 return _render('revision', repo_name, cs_cache.get('revision'), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
108 cs_cache.get('raw_id'), cs_cache.get('author'), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
109 cs_cache.get('message')) |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
110 |
3154
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
111 def desc(desc): |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
112 from pylons import tmpl_context as c |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
113 if c.visual.stylify_metatags: |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
114 return h.urlify_text(h.desc_stylize(h.truncate(desc, 60))) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
115 else: |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
116 return h.urlify_text(h.truncate(desc, 60)) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
117 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
118 def repo_actions(repo_name): |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
119 return _render('repo_actions', repo_name) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
120 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
121 def owner_actions(user_id, username): |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
122 return _render('user_name', user_id, username) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
123 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
124 def toogle_follow(repo_id): |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
125 return _render('toggle_follow', repo_id) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
126 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
127 for entry in c.following: |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
128 repo = entry.follows_repository |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
129 cs_cache = repo.changeset_cache |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
130 row = { |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
131 "menu": quick_menu(repo.repo_name), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
132 "raw_name": repo.repo_name.lower(), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
133 "name": repo_lnk(repo.repo_name, repo.repo_type, |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
134 repo.private, repo.fork), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
135 "last_changeset": last_rev(repo.repo_name, cs_cache), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
136 "raw_tip": cs_cache.get('revision'), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
137 "action": toogle_follow(repo.repo_id) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
138 } |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
139 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
140 watched_repos_data.append(row) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
141 |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
142 c.watched_data = json.dumps({ |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
143 "totalRecords": len(c.following), |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
144 "startIndex": 0, |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
145 "sort": "name", |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
146 "dir": "asc", |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
147 "records": watched_repos_data |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
148 }) |
0226b6d6b2b5
Use common function for generation of grid data
Marcin Kuzminski <marcin@python-works.com>
parents:
3075
diff
changeset
|
149 return render('journal/journal.html') |
2951
301773d07012
Lazy loading on my journal page
Marcin Kuzminski <marcin@python-works.com>
parents:
2845
diff
changeset
|
150 |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
151 @LoginRequired(api_access=True) |
2410
a1595b6e1445
Add API access to personal journal, and forbid anonymous access on them
Marcin Kuzminski <marcin@python-works.com>
parents:
2397
diff
changeset
|
152 @NotAnonymous() |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
153 def journal_atom(self): |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
154 """ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
155 Produce an atom-1.0 feed via feedgenerator module |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
156 """ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
157 following = self.sa.query(UserFollowing)\ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
158 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
159 .options(joinedload(UserFollowing.follows_repository))\ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
160 .all() |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
161 return self._atom_feed(following, public=False) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
162 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
163 @LoginRequired(api_access=True) |
2410
a1595b6e1445
Add API access to personal journal, and forbid anonymous access on them
Marcin Kuzminski <marcin@python-works.com>
parents:
2397
diff
changeset
|
164 @NotAnonymous() |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
165 def journal_rss(self): |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
166 """ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
167 Produce an rss feed via feedgenerator module |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
168 """ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
169 following = self.sa.query(UserFollowing)\ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
170 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
171 .options(joinedload(UserFollowing.follows_repository))\ |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
172 .all() |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
173 return self._rss_feed(following, public=False) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
174 |
994
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
175 def _get_daily_aggregate(self, journal): |
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
176 groups = [] |
1212 | 177 for k, g in groupby(journal, lambda x: x.action_as_day): |
1041
98be43b888c4
Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents:
1019
diff
changeset
|
178 user_group = [] |
3068
44827c84dc66
added handling of deleted users in journal data
Marcin Kuzminski <marcin@python-works.com>
parents:
2959
diff
changeset
|
179 #groupby username if it's a present value, else fallback to journal username |
44827c84dc66
added handling of deleted users in journal data
Marcin Kuzminski <marcin@python-works.com>
parents:
2959
diff
changeset
|
180 for _, g2 in groupby(list(g), lambda x: x.user.username if x.user else x.username): |
1041
98be43b888c4
Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents:
1019
diff
changeset
|
181 l = list(g2) |
98be43b888c4
Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents:
1019
diff
changeset
|
182 user_group.append((l[0].user, l)) |
98be43b888c4
Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents:
1019
diff
changeset
|
183 |
98be43b888c4
Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents:
1019
diff
changeset
|
184 groups.append((k, user_group,)) |
994
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
185 |
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
186 return groups |
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
187 |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
188 def _get_journal_data(self, following_repos): |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
189 repo_ids = [x.follows_repository.repo_id for x in following_repos |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
190 if x.follows_repository is not None] |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
191 user_ids = [x.follows_user.user_id for x in following_repos |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
192 if x.follows_user is not None] |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
193 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
194 filtering_criterion = None |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
195 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
196 if repo_ids and user_ids: |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
197 filtering_criterion = or_(UserLog.repository_id.in_(repo_ids), |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
198 UserLog.user_id.in_(user_ids)) |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
199 if repo_ids and not user_ids: |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
200 filtering_criterion = UserLog.repository_id.in_(repo_ids) |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
201 if not repo_ids and user_ids: |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
202 filtering_criterion = UserLog.user_id.in_(user_ids) |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
203 if filtering_criterion is not None: |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
204 journal = self.sa.query(UserLog)\ |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
205 .options(joinedload(UserLog.user))\ |
3070
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
206 .options(joinedload(UserLog.repository)) |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
207 #filter |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
208 try: |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
209 journal = _journal_filter(journal, c.search_term) |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
210 except: |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
211 # we want this to crash for now |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
212 raise |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
213 journal = journal.filter(filtering_criterion)\ |
cc7eedb5323c
final implementation of #210 journal filtering.
Marcin Kuzminski <marcin@python-works.com>
parents:
3068
diff
changeset
|
214 .order_by(UserLog.action_date.desc()) |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
215 else: |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
216 journal = [] |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
217 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
218 return journal |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
219 |
1120
a8d759613d8f
fixed some bugs in api key auth, added access by api key into rss/atom feeds in global journal
Marcin Kuzminski <marcin@python-works.com>
parents:
1117
diff
changeset
|
220 @LoginRequired() |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
221 @NotAnonymous() |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
222 def toggle_following(self): |
875 | 223 cur_token = request.POST.get('auth_token') |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
224 token = h.get_token() |
875 | 225 if cur_token == token: |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
226 |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
227 user_id = request.POST.get('follows_user_id') |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
228 if user_id: |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
229 try: |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1041
diff
changeset
|
230 self.scm_model.toggle_following_user(user_id, |
1212 | 231 self.rhodecode_user.user_id) |
1749
8ecc6b8229a5
commit less models
Marcin Kuzminski <marcin@python-works.com>
parents:
1741
diff
changeset
|
232 Session.commit() |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
233 return 'ok' |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
234 except: |
1175
8c0a57a4b89b
Journal Should not return 500 errors on failure, rather better is to return bad request error
Marcin Kuzminski <marcin@python-works.com>
parents:
1121
diff
changeset
|
235 raise HTTPBadRequest() |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
236 |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
237 repo_id = request.POST.get('follows_repo_id') |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
238 if repo_id: |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
239 try: |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1041
diff
changeset
|
240 self.scm_model.toggle_following_repo(repo_id, |
1212 | 241 self.rhodecode_user.user_id) |
1749
8ecc6b8229a5
commit less models
Marcin Kuzminski <marcin@python-works.com>
parents:
1741
diff
changeset
|
242 Session.commit() |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
243 return 'ok' |
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
244 except: |
1175
8c0a57a4b89b
Journal Should not return 500 errors on failure, rather better is to return bad request error
Marcin Kuzminski <marcin@python-works.com>
parents:
1121
diff
changeset
|
245 raise HTTPBadRequest() |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
246 |
1976 | 247 log.debug('token mismatch %s vs %s' % (cur_token, token)) |
1175
8c0a57a4b89b
Journal Should not return 500 errors on failure, rather better is to return bad request error
Marcin Kuzminski <marcin@python-works.com>
parents:
1121
diff
changeset
|
248 raise HTTPBadRequest() |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
249 |
1120
a8d759613d8f
fixed some bugs in api key auth, added access by api key into rss/atom feeds in global journal
Marcin Kuzminski <marcin@python-works.com>
parents:
1117
diff
changeset
|
250 @LoginRequired() |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
251 def public_journal(self): |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
252 # Return a rendered template |
2845
6b176c679896
failsafe the GET `page` argument
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
253 p = safe_int(request.params.get('page', 1), 1) |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
254 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
255 c.following = self.sa.query(UserFollowing)\ |
1117
6eb5bb24a948
Major rewrite of auth objects. Moved parts of filling user data into user model.
Marcin Kuzminski <marcin@python-works.com>
parents:
1088
diff
changeset
|
256 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
257 .options(joinedload(UserFollowing.follows_repository))\ |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
258 .all() |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
259 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
260 journal = self._get_journal_data(c.following) |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
261 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
262 c.journal_pager = Page(journal, page=p, items_per_page=20) |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
263 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
264 c.journal_day_aggreagate = self._get_daily_aggregate(c.journal_pager) |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
265 |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
266 c.journal_data = render('journal/journal_data.html') |
1421
c6b811f11c94
Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
1212
diff
changeset
|
267 if request.environ.get('HTTP_X_PARTIAL_XHR'): |
1085
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
268 return c.journal_data |
3fe3285868d1
implemented public journal for anonymous users, admin can control which repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
269 return render('journal/public_journal.html') |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
270 |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
271 def _atom_feed(self, repos, public=True): |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
272 journal = self._get_journal_data(repos) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
273 if public: |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
274 _link = url('public_journal_atom', qualified=True) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
275 _desc = '%s %s %s' % (c.rhodecode_name, _('public journal'), |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
276 'atom feed') |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
277 else: |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
278 _link = url('journal_atom', qualified=True) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
279 _desc = '%s %s %s' % (c.rhodecode_name, _('journal'), 'atom feed') |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
280 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
281 feed = Atom1Feed(title=_desc, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
282 link=_link, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
283 description=_desc, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
284 language=self.language, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
285 ttl=self.ttl) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
286 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
287 for entry in journal[:self.feed_nr]: |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
288 user = entry.user |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
289 if user is None: |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
290 #fix deleted users |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
291 user = AttributeDict({'short_contact': entry.username, |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
292 'email': '', |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
293 'full_contact': ''}) |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
294 action, action_extra, ico = h.action_parser(entry, feed=True) |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
295 title = "%s - %s %s" % (user.short_contact, action(), |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
296 entry.repository.repo_name) |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
297 desc = action_extra() |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
298 _url = None |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
299 if entry.repository is not None: |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
300 _url = url('changelog_home', |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
301 repo_name=entry.repository.repo_name, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
302 qualified=True) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
303 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
304 feed.add_item(title=title, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
305 pubdate=entry.action_date, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
306 link=_url or url('', qualified=True), |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
307 author_email=user.email, |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
308 author_name=user.full_contact, |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
309 description=desc) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
310 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
311 response.content_type = feed.mime_type |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
312 return feed.writeString('utf-8') |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
313 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
314 def _rss_feed(self, repos, public=True): |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
315 journal = self._get_journal_data(repos) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
316 if public: |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
317 _link = url('public_journal_atom', qualified=True) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
318 _desc = '%s %s %s' % (c.rhodecode_name, _('public journal'), |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
319 'rss feed') |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
320 else: |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
321 _link = url('journal_atom', qualified=True) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
322 _desc = '%s %s %s' % (c.rhodecode_name, _('journal'), 'rss feed') |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
323 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
324 feed = Rss201rev2Feed(title=_desc, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
325 link=_link, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
326 description=_desc, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
327 language=self.language, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
328 ttl=self.ttl) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
329 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
330 for entry in journal[:self.feed_nr]: |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
331 user = entry.user |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
332 if user is None: |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
333 #fix deleted users |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
334 user = AttributeDict({'short_contact': entry.username, |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
335 'email': '', |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
336 'full_contact': ''}) |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
337 action, action_extra, ico = h.action_parser(entry, feed=True) |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
338 title = "%s - %s %s" % (user.short_contact, action(), |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
339 entry.repository.repo_name) |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
340 desc = action_extra() |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
341 _url = None |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
342 if entry.repository is not None: |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
343 _url = url('changelog_home', |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
344 repo_name=entry.repository.repo_name, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
345 qualified=True) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
346 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
347 feed.add_item(title=title, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
348 pubdate=entry.action_date, |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
349 link=_url or url('', qualified=True), |
3075
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
350 author_email=user.email, |
25029d6f4b47
fixed issue with public journal rss/atom feeds after journal filter implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3070
diff
changeset
|
351 author_name=user.full_contact, |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
352 description=desc) |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
353 |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
354 response.content_type = feed.mime_type |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
355 return feed.writeString('utf-8') |
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
356 |
1120
a8d759613d8f
fixed some bugs in api key auth, added access by api key into rss/atom feeds in global journal
Marcin Kuzminski <marcin@python-works.com>
parents:
1117
diff
changeset
|
357 @LoginRequired(api_access=True) |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
358 def public_journal_atom(self): |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
359 """ |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
360 Produce an atom-1.0 feed via feedgenerator module |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
361 """ |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
362 c.following = self.sa.query(UserFollowing)\ |
1117
6eb5bb24a948
Major rewrite of auth objects. Moved parts of filling user data into user model.
Marcin Kuzminski <marcin@python-works.com>
parents:
1088
diff
changeset
|
363 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
364 .options(joinedload(UserFollowing.follows_repository))\ |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
365 .all() |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
366 |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
367 return self._atom_feed(c.following) |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
368 |
1120
a8d759613d8f
fixed some bugs in api key auth, added access by api key into rss/atom feeds in global journal
Marcin Kuzminski <marcin@python-works.com>
parents:
1117
diff
changeset
|
369 @LoginRequired(api_access=True) |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
370 def public_journal_rss(self): |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
371 """ |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
372 Produce an rss2 feed via feedgenerator module |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
373 """ |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
374 c.following = self.sa.query(UserFollowing)\ |
1117
6eb5bb24a948
Major rewrite of auth objects. Moved parts of filling user data into user model.
Marcin Kuzminski <marcin@python-works.com>
parents:
1088
diff
changeset
|
375 .filter(UserFollowing.user_id == self.rhodecode_user.user_id)\ |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
376 .options(joinedload(UserFollowing.follows_repository))\ |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
377 .all() |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1085
diff
changeset
|
378 |
2397
d815d617eb5e
added rss/atom feeds into personalized journal
Marcin Kuzminski <marcin@python-works.com>
parents:
2390
diff
changeset
|
379 return self._rss_feed(c.following) |