Skip to content

Commit

Permalink
[#2304] Add /user/{id}/followers page with list of user's followers
Browse files Browse the repository at this point in the history
  • Loading branch information
Sean Hammond committed Apr 23, 2012
1 parent ca8eb76 commit 3d040bb
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 3 deletions.
1 change: 1 addition & 0 deletions ckan/config/routing.py
Expand Up @@ -235,6 +235,7 @@ def make_map():
m.connect('/user/edit', action='edit')
# Note: openid users have slashes in their ids, so need the wildcard
# in the route.
m.connect('/user/{id:.*}/followers', action='followers')
m.connect('/user/edit/{id:.*}', action='edit')
m.connect('/user/reset/{id:.*}', action='perform_reset')
m.connect('/user/register', action='register')
Expand Down
17 changes: 16 additions & 1 deletion ckan/controllers/user.py
Expand Up @@ -14,7 +14,7 @@
from ckan.logic import tuplize_dict, clean_dict, parse_params
from ckan.logic.schema import user_new_form_schema, user_edit_form_schema
from ckan.logic.action.get import user_activity_list_html
from ckan.logic.action.get import user_follower_count
from ckan.logic.action.get import user_follower_count, user_follower_list
from ckan.lib.captcha import check_recaptcha, CaptchaError

log = logging.getLogger(__name__)
Expand Down Expand Up @@ -407,3 +407,18 @@ def _get_form_password(self):
raise ValueError(_("The passwords you entered do not match."))
return password1

def followers(self, id=None):
context = {'model': model, 'user': c.user or c.author,
'for_view': True}
data_dict = {'id':id, 'user_obj':c.userobj}

try:
user_dict = get_action('user_show')(context,data_dict)
except NotFound:
h.redirect_to(controller='user', action='login', id=None)
except NotAuthorized:
abort(401, _('Not authorized to see this page'))

c.user_dict = user_dict
c.followers = user_follower_list(context, {'id':c.user_dict['id']})
return render('user/followers.html')
22 changes: 22 additions & 0 deletions ckan/templates/user/followers.html
@@ -0,0 +1,22 @@
<html xmlns:py="http://genshi.edgewall.org/"
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:xi="http://www.w3.org/2001/XInclude"
py:strip="">

<py:def function="page_title">${c.user} - Followers - User</py:def>
<py:def function="page_heading">
${c.user_dict.display_name}'s Followers
</py:def>

<div py:match="content">
<ul class="userlist">
<li py:for="follower in c.followers" class="user">
<ul>
${h.linked_user(follower['name'], maxlength=20)}
</ul>
</li>
</ul>
</div>

<xi:include href="layout.html" />
</html>
7 changes: 5 additions & 2 deletions ckan/templates/user/read.html
Expand Up @@ -59,8 +59,11 @@
<span>Edits</span>
</li>
<li>
<strong>${c.num_followers}</strong>
<span>Followers</span>
<a href="${h.url_for(controller='user', action='followers',
id=c.user_dict.name)}">
<strong>${c.num_followers}</strong>
<span>Followers</span>
</a>
</li>
</ul>
</div>
Expand Down

0 comments on commit 3d040bb

Please sign in to comment.