From 7d72bddb37529f3757c482bb590fc44798d137e9 Mon Sep 17 00:00:00 2001 From: David Read Date: Tue, 14 Apr 2015 14:37:43 +0100 Subject: [PATCH] Fix stats extension. --- ckanext/stats/controller.py | 2 +- ckanext/stats/stats.py | 25 ++++++++----------- .../stats/templates/ckanext/stats/index.html | 8 +++--- .../templates_legacy/ckanext/stats/index.html | 4 +-- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/ckanext/stats/controller.py b/ckanext/stats/controller.py index 468d34f17dd..72d87592b72 100644 --- a/ckanext/stats/controller.py +++ b/ckanext/stats/controller.py @@ -13,7 +13,7 @@ def index(self): c.most_edited_packages = stats.most_edited_packages() c.largest_groups = stats.largest_groups() c.top_tags = stats.top_tags() - c.top_package_owners = stats.top_package_owners() + c.top_package_creators = stats.top_package_creators() c.new_packages_by_week = rev_stats.get_by_week('new_packages') c.deleted_packages_by_week = rev_stats.get_by_week('deleted_packages') c.num_packages_by_week = rev_stats.get_num_packages_by_week() diff --git a/ckanext/stats/stats.py b/ckanext/stats/stats.py index 63281005e1f..04f18f61fa6 100644 --- a/ckanext/stats/stats.py +++ b/ckanext/stats/stats.py @@ -99,20 +99,17 @@ def top_tags(cls, limit=10, returned_tag_info='object'): # by package return res_tags @classmethod - def top_package_owners(cls, limit=10): - package_role = table('package_role') - user_object_role = table('user_object_role') - package = table('package') - s = select([user_object_role.c.user_id, func.count(user_object_role.c.role)], from_obj=[user_object_role.join(package_role).join(package)]).\ - where(user_object_role.c.role==model.authz.Role.ADMIN).\ - where(user_object_role.c.user_id!=None).\ - where(and_(package.c.private==False, package.c.state=='active')). \ - group_by(user_object_role.c.user_id).\ - order_by(func.count(user_object_role.c.role).desc()).\ - limit(limit) - res_ids = model.Session.execute(s).fetchall() - res_users = [(model.Session.query(model.User).get(unicode(user_id)), val) for user_id, val in res_ids] - return res_users + def top_package_creators(cls, limit=10): + userid_count = \ + model.Session.query(model.Package.creator_user_id, + func.count(model.Package.creator_user_id))\ + .group_by(model.Package.creator_user_id) \ + .order_by(func.count(model.Package.creator_user_id).desc())\ + .limit(limit).all() + user_count = [ + (model.Session.query(model.User).get(unicode(user_id)), count) + for user_id, count in userid_count] + return user_count class RevisionStats(object): @classmethod diff --git a/ckanext/stats/templates/ckanext/stats/index.html b/ckanext/stats/templates/ckanext/stats/index.html index 10ef39cae5c..a65812e6e13 100644 --- a/ckanext/stats/templates/ckanext/stats/index.html +++ b/ckanext/stats/templates/ckanext/stats/index.html @@ -148,8 +148,8 @@

{{ _('Top Tags') }}

-
-

{{ _('Users Owning Most Datasets') }}

+
+

{{ _('Users Creating Most Datasets') }}

@@ -158,7 +158,7 @@

{{ _('Users Owning Most Datasets') }}

- {% for user, num_packages in c.top_package_owners %} + {% for user, num_packages in c.top_package_creators %} @@ -181,7 +181,7 @@

{{ _('Stat - + diff --git a/ckanext/stats/templates_legacy/ckanext/stats/index.html b/ckanext/stats/templates_legacy/ckanext/stats/index.html index 4f53d747555..1fb5206254b 100644 --- a/ckanext/stats/templates_legacy/ckanext/stats/index.html +++ b/ckanext/stats/templates_legacy/ckanext/stats/index.html @@ -92,9 +92,9 @@

Top Tags

{{ h.linked_user(user) }} {{ num_packages }}
-

Users owning most datasets

+

Users creating most datasets

- +
${h.linked_user(user)}${num_packages}