Commit d8043c6f290e29d6033d442f8dad9b36f04e687e
Exists in
master
and in
1 other branch
Merge branch 'master' of gitlab.com:noosfero-plugins/gamification
Showing
1 changed file
with
18 additions
and
10 deletions
Show diff stats
script/export_ranking.rb
@@ -26,29 +26,37 @@ profile_ids.each do |profile_id| | @@ -26,29 +26,37 @@ profile_ids.each do |profile_id| | ||
26 | conditions = group_control.nil? ? {} : {:identifier => group_control[profile_id]['profiles']} | 26 | conditions = group_control.nil? ? {} : {:identifier => group_control[profile_id]['profiles']} |
27 | amount = Person.find(:all, :conditions => conditions).count | 27 | amount = Person.find(:all, :conditions => conditions).count |
28 | count = 0 | 28 | count = 0 |
29 | - | 29 | + |
30 | Person.find_each(:conditions => conditions) do |person| | 30 | Person.find_each(:conditions => conditions) do |person| |
31 | count += 1 | 31 | count += 1 |
32 | gamification_categories = categories.map{ |c| GamificationPlugin::PointsCategorization.for_type(c).where(profile_id: profile_id).first} | 32 | gamification_categories = categories.map{ |c| GamificationPlugin::PointsCategorization.for_type(c).where(profile_id: profile_id).first} |
33 | categories_values = gamification_categories.map{|c| person.score_points(:category => c.id.to_s).sum(:num_points)} | 33 | categories_values = gamification_categories.map{|c| person.score_points(:category => c.id.to_s).sum(:num_points)} |
34 | - if (profile.nil?) | ||
35 | - person_articles = Article.where(:author_id => person.id, :type => Article.text_article_types + ['ProposalsDiscussionPlugin::Proposal']) | 34 | + if profile.nil? |
35 | + person_articles = Article.where(:author_id => person.id) | ||
36 | + person_up_votes = person.comments.joins(:votes).where('vote > 0').count + person_articles.joins(:votes).where('vote > 0').count | ||
37 | + person_down_votes = person.comments.joins(:votes).where('vote < 0').count + person_articles.joins(:votes).where('vote < 0').count | ||
38 | + person_comments = person.comments.count | ||
39 | + person_followers = (person.following_articles & person.article_followers.where(article_id: person_articles)).count | ||
36 | else | 40 | else |
37 | - person_articles = profile.articles.where(:author_id => person.id, :type => Article.text_article_types + ['ProposalsDiscussionPlugin::Proposal']) | 41 | + person_articles = profile.articles.where(:author_id => person.id) |
42 | + person_up_votes = person.comments.where(:source_id => profile.articles).joins(:votes).where('vote > 0').count + person_articles.joins(:votes).where('vote > 0').count | ||
43 | + person_down_votes = person.comments.where(:source_id => profile.articles).joins(:votes).where('vote < 0').count + person_articles.joins(:votes).where('vote < 0').count | ||
44 | + person_comments = person.comments.where(:source_id => profile.articles).count | ||
45 | + person_followers = (person.following_articles & person.article_followers.where(article_id: profile.articles)).count | ||
38 | end | 46 | end |
39 | - puts "Exporting '#{person.identifier}' #{count}/#{amount}" | ||
40 | - | ||
41 | quantities_values = [ | 47 | quantities_values = [ |
42 | Vote.for_voter(person).count, | 48 | Vote.for_voter(person).count, |
43 | person.friends.count, | 49 | person.friends.count, |
44 | - person.comments.where(:source_id => person_articles).joins(:votes).where('vote > 0').count + person_articles.joins(:votes).where('vote > 0').count, | ||
45 | - person.comments.where(:source_id => person_articles).joins(:votes).where('vote < 0').count + person_articles.joins(:votes).where('vote < 0').count, | 50 | + person_up_votes, |
51 | + person_down_votes, | ||
46 | person_articles.count, | 52 | person_articles.count, |
47 | - person.comments.where(source_id: person_articles).count, | ||
48 | Comment.where(:source_id => person_articles).count, | 53 | Comment.where(:source_id => person_articles).count, |
49 | - (person.following_articles & person.article_followers.where(article_id: person_articles)).count, | 54 | + person_followers, |
50 | ArticleFollower.where(:article_id => person_articles).count | 55 | ArticleFollower.where(:article_id => person_articles).count |
51 | ] | 56 | ] |
57 | + | ||
58 | + puts "Exporting '#{person.identifier}' #{count}/#{amount}" | ||
59 | + | ||
52 | csv << [person.identifier, person.name, person.points] + categories_values + quantities_values | 60 | csv << [person.identifier, person.name, person.points] + categories_values + quantities_values |
53 | end | 61 | end |
54 | end | 62 | end |