root/db/seeds.rb

Download in other formats: Raw | Text
Revisions
Dimitrij Denissenko
Dimitrij Denissenko
Nov 30 2009 * 09:39
(8 months ago)

Revision b1794537d634e7833190d162a0351bc60046c8fc

Improvements for Single-Step-Installer

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
ActiveSupport::Dependencies.hook!

module Retrospectiva
  class DefaultContent
    
    DEFAULT_PRIORITIES = [ 
      {:rank => 4, :name => 'Normal', :default_value => true },
      {:rank => 6, :name => 'Enhancement'},
      {:rank => 5, :name => 'Minor'},
      {:rank => 3, :name => 'Major'},
      {:rank => 2, :name => 'Critical'},
      {:rank => 1, :name => 'Blocker'}
    ]
    
    DEFAULT_STATUSES = [ 
      {:rank => 1, :name => 'Open', :state_id => 1, :statement_id => 2, :default_value => true },
      {:rank => 2, :name => 'Fixed', :state_id => 3, :statement_id => 1},
      {:rank => 3, :name => 'Duplicate', :state_id => 3, :statement_id => 3},
      {:rank => 4, :name => 'Invalid', :state_id => 3, :statement_id => 3},
      {:rank => 5, :name => 'WorksForMe', :state_id => 3, :statement_id => 3},
      {:rank => 6, :name => 'WontFix', :state_id => 3, :statement_id => 3}
    ]
        
    def self.create
      returning new do |creator|
        creator.create_priorities if Priority.count.zero?
        creator.create_statuses if Status.count.zero?
        creator.create_group unless Group.exists?(:name => 'Default')
        creator.create_public unless User.exists?(:name => 'Public')
        creator.create_admin unless User.exists?(:admin => true, :active => true)
        creator.create_tasks if Retrospectiva::TaskManager::Task.count.zero?
      end
    end

    def create_priorities
      puts 'Creating some default priorities'
      DEFAULT_PRIORITIES.each do |priority|
        Priority.create(priority)
      end
    end
  
    def create_statuses
      puts 'Creating some default statuses'
      DEFAULT_STATUSES.each do |priority|
        Status.create(priority)
      end
    end

    def create_tasks
      puts 'Creating default tasks'
      Retrospectiva::TaskManager::Task.create :name => 'sync_repositories', :interval => 600
      Retrospectiva::TaskManager::Task.create :name => 'process_mails', :interval => 300
    end

    def create_group
      puts 'Creating default group'
      Group.create!(:name => 'Default')
    end

    def create_public
      puts 'Creating default public user'
      random_pass = ActiveSupport::SecureRandom.base64(30)
      User.new( :name => 'Anonymous', :plain_password => random_pass, :plain_password_confirmation => random_pass ) do |user|
        user.username = 'Public'        
      end.save!
    end

    def create_admin
      puts 'Creating default admin user'
      User.new( :name => 'Administrator', :plain_password => 'password', :plain_password_confirmation => 'password' ) do |user|
        user.username = 'admin'        
        user.email = 'please@set.this'
        user.admin = true
      end.save!
    end

    def puts(*args)
      super unless RAILS_ENV == 'test'
    end

  end    
end

Retrospectiva::DefaultContent.create