1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import ckan.plugins as p from ckan.lib.base import BaseController, config import stats as stats_lib import ckan.lib.helpers as h class StatsController(BaseController): def index(self): c = p.toolkit.c stats = stats_lib.Stats() rev_stats = stats_lib.RevisionStats() c.top_rated_packages = stats.top_rated_packages() 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.summary_stats = stats.summary_stats() c.activity_counts = stats.activity_counts() c.by_org = stats.by_org() 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() c.package_revisions_by_week = rev_stats.get_by_week('package_revisions') # Used in the legacy CKAN templates. c.packages_by_week = [] # Used in new CKAN templates gives more control to the templates for formatting. c.raw_packages_by_week = [] for week_date, num_packages, cumulative_num_packages in c.num_packages_by_week: c.packages_by_week.append('[new Date(%s), %s]' % (week_date.replace('-', ','), cumulative_num_packages)) c.raw_packages_by_week.append({'date': h.date_str_to_datetime(week_date), 'total_packages': cumulative_num_packages}) c.all_package_revisions = [] c.raw_all_package_revisions = [] for week_date, revs, num_revisions, cumulative_num_revisions in c.package_revisions_by_week: c.all_package_revisions.append('[new Date(%s), %s]' % (week_date.replace('-', ','), num_revisions)) c.raw_all_package_revisions.append({'date': h.date_str_to_datetime(week_date), 'total_revisions': num_revisions}) c.new_datasets = [] c.raw_new_datasets = [] for week_date, pkgs, num_packages, cumulative_num_packages in c.new_packages_by_week: c.new_datasets.append('[new Date(%s), %s]' % (week_date.replace('-', ','), num_packages)) c.raw_new_datasets.append({'date': h.date_str_to_datetime(week_date), 'new_packages': num_packages}) return p.toolkit.render('ckanext/stats/index.html') def leaderboard(self, id=None): c = p.toolkit.c c.solr_core_url = config.get('ckanext.stats.solr_core_url', 'http://solr.okfn.org/solr/ckan') return p.toolkit.render('ckanext/stats/leaderboard.html') |