backlog 0.20.1 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +12 -0
- data/Rakefile +2 -1
- data/app/models/user.rb +1 -0
- data/app/models/work_lock_nagger.rb +40 -0
- data/app/models/work_lock_notify.rb +16 -0
- data/app/views/user_notify/monitoring_invitation_en.rhtml +2 -2
- data/app/views/work_lock_notify/lock_en.rhtml +3 -3
- data/app/views/work_lock_notify/lock_no.rhtml +3 -3
- data/app/views/work_lock_notify/nag_en.rhtml +6 -0
- data/app/views/work_lock_notify/nag_no.rhtml +7 -0
- data/config/environment.rb +5 -0
- data/etc/backlog.conf +2 -1
- metadata +14 -3
- data/config/deploy.rb +0 -20
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
== 0.21.0 2008-02-02
|
2
|
+
|
3
|
+
=== Features
|
4
|
+
|
5
|
+
* Notification of delayed time sheets.
|
6
|
+
Backlog is now dependent on the 'slave' gem.
|
7
|
+
|
8
|
+
=== Fixes
|
9
|
+
|
10
|
+
* Fixed switched users in time sheet monitoring invitation.
|
11
|
+
* Filled in week number when notifying subscribers of a time sheet lock.
|
12
|
+
|
1
13
|
== 0.20.1 2008-01-29
|
2
14
|
|
3
15
|
=== Fixes
|
data/Rakefile
CHANGED
@@ -32,7 +32,8 @@ Hoe.new("backlog", APP::VERSION) do |p|
|
|
32
32
|
}
|
33
33
|
p.need_zip = true
|
34
34
|
p.url = 'http://rubyforge.org/projects/backlog/'
|
35
|
-
p.extra_deps = [['rails', '>= 1.2.4'], ['gruff', '>= 0.2.9'], ['rmagick', '= 1.15.12'],
|
35
|
+
p.extra_deps = [['rails', '>= 1.2.4'], ['gruff', '>= 0.2.9'], ['rmagick', '= 1.15.12'],
|
36
|
+
['postgres', '>= 0.7.9'], ['slave', '>= 1.2.1']]
|
36
37
|
p.rsync_args = "-av --delete --exclude=wiki*"
|
37
38
|
end
|
38
39
|
|
data/app/models/user.rb
CHANGED
@@ -9,6 +9,7 @@ class User < Party
|
|
9
9
|
# even if they follow the defaults since ClassTableInheritanceInRails breaks it.
|
10
10
|
has_and_belongs_to_many :groups, :join_table => "groups_users", :foreign_key => "user_id", :association_foreign_key => 'group_id'
|
11
11
|
has_and_belongs_to_many :work_lock_subscribers, :class_name => 'User', :join_table => "user_work_lock_subscriptions", :foreign_key => "user_id", :association_foreign_key => 'subscriber_user_id'
|
12
|
+
has_many :work_locks, :foreign_key => :user_id, :order => :end_on
|
12
13
|
|
13
14
|
attr_accessor :password_needs_confirmation
|
14
15
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class WorkLockNagger
|
2
|
+
include ActionController::UrlWriter
|
3
|
+
|
4
|
+
puts "Loading class"
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
puts "Worker initialized"
|
8
|
+
end
|
9
|
+
|
10
|
+
def nag
|
11
|
+
puts "Nag called"
|
12
|
+
begin
|
13
|
+
url = url_for(:host => 'localhost', :port => 3000, :controller => 'works', :action => :weekly_work_sheet_by_work_account)
|
14
|
+
rescue Exception => e
|
15
|
+
puts e.message
|
16
|
+
puts e.backtrace
|
17
|
+
end
|
18
|
+
|
19
|
+
loop do
|
20
|
+
puts "Nagging"
|
21
|
+
begin
|
22
|
+
p late_work_locks = WorkLock.find(
|
23
|
+
:all,
|
24
|
+
:conditions => ["end_on < ? and not exists (select id from work_locks wl2 where wl2.user_id = work_locks.user_id and wl2.end_on > work_locks.end_on)", Date.today ])
|
25
|
+
late_users = late_work_locks.map{|wl| wl.user}.uniq
|
26
|
+
late_users.each do |u|
|
27
|
+
missing_date = (u.work_locks.last.end_on + 7)
|
28
|
+
year = missing_date.year
|
29
|
+
week = missing_date.cweek
|
30
|
+
WorkLockNotify.deliver_nag(u, week, url + "/#{year}/#{week}")
|
31
|
+
end
|
32
|
+
rescue Exception => e
|
33
|
+
p e
|
34
|
+
end
|
35
|
+
puts "Nag ends"
|
36
|
+
sleep 24.hours
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -10,11 +10,27 @@ class WorkLockNotify < ActionMailer::Base
|
|
10
10
|
@body["app_url"] = UserSystem::CONFIG[:app_url].to_s
|
11
11
|
@body["name"] = "#{user.first_name} #{user.last_name}"
|
12
12
|
@body["login"] = user.login
|
13
|
+
@body["week"] = week
|
13
14
|
@body["lock_user"] = lock_user
|
14
15
|
@body["week_url"] = week_url
|
15
16
|
@body["spreadsheet_url"] = spreadsheet_url
|
16
17
|
end
|
17
18
|
|
19
|
+
def nag(user, week, week_url)
|
20
|
+
setup_email(user)
|
21
|
+
|
22
|
+
# Email header info
|
23
|
+
@subject += "Time sheet reminder"
|
24
|
+
|
25
|
+
# Email body substitutions
|
26
|
+
@body["app_name"] = UserSystem::CONFIG[:app_name].to_s
|
27
|
+
@body["app_url"] = UserSystem::CONFIG[:app_url].to_s
|
28
|
+
@body["name"] = "#{user.first_name} #{user.last_name}"
|
29
|
+
@body["login"] = user.login
|
30
|
+
@body["week"] = week
|
31
|
+
@body["week_url"] = week_url
|
32
|
+
end
|
33
|
+
|
18
34
|
private
|
19
35
|
|
20
36
|
def setup_email(user)
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Regarding your account at <%=@app_name %>, <%=@
|
1
|
+
Regarding your account at <%=@app_name %>, <%=@monitoring_user.name %>:
|
2
2
|
|
3
|
-
<%=@
|
3
|
+
<%=@user.name%> has invited you to monitor his/her time sheets.
|
4
4
|
|
5
5
|
Click the link below to start monitoring:
|
6
6
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%=@name %>
|
2
2
|
|
3
|
-
<%=@lock_user.name%>
|
3
|
+
<%=@lock_user.name%> has marked week <%=@week%> as complete.
|
4
4
|
|
5
|
-
|
5
|
+
Please click on the following link to go to the week overview:
|
6
6
|
|
7
|
-
<%=@week_url%>
|
7
|
+
<%=@week_url%>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%=@name %>
|
2
2
|
|
3
|
-
<%=@lock_user.name%>
|
3
|
+
<%=@lock_user.name%> har godkjent timeliste for uke <%=@week%>.
|
4
4
|
|
5
|
-
|
5
|
+
Klikk på linken under for en ukeoversikt:
|
6
6
|
|
7
|
-
<%=@week_url%>
|
7
|
+
<%=@week_url%>
|
data/config/environment.rb
CHANGED
@@ -98,3 +98,8 @@ require 'version_from_history'
|
|
98
98
|
require 'user_system'
|
99
99
|
require 'url_for_fix'
|
100
100
|
|
101
|
+
puts "Starting Work Lock Nagger..."
|
102
|
+
gem 'slave'
|
103
|
+
require 'slave'
|
104
|
+
work_lock_nagger_thread = Slave.object(:async=>true) {WorkLockNagger.new.nag}
|
105
|
+
puts "\nWork Lock Nagger started."
|
data/etc/backlog.conf
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backlog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Uwe Kubosch
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-02-02 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -48,6 +48,15 @@ dependencies:
|
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 0.7.9
|
50
50
|
version:
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: slave
|
53
|
+
version_requirement:
|
54
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 1.2.1
|
59
|
+
version:
|
51
60
|
- !ruby/object:Gem::Dependency
|
52
61
|
name: hoe
|
53
62
|
version_requirement:
|
@@ -186,6 +195,8 @@ files:
|
|
186
195
|
- app/views/user/_password.rhtml
|
187
196
|
- app/views/user/forgot_password.rhtml
|
188
197
|
- app/views/work_lock_notify
|
198
|
+
- app/views/work_lock_notify/nag_no.rhtml
|
199
|
+
- app/views/work_lock_notify/nag_en.rhtml
|
189
200
|
- app/views/work_lock_notify/lock_en.rhtml
|
190
201
|
- app/views/work_lock_notify/lock_no.rhtml
|
191
202
|
- app/controllers
|
@@ -223,6 +234,7 @@ files:
|
|
223
234
|
- app/models
|
224
235
|
- app/models/work_lock_notify.rb
|
225
236
|
- app/models/work.rb
|
237
|
+
- app/models/work_lock_nagger.rb
|
226
238
|
- app/models/customer.rb
|
227
239
|
- app/models/period.rb
|
228
240
|
- app/models/task.rb
|
@@ -598,7 +610,6 @@ files:
|
|
598
610
|
- config/mime_types.yaml
|
599
611
|
- config/war.rb
|
600
612
|
- config/boot.rb
|
601
|
-
- config/deploy.rb
|
602
613
|
- cruise_config.rb
|
603
614
|
- db
|
604
615
|
- db/test.db
|
data/config/deploy.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
set :application, "backlog"
|
2
|
-
set :repository, "svn://rubyforge.org/var/svn/#{application}/trunk"
|
3
|
-
|
4
|
-
role :app, "sandra"
|
5
|
-
role :db, "sandra", :primary => true
|
6
|
-
|
7
|
-
set :deploy_to, "/usr/local/#{application}"
|
8
|
-
set :user, "capistrano"
|
9
|
-
|
10
|
-
set :use_sudo, false
|
11
|
-
|
12
|
-
desc "The spinner task is used by :cold_deploy to start the application up"
|
13
|
-
task :spinner, :roles => :app do
|
14
|
-
send(run_method, "/sbin/service #{application} start")
|
15
|
-
end
|
16
|
-
|
17
|
-
desc "Restart the mongrel server"
|
18
|
-
task :restart, :roles => :app do
|
19
|
-
send(run_method, "/sbin/service #{application} restart")
|
20
|
-
end
|