Commit 2ac0a19bbfa5aa5728d23f925f57f7129cb37e9c

Authored by Leandro Santos
1 parent c11ebee2
Exists in master

put the report to generate noosfero files

controllers/myprofile/dialoga_plugin_myprofile_controller.rb
@@ -4,7 +4,7 @@ class DialogaPluginMyprofileController < MyProfileController @@ -4,7 +4,7 @@ class DialogaPluginMyprofileController < MyProfileController
4 4
5 def send_report 5 def send_report
6 path = File.join(Rails.root,'plugins','dialoga','script') 6 path = File.join(Rails.root,'plugins','dialoga','script')
7 - scripts = ['sent_event_report', 'sent_proposal_report'] 7 + scripts = ['sent_event_report', 'sent_ranking', 'sent_proposal_report']
8 scripts.map do |script| 8 scripts.map do |script|
9 cmd = File.join(path,script) + ' ' + current_person.email.to_s 9 cmd = File.join(path,script) + ' ' + current_person.email.to_s
10 fork {IO.popen(cmd).read} 10 fork {IO.popen(cmd).read}
script/sent_event_report
1 #!/usr/bin/env ruby 1 #!/usr/bin/env ruby
2 # encoding: UTF-8 2 # encoding: UTF-8
3 -require_relative '../../../config/environment' 3 +include ActionDispatch::TestProcess
4 4
5 puts 'Iniciando script eventos' 5 puts 'Iniciando script eventos'
6 6
7 -directory = File.join(Rails.root,'data')  
8 -Dir.mkdir(directory) unless File.exists?(directory) 7 +filebasepath = '/tmp/'
9 8
10 -file = File.open(File.join(directory,'event.csv'), 'w+') 9 +dialoga = Community['dialoga']
  10 +root_report_folder = dialoga.folders.where(:slug => 'relatorios').first
  11 +root_report_folder ||= Folder.create!(:profile => dialoga, :name => 'Relatorios')
  12 +
  13 +report_folder = Folder.find_by_slug(DateTime.now.strftime('%Y-%m-%d'))
  14 +report_folder ||= Folder.create!(:profile => dialoga, :name => DateTime.now.strftime('%Y-%m-%d'), :parent => root_report_folder)
11 15
12 events = Event.all 16 events = Event.all
13 events.map do |event| 17 events.map do |event|
  18 + filepath = filebasepath + DateTime.now.strftime('%Y-%m-%d-%H-%m-%S') + '-' + event.slug
  19 + file = File.open(File.join(filepath), 'w+')
14 file.write(event.name+ "\n") 20 file.write(event.name+ "\n")
15 header = "'Nome';'Email'\n" 21 header = "'Nome';'Email'\n"
16 file.write(header) 22 file.write(header)
@@ -24,7 +30,8 @@ events.map do |event| @@ -24,7 +30,8 @@ events.map do |event|
24 file.write(info.map{|i| "'" + i.to_s + "'"}.join(";")) 30 file.write(info.map{|i| "'" + i.to_s + "'"}.join(";"))
25 file.write("\n") 31 file.write("\n")
26 end 32 end
  33 + file.close
  34 + uploaded_file = UploadedFile.new(:uploaded_data => fixture_file_upload(filepath, 'text/csv'), :profile => dialoga, :parent => report_folder)
  35 + uploaded_file.save
27 end 36 end
28 37
29 -file.close  
30 -  
script/sent_proposal_report
1 #!/usr/bin/env ruby 1 #!/usr/bin/env ruby
2 # encoding: UTF-8 2 # encoding: UTF-8
3 -require_relative '../../../config/environment' 3 +include ActionDispatch::TestProcess
4 4
5 -directory = File.join(Rails.root,'data')  
6 -Dir.mkdir(directory) unless File.exists?(directory) 5 +puts 'Iniciando script propostas'
7 6
8 -emails = ['leandronunes@gmail.com', 'leandro.santos@serpro.gov.br'] + ARGV  
9 -emails.uniq! 7 +filebasepath = '/tmp/'
  8 +
  9 +dialoga = Community['dialoga']
  10 +root_report_folder = dialoga.folders.where(:slug => 'relatorios').first
  11 +root_report_folder ||= Folder.create!(:profile => dialoga, :name => 'Relatorios')
  12 +
  13 +report_folder = Folder.find_by_slug(DateTime.now.strftime('%Y-%m-%d'))
  14 +
  15 +report_folder ||= Folder.create!(:profile => dialoga, :name => DateTime.now.strftime('%Y-%m-%d'), :parent => root_report_folder)
10 16
11 -puts 'Iniciando script propostas'  
12 17
13 -file = File.open(File.join(directory,'data.csv'), 'w+') 18 +
  19 +filepath = filebasepath + DateTime.now.strftime('%Y-%m-%d-%H-%m-%S') + '-' + 'propostas.csv'
  20 +file = File.open(filepath, 'w+')
14 21
15 tasks = ProposalsDiscussionPlugin::ProposalTask.all 22 tasks = ProposalsDiscussionPlugin::ProposalTask.all
16 count = 0 23 count = 0
@@ -42,16 +49,5 @@ end @@ -42,16 +49,5 @@ end
42 49
43 file.close 50 file.close
44 51
45 -ActionMailer::Base.logger = Logger.new(STDOUT)  
46 -class Sender < ActionMailer::Base  
47 - def send_report(to, from)  
48 - directory = File.join(Rails.root,'data')  
49 - attachments["eventos.csv"] = File.read("#{directory}/event.csv")  
50 - attachments["propostas.csv"] = File.read("#{directory}/data.csv")  
51 - mail to: to, from: from,  
52 - subject: "Relatorio do Dialoga", body: "Segue em anexo os relatorios do Dialoga"  
53 - end  
54 -  
55 -end  
56 -  
57 -Sender.send_report(emails, 'dialoga@dialoga.gov.br').deliver 52 +uploaded_file = UploadedFile.new(:uploaded_data => fixture_file_upload(filepath, 'text/csv'), :profile => dialoga, :parent => report_folder)
  53 +uploaded_file.save
script/sent_ranking
1 #!/usr/bin/env ruby 1 #!/usr/bin/env ruby
2 # encoding: UTF-8 2 # encoding: UTF-8
3 -  
4 -require_relative '../../../config/environment' 3 +include ActionDispatch::TestProcess
  4 +require 'csv'
5 5
6 puts 'Iniciando script ranking' 6 puts 'Iniciando script ranking'
7 7
8 -directory = File.join(Rails.root,'data')  
9 -Dir.mkdir(directory) unless File.exists?(directory) 8 +filebasepath = '/tmp/'
  9 +
  10 +dialoga = Community['dialoga']
  11 +root_report_folder = dialoga.folders.where(:slug => 'relatorios').first
  12 +root_report_folder ||= Folder.create!(:profile => dialoga, :name => 'Relatorios')
  13 +
  14 +report_folder = Folder.find_by_slug(DateTime.now.strftime('%Y-%m-%d'))
  15 +
  16 +report_folder ||= Folder.create!(:profile => dialoga, :name => DateTime.now.strftime('%Y-%m-%d'), :parent => root_report_folder)
10 17
11 discussion = ProposalsDiscussionPlugin::Discussion.first 18 discussion = ProposalsDiscussionPlugin::Discussion.first
12 19
@@ -14,8 +21,11 @@ articles = discussion.topics @@ -14,8 +21,11 @@ articles = discussion.topics
14 articles.each do |article| 21 articles.each do |article|
15 puts "#{article.slug}" 22 puts "#{article.slug}"
16 ranking = article.ranking 23 ranking = article.ranking
17 - CSV.open(File.join(Rails.root,'data',"ranking_#{article.slug}.csv"), 'w' ) do |csv| 24 + filepath = filebasepath + DateTime.now.strftime('%Y-%m-%d-%H-%m-%S') + '-' + "ranking_#{article.slug}.csv"
  25 + CSV.open(filepath, 'w' ) do |csv|
18 csv << ['Posição', 'Id', 'Proposta', 'Positivo', 'Negativo', 'Exibições', 'Valor'] 26 csv << ['Posição', 'Id', 'Proposta', 'Positivo', 'Negativo', 'Exibições', 'Valor']
19 ranking.each_with_index {|r, i| csv << [i+1, r.values].flatten} 27 ranking.each_with_index {|r, i| csv << [i+1, r.values].flatten}
20 end 28 end
  29 + uploaded_file = UploadedFile.new(:uploaded_data => fixture_file_upload(filepath, 'text/csv'), :profile => dialoga, :parent => report_folder)
  30 + uploaded_file.save
21 end 31 end