Commit cfa657e4da34ac7d5fba1a8e9576a4e09c587ebe

Authored by Leandro Santos
1 parent 76ebea63

updating script

script/export_ranking.rb
@@ -2,7 +2,11 @@ @@ -2,7 +2,11 @@
2 2
3 require 'csv' 3 require 'csv'
4 4
  5 +group_control = YAML.load(File.read(File.join(Rails.root,'tmp','control_group.yml'))) if File.exist?(File.join(Rails.root,'tmp','control_group.yml'))
  6 +
  7 +
5 profile_ids = GamificationPlugin::PointsCategorization.select(:profile_id).group(:profile_id).map(&:profile_id) 8 profile_ids = GamificationPlugin::PointsCategorization.select(:profile_id).group(:profile_id).map(&:profile_id)
  9 +profile_ids.keep_if { |item| group_control.keys.include?(item) } unless group_control.nil?
6 profile_ids.each do |profile_id| 10 profile_ids.each do |profile_id|
7 profile = Profile.where(id: profile_id).first 11 profile = Profile.where(id: profile_id).first
8 if profile.nil? 12 if profile.nil?
@@ -19,16 +23,18 @@ profile_ids.each do |profile_id| @@ -19,16 +23,18 @@ profile_ids.each do |profile_id|
19 quantities_labels = ['quantidade de votos realizados', 'quantidade de amigos', 'votos positivos recebidos', 'votos negativos recebidos', 'quantidade de artigos', 'quantidade de comentários realizados', 'quantidade de comentários recebidos', 'quatidade de vezes que eu segui', 'quantidade de vezes que meus artigos foram seguidos'] 23 quantities_labels = ['quantidade de votos realizados', 'quantidade de amigos', 'votos positivos recebidos', 'votos negativos recebidos', 'quantidade de artigos', 'quantidade de comentários realizados', 'quantidade de comentários recebidos', 'quatidade de vezes que eu segui', 'quantidade de vezes que meus artigos foram seguidos']
20 24
21 csv << ['identifier', 'name', 'score'] + categories_labels + quantities_labels 25 csv << ['identifier', 'name', 'score'] + categories_labels + quantities_labels
22 - amount = Person.count 26 + conditions = group_control.nil? ? {} : {:identifier => group_control[profile_id]['profiles']}
  27 + amount = Person.find(:all, :conditions => conditions).count
23 count = 0 28 count = 0
24 - Person.find_each do |person| 29 +
  30 + Person.find_each(:conditions => conditions) do |person|
25 count += 1 31 count += 1
26 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}
27 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)}
28 if (profile.nil?) 34 if (profile.nil?)
29 - person_articles = Article.where(:author_id => person.id) 35 + person_articles = Article.where(:author_id => person.id, :type => Article.text_article_types + ['ProposalsDiscussionPlugin::Proposal'])
30 else 36 else
31 - person_articles = profile.articles.where(:author_id => person.id) 37 + person_articles = profile.articles.where(:author_id => person.id, :type => Article.text_article_types + ['ProposalsDiscussionPlugin::Proposal'])
32 end 38 end
33 puts "Exporting '#{person.identifier}' #{count}/#{amount}" 39 puts "Exporting '#{person.identifier}' #{count}/#{amount}"
34 40
script/process_merit_rules.rb
@@ -33,26 +33,38 @@ end @@ -33,26 +33,38 @@ end
33 33
34 Merit.observers << 'ProcessObserver' 34 Merit.observers << 'ProcessObserver'
35 35
  36 +class Article < ActiveRecord::Base
  37 + def self.text_article_types
  38 + ['TextArticle', 'TextileArticle', 'TinyMceArticle', 'ProposalsDiscussionPlugin::Proposal']
  39 + end
  40 +end
  41 +
36 Environment.all.each do |environment| 42 Environment.all.each do |environment|
  43 + puts "Process environment #{environment.name}"
37 44
38 Merit::AppPointRules.clear 45 Merit::AppPointRules.clear
39 Merit::AppBadgeRules.clear 46 Merit::AppBadgeRules.clear
40 Merit::AppPointRules.merge!(Merit::PointRules.new(environment).defined_rules) 47 Merit::AppPointRules.merge!(Merit::PointRules.new(environment).defined_rules)
41 Merit::AppBadgeRules.merge!(Merit::BadgeRules.new(environment).defined_rules) 48 Merit::AppBadgeRules.merge!(Merit::BadgeRules.new(environment).defined_rules)
42 49
43 - article_count = environment.articles.text_articles.count 50 + article_count = environment.articles.where(:type => Article.text_article_types + ['ProposalsDiscussionPlugin::Proposal']).count
44 article_index = 0 51 article_index = 0
45 - environment.articles.text_articles.find_each do |article| 52 +
  53 + puts "Amount of articles '#{article_count}'"
  54 + environment.articles.where(:type => Article.text_article_types + ['ProposalsDiscussionPlugin::Proposal']).find_each do |article|
46 article_index += 1 55 article_index += 1
  56 + puts "Analising article #{article_index} of #{article_count}"
47 create_action(article, article_index, article_count) 57 create_action(article, article_index, article_count)
48 58
49 comment_count = article.comments.count 59 comment_count = article.comments.count
50 article.comments.each.with_index(1) do |comment, i| 60 article.comments.each.with_index(1) do |comment, i|
  61 + puts "Analising comments of article '#{article.id}': comment #{i} of #{comment_count}"
51 create_action(comment, i, comment_count) 62 create_action(comment, i, comment_count)
52 end 63 end
53 64
54 followed_articles_count = article.article_followers.count 65 followed_articles_count = article.article_followers.count
55 article.article_followers.each_with_index do |af, i| 66 article.article_followers.each_with_index do |af, i|
  67 + puts "Analising follow of article '#{article.id}': follow #{i} of #{followed_articles_count}"
56 create_action(af, i, followed_articles_count) 68 create_action(af, i, followed_articles_count)
57 end 69 end
58 end 70 end