Revision 442:753f1380d6bc lib/tasks/.svn/text-base

View differences:

lib/tasks/.svn/text-base/email.rake.svn-base
1 1
# Redmine - project management software
2
# Copyright (C) 2006-2008  Jean-Philippe Lang
2
# Copyright (C) 2006-2011  Jean-Philippe Lang
3 3
#
4 4
# This program is free software; you can redistribute it and/or
5 5
# modify it under the terms of the GNU General Public License
6 6
# as published by the Free Software Foundation; either version 2
7 7
# of the License, or (at your option) any later version.
8
# 
8
#
9 9
# This program is distributed in the hope that it will be useful,
10 10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 12
# GNU General Public License for more details.
13
# 
13
#
14 14
# You should have received a copy of the GNU General Public License
15 15
# along with this program; if not, write to the Free Software
16 16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
......
29 29
                           create: create a user account
30 30
  no_permission_check=1    disable permission checking when receiving
31 31
                           the email
32
  
32

  
33 33
Issue attributes control options:
34 34
  project=PROJECT          identifier of the target project
35 35
  status=STATUS            name of the target status
......
58 58
      options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
59 59
      options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
60 60
      options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
61
      
61

  
62 62
      MailHandler.receive(STDIN.read, options)
63 63
    end
64
    
64

  
65 65
    desc <<-END_DESC
66 66
Read emails from an IMAP server.
67 67

  
......
73 73
                           create: create a user account
74 74
  no_permission_check=1    disable permission checking when receiving
75 75
                           the email
76
  
76

  
77 77
Available IMAP options:
78 78
  host=HOST                IMAP server host (default: 127.0.0.1)
79 79
  port=PORT                IMAP server port (default: 143)
......
81 81
  username=USERNAME        IMAP account
82 82
  password=PASSWORD        IMAP password
83 83
  folder=FOLDER            IMAP folder to read (default: INBOX)
84
  
84

  
85 85
Issue attributes control options:
86 86
  project=PROJECT          identifier of the target project
87 87
  status=STATUS            name of the target status
......
91 91
  allow_override=ATTRS     allow email content to override attributes
92 92
                           specified by previous options
93 93
                           ATTRS is a comma separated list of attributes
94
                           
94

  
95 95
Processed emails control options:
96 96
  move_on_success=MAILBOX  move emails that were successfully received
97 97
                           to MAILBOX instead of deleting them
98 98
  move_on_failure=MAILBOX  move emails that were ignored to MAILBOX
99
  
99

  
100 100
Examples:
101 101
  # No project specified. Emails MUST contain the 'Project' keyword:
102
  
102

  
103 103
  rake redmine:email:receive_iamp RAILS_ENV="production" \\
104 104
    host=imap.foo.bar username=redmine@example.net password=xxx
105 105

  
106 106

  
107 107
  # Fixed project and default tracker specified, but emails can override
108 108
  # both tracker and priority attributes:
109
  
109

  
110 110
  rake redmine:email:receive_iamp RAILS_ENV="production" \\
111 111
    host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
112 112
    project=foo \\
......
123 123
                      :folder => ENV['folder'],
124 124
                      :move_on_success => ENV['move_on_success'],
125 125
                      :move_on_failure => ENV['move_on_failure']}
126
                      
126

  
127 127
      options = { :issue => {} }
128 128
      %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
129 129
      options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
......
132 132

  
133 133
      Redmine::IMAP.check(imap_options, options)
134 134
    end
135
    
135

  
136 136
    desc <<-END_DESC
137 137
Read emails from an POP3 server.
138 138

  
......
148 148

  
149 149
See redmine:email:receive_imap for more options and examples.
150 150
END_DESC
151
    
151

  
152 152
    task :receive_pop3 => :environment do
153 153
      pop_options  = {:host => ENV['host'],
154 154
                      :port => ENV['port'],
......
156 156
                      :username => ENV['username'],
157 157
                      :password => ENV['password'],
158 158
                      :delete_unprocessed => ENV['delete_unprocessed']}
159
                      
159

  
160 160
      options = { :issue => {} }
161 161
      %w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = ENV[a] if ENV[a] }
162 162
      options[:allow_override] = ENV['allow_override'] if ENV['allow_override']
163 163
      options[:unknown_user] = ENV['unknown_user'] if ENV['unknown_user']
164 164
      options[:no_permission_check] = ENV['no_permission_check'] if ENV['no_permission_check']
165
      
165

  
166 166
      Redmine::POP3.check(pop_options, options)
167 167
    end
168
    
168

  
169 169
    desc "Send a test email to the user with the provided login name"
170 170
    task :test, :login, :needs => :environment do |task, args|
171 171
      include Redmine::I18n
172
      abort l(:notice_email_error, "Please include the user login to test with. Example: login=examle-login") if args[:login].blank?
172
      abort l(:notice_email_error, "Please include the user login to test with. Example: rake redmine:email:test[login]") if args[:login].blank?
173 173

  
174 174
      user = User.find_by_login(args[:login])
175
      abort l(:notice_email_error, "User #{args[:login]} not found") unless user.logged?
176
      
175
      abort l(:notice_email_error, "User #{args[:login]} not found") unless user && user.logged?
176

  
177 177
      ActionMailer::Base.raise_delivery_errors = true
178 178
      begin
179 179
        Mailer.deliver_test(User.current)
lib/tasks/.svn/text-base/extract_fixtures.rake.svn-base
10 10
    File.open("#{RAILS_ROOT}/#{table_name}.yml", 'w' ) do |file|
11 11
      data = ActiveRecord::Base.connection.select_all(sql % table_name)
12 12
      file.write data.inject({}) { |hash, record|
13
      
14
      # cast extracted values
15
      ActiveRecord::Base.connection.columns(table_name).each { |col|
16
        record[col.name] = col.type_cast(record[col.name]) if record[col.name]      
17
      }      
18
      
19
      hash["#{table_name}_#{i.succ!}"] = record
20
      hash
13
        # cast extracted values
14
        ActiveRecord::Base.connection.columns(table_name).each { |col|
15
          record[col.name] = col.type_cast(record[col.name]) if record[col.name]
16
        }
17
        hash["#{table_name}_#{i.succ!}"] = record
18
        hash
21 19
      }.to_yaml
22 20
    end
23 21
  end
24
end
22
end
lib/tasks/.svn/text-base/locales.rake.svn-base
9 9
  desc 'Updates language files based on en.yml content (only works for new top level keys).'
10 10
  task :update do
11 11
    dir = ENV['DIR'] || './config/locales'
12
    
12

  
13 13
    en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en']
14
    
14

  
15 15
    files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
16 16
    files.each do |file|
17 17
      puts "Updating file #{file}"
18 18
      file_strings = YAML.load(File.read(file))
19 19
      file_strings = file_strings[file_strings.keys.first]
20
    
20

  
21 21
      missing_keys = en_strings.keys - file_strings.keys
22 22
      next if missing_keys.empty?
23
      
23

  
24 24
      puts "==> Missing #{missing_keys.size} keys (#{missing_keys.join(', ')})"
25 25
      lang = File.open(file, 'a')
26
      
26

  
27 27
      missing_keys.each do |key|
28 28
        {key => en_strings[key]}.to_yaml.each_line do |line|
29 29
          next if line =~ /^---/ || line.empty?
......
31 31
          lang << "  #{line}"
32 32
        end
33 33
      end
34
      
34

  
35 35
      lang.close
36 36
    end
37 37
  end
38
  
38

  
39 39
  desc 'Checks interpolation arguments in locals against en.yml'
40 40
  task :check_interpolation do
41 41
    dir = ENV['DIR'] || './config/locales'
......
44 44
    files.each do |file|
45 45
      file_strings = YAML.load(File.read(file))
46 46
      file_strings = file_strings[file_strings.keys.first]
47
      
47

  
48 48
      file_strings.each do |key, string|
49 49
        next unless string.is_a?(String)
50 50
        string.scan /%\{\w+\}/ do |match|
......
71 71
    deletes = ENV['key'] ? Regexp.union(ENV['key'].split(',')) : nil
72 72
    # Ignore multiline keys (begin with | or >) and keys with children (nothing meaningful after :)
73 73
    delete_regex = /\A  #{deletes}: +[^\|>\s#].*\z/
74
    
74

  
75 75
    files.each do |path|
76 76
      # Skip certain locales
77 77
      (puts "Skipping #{path}"; next) if File.basename(path, ".yml") =~ skips
......
80 80
      File.open(path, 'w') {|file| orig_content.each_line {|line| file.puts line unless line.chomp =~ delete_regex}}
81 81
    end
82 82
  end
83
  
83

  
84 84
  desc <<-END_DESC
85 85
Adds a new top-level translation string to all locale file (only works for childless keys, probably doesn\'t work on windows, doesn't check for duplicates).
86 86

  

Also available in: Unified diff