annotate extra/soundsoftware/get-statistics.rb @ 970:6bd8364eafae get_statistics

initial version of script to get stats from the site
author luisf <luis.figueira@eecs.qmul.ac.uk>
date Fri, 19 Oct 2012 13:47:57 +0100
parents
children 30040a8e3a88
rev   line source
luis@970 1 # this script will get stats from the repo and print them to stdout
luis@970 2
luis@970 3 # USAGE:
luis@970 4
luis@970 5 # ./script/runner -e production extra/soundsoftware/get-statistics.rb
luis@970 6 #
luis@970 7
luis@970 8 d1 = Date.parse("20101201") # => 1 Dec 2010
luis@970 9 d2 = Date.today
luis@970 10
luis@970 11 def months_between(d1, d2)
luis@970 12 months = []
luis@970 13 start_date = Date.civil(d1.year, d1.month, 1)
luis@970 14 end_date = Date.civil(d2.year, d2.month, 1)
luis@970 15
luis@970 16 raise ArgumentError unless d1 <= d2
luis@970 17
luis@970 18 while (start_date < end_date)
luis@970 19 months << start_date
luis@970 20 start_date = start_date >>1
luis@970 21 end
luis@970 22
luis@970 23 months << end_date
luis@970 24 end
luis@970 25
luis@970 26 def weeks_between(d1, d2)
luis@970 27 weeks = []
luis@970 28 start_date = Date.civil(d1.year, d1.month, 1)
luis@970 29 end_date = Date.civil(d2.year, d2.month, 1)
luis@970 30
luis@970 31 raise ArgumentError unless d1 <= d2
luis@970 32
luis@970 33 while (start_date < end_date)
luis@970 34 weeks << start_date
luis@970 35 start_date = start_date + 1.week
luis@970 36 end
luis@970 37
luis@970 38 weeks << end_date
luis@970 39 end
luis@970 40
luis@970 41
luis@970 42 users = []
luis@970 43 # dates = months_between(d1, d2)
luis@970 44 dates = weeks_between(d1, d2)
luis@970 45 private_projects = []
luis@970 46 all_projects = []
luis@970 47 public_projects = []
luis@970 48 top_level_and_private_projects = []
luis@970 49
luis@970 50
luis@970 51 dates.each do |date|
luis@970 52 users << User.find(:all, :conditions => {:created_on => d1..date})
luis@970 53 all_projects << Project.find(:all, :conditions => {:created_on => d1..date})
luis@970 54 private_projects << Project.find(:all, :conditions => {:created_on => d1..date,
luis@970 55 :is_public => false})
luis@970 56 top_level_and_private_projects << Project.find(:all, :conditions => {:created_on => d1..date,
luis@970 57 :is_public => false,
luis@970 58 :parent_id => nil})
luis@970 59
luis@970 60 puts "#{date} #{users.size} #{all_projects.size} #{private_projects.size} \n"
luis@970 61
luis@970 62 end
luis@970 63
luis@970 64
luis@970 65
luis@970 66
luis@970 67
luis@970 68
luis@970 69
luis@970 70
luis@970 71 #nusers.each_with_index do |num, idx|
luis@970 72 # puts "#{dates[idx]} #{num}\n"
luis@970 73 #end
luis@970 74
luis@970 75
luis@970 76
luis@970 77
luis@970 78