backlog 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ == 0.5.0 2007-08-06
2
+
3
+ * Changed first time workflow to add new backlog
4
+ * Changed startup workflow to show most urgent period for the current user
5
+ * Now display version in the header.
6
+
1
7
  == 0.4.0 2007-08-06
2
8
 
3
9
  * Added tasks to backlog edit view
data/Rakefile CHANGED
@@ -10,11 +10,9 @@ require 'rake/rdoctask'
10
10
  require 'tasks/rails'
11
11
 
12
12
  require 'hoe'
13
+ require 'version_from_history'
13
14
 
14
- first_history_line = File.readlines('History.txt')[0].chomp
15
- version = (/^== (\d+.\d+.\d+) .*$/.match first_history_line)[1]
16
-
17
- Hoe.new("backlog", version) do |p|
15
+ Hoe.new("backlog", APP::VERSION) do |p|
18
16
  p.rubyforge_name = "backlog"
19
17
  p.summary = "Application to aid collecting, processing, organizing, reviewing and doing tasks."
20
18
  p.description = p.paragraphs_of('README.txt', 0..-1).join("\n\n")
@@ -28,7 +26,7 @@ Hoe.new("backlog", version) do |p|
28
26
  end
29
27
 
30
28
  task :release_and_publish do
31
- ENV['VERSION'] = version
29
+ ENV['VERSION'] = APP::VERSION
32
30
  Rake::Task[:release].invoke
33
31
  Rake::Task[:publish_docs].invoke
34
32
  Rake::Task[:post_news].invoke
@@ -3,16 +3,20 @@ class BacklogsController < ApplicationController
3
3
 
4
4
  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
5
5
  verify :method => :post, :only => [ :destroy, :create, :update ],
6
- :redirect_to => { :action => :index }
7
-
6
+ :redirect_to => { :action => :index }
7
+
8
8
  def index
9
9
  if Task.find_started(user).size > 0
10
10
  redirect_to :controller => 'tasks', :action => :list_started
11
11
  return
12
12
  end
13
+ if Backlog.count == 0
14
+ redirect_to :action => :new
15
+ return
16
+ end
13
17
  redirect_to :controller => 'periods', :action => :index
14
18
  end
15
-
19
+
16
20
  def show
17
21
  if params[:id]
18
22
  @backlog = Backlog.find(params[:id])
@@ -31,11 +35,11 @@ class BacklogsController < ApplicationController
31
35
  end
32
36
  redirect_to :controller => 'periods', :action => :show, :id => @period
33
37
  end
34
-
38
+
35
39
  def new
36
40
  @backlog = Backlog.new
37
41
  end
38
-
42
+
39
43
  def create
40
44
  @backlog = Backlog.new(params[:backlog])
41
45
  if @backlog.save
@@ -45,7 +49,7 @@ class BacklogsController < ApplicationController
45
49
  render :action => 'new'
46
50
  end
47
51
  end
48
-
52
+
49
53
  def edit
50
54
  @backlog = Backlog.find(params[:id])
51
55
  unplanned_tasks = @backlog.tasks.select {|t| t.period.nil? && t.finished_at.nil?}.sort_by {|t| t.position}
@@ -59,12 +63,12 @@ class BacklogsController < ApplicationController
59
63
  @tasks = planned_tasks + unplanned_tasks
60
64
  @completed_tasks = @backlog.tasks.select {|t| t.finished_at}.sort {|t1, t2| t1.finished_at <=> t2.finished_at}
61
65
  end
62
-
66
+
63
67
  def edit_no_layout
64
68
  edit
65
69
  render :partial => 'tasks'
66
70
  end
67
-
71
+
68
72
  def update
69
73
  @backlog = Backlog.find(params[:id])
70
74
  if @backlog.update_attributes(params[:backlog])
@@ -74,7 +78,7 @@ class BacklogsController < ApplicationController
74
78
  render :action => 'edit'
75
79
  end
76
80
  end
77
-
81
+
78
82
  def destroy
79
83
  Backlog.find(params[:id]).destroy
80
84
  flash[:notice] = 'Backlog was successfully deleted.'
@@ -99,34 +103,34 @@ class BacklogsController < ApplicationController
99
103
  g.font = '/usr/share/fonts/bitstream-vera/Vera.ttf'
100
104
  g.hide_dots = true
101
105
  g.colors = %w{blue green}
102
-
106
+
103
107
  dates = []
104
108
  backlog.periods.first.start_on.upto(backlog.periods.last.end_on) {|date| dates << date}
105
109
 
106
110
  g.data(l(:todo), get_todo_data(dates, backlog))
107
111
  g.data(l(:done), get_work_data(dates, backlog))
108
112
  g.minimum_value = 0
109
-
113
+
110
114
  labels = {0 => dates.first.to_s, dates.length-1 => dates.last.to_s}
111
115
  labels.merge({dates.index(Date.today) => Date.today.to_s}) if (dates.index(Date.today).to_f / dates.length) > 0.15
112
116
  g.labels = labels
113
-
117
+
114
118
  send_data(g.to_blob,
115
- :disposition => 'inline',
116
- :type => 'image/png',
117
- :filename => "burn_down_chart.png")
119
+ :disposition => 'inline',
120
+ :type => 'image/png',
121
+ :filename => "burn_down_chart.png")
118
122
  end
119
-
120
- def get_todo_data(dates, backlog)
123
+
124
+ def get_todo_data(dates, backlog)
121
125
  dates.map do |date|
122
126
  backlog.get_estimate_data(date)
123
127
  end
124
- end
125
-
126
- def get_work_data(dates, backlog)
128
+ end
129
+
130
+ def get_work_data(dates, backlog)
127
131
  dates.map do |date|
128
132
  backlog.get_work_data(date)
129
133
  end
130
- end
131
-
134
+ end
135
+
132
136
  end
@@ -3,8 +3,13 @@ class PeriodsController < ApplicationController
3
3
  skip_before_filter :authenticate_user, :only => [:burn_down_chart, :burn_down_chart_thumbnail, :burn_down_chart_large]
4
4
 
5
5
  def index
6
- periods = Period.find(:all).select {|period| period.active?(true)}
7
- most_urgent_period = periods.sort_by {|p| p.required_speed}.last
6
+ active_periods = Period.find(:all).select {|period| period.active?(true)}
7
+ my_active_periods = active_periods.select {|period| period.party.includes?(current_user)}
8
+ unless my_active_periods.empty?
9
+ most_urgent_period = my_active_periods.sort_by {|p| p.required_speed}.last
10
+ else
11
+ most_urgent_period = active_periods.sort_by {|p| p.required_speed}.last
12
+ end
8
13
  redirect_to :action => 'show', :id => most_urgent_period
9
14
  end
10
15
 
@@ -22,6 +22,7 @@ function handlePageEvent(event) {
22
22
  <div id="wrap">
23
23
  <div id="leftcol">
24
24
  <div id="navbar">
25
+ <span style="float: left"><%=l :backlog%> <%=APP::VERSION%></span>
25
26
  <%= flash[:notice] + ' |' if flash[:notice] %>
26
27
  <%= link_to l(:home), '/' %>
27
28
  |
@@ -58,8 +58,9 @@ Localization::load_localized_strings
58
58
  require 'rubygems'
59
59
  require 'gruff'
60
60
 
61
- #Mime::Type.register "image/svg", :svg
62
61
  require 'environments/user_environment'
63
62
  require 'array_helper'
64
63
  require 'big_decimal_yaml_fix'
65
64
  require 'class_table_inheritance'
65
+
66
+ require 'version_from_history'
@@ -0,0 +1,4 @@
1
+ module APP
2
+ first_history_line = File.readlines('History.txt')[0].chomp
3
+ VERSION = (/^== (\d+.\d+.\d+) .*$/.match first_history_line)[1]
4
+ end
@@ -0,0 +1,3 @@
1
+ tesla_in_first_group:
2
+ group_id: 1
3
+ user_id: 1000001
@@ -1,11 +1,11 @@
1
1
  # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
- first:
2
+ past:
3
3
  id: 1
4
4
  party_id: 1
5
5
  position: 1
6
6
  start_on: 2007-06-11
7
7
  end_on: 2007-06-24
8
- another:
8
+ active:
9
9
  id: 2
10
10
  party_id: 1
11
11
  position: 2
@@ -5,7 +5,7 @@ require 'backlogs_controller'
5
5
  class BacklogsController; def rescue_action(e) raise e end; end
6
6
 
7
7
  class BacklogsControllerTest < Test::Unit::TestCase
8
- fixtures :parties, :users, :groups, :backlogs, :periods, :tasks, :works, :estimates
8
+ fixtures :parties, :users, :groups, :groups_users, :backlogs, :periods, :tasks, :works, :estimates
9
9
 
10
10
  def setup
11
11
  @user_controller = UserController.new
@@ -15,7 +15,24 @@ class BacklogsControllerTest < Test::Unit::TestCase
15
15
  @request.session[:user_id] = 1000001
16
16
  end
17
17
 
18
- def test_index
18
+ def test_index_first_time
19
+ Work.delete_all
20
+ Estimate.delete_all
21
+ Task.delete_all
22
+ Backlog.delete_all
23
+ get :index
24
+ assert_response :redirect
25
+ assert_redirected_to :action => :new
26
+ end
27
+
28
+ def test_index_active_period
29
+ Work.delete(works(:started).id)
30
+ get :index
31
+ assert_response :redirect
32
+ assert_redirected_to :controller => 'periods', :action => :index
33
+ end
34
+
35
+ def test_index_list_started
19
36
  get :index
20
37
  assert_response :redirect
21
38
  assert_redirected_to :controller => 'tasks', :action => :list_started
@@ -5,7 +5,7 @@ require 'groups_controller'
5
5
  class GroupsController; def rescue_action(e) raise e end; end
6
6
 
7
7
  class GroupsControllerTest < Test::Unit::TestCase
8
- fixtures :parties, :users, :groups, :periods, :tasks, :estimates, :works
8
+ fixtures :parties, :users, :groups, :groups_users, :periods, :tasks, :estimates, :works
9
9
 
10
10
  def setup
11
11
  @controller = GroupsController.new
@@ -95,12 +95,13 @@ class GroupsControllerTest < Test::Unit::TestCase
95
95
  end
96
96
 
97
97
  def test_set_member
98
- tesla = users(:tesla)
99
- assert groups(:first_group).users.empty?
98
+ long_user = users(:long_user)
99
+ assert groups(:first_group).users.size == 1
100
100
 
101
- post :set_member, :id => @first_id, :user_id => tesla.id, :value => 'true'
101
+ post :set_member, :id => @first_id, :user_id => long_user.id, :value => 'true'
102
102
 
103
103
  assert groups(:first_group).users.include?(users(:tesla))
104
+ assert groups(:first_group).users.include?(users(:long_user))
104
105
  end
105
106
 
106
107
  private
@@ -5,7 +5,7 @@ require 'periods_controller'
5
5
  class PeriodsController; def rescue_action(e) raise e end; end
6
6
 
7
7
  class PeriodsControllerTest < Test::Unit::TestCase
8
- fixtures :periods, :tasks, :works, :estimates
8
+ fixtures :parties, :users, :groups, :groups_users, :periods, :tasks, :works, :estimates
9
9
 
10
10
  def setup
11
11
  @controller = PeriodsController.new
@@ -5,7 +5,7 @@ require 'tasks_controller'
5
5
  class TasksController; def rescue_action(e) raise e end; end
6
6
 
7
7
  class TasksControllerTest < Test::Unit::TestCase
8
- fixtures :parties, :users, :groups, :backlogs, :periods, :tasks, :works, :estimates
8
+ fixtures :parties, :users, :groups, :groups_users, :backlogs, :periods, :tasks, :works, :estimates
9
9
 
10
10
  def setup
11
11
  @controller = TasksController.new
@@ -7,7 +7,7 @@ class UserController; def rescue_action(e) raise e end; end
7
7
 
8
8
  class UserControllerTest < Test::Unit::TestCase
9
9
  self.use_transactional_fixtures = false
10
- fixtures :users
10
+ fixtures :parties, :users, :groups, :groups_users, :periods, :tasks, :estimates, :works
11
11
 
12
12
  def setup
13
13
  @controller = UserController.new
@@ -5,7 +5,7 @@ require 'works_controller'
5
5
  class WorksController; def rescue_action(e) raise e end; end
6
6
 
7
7
  class WorksControllerTest < Test::Unit::TestCase
8
- fixtures :users, :backlogs, :periods, :tasks, :works, :estimates
8
+ fixtures :users, :groups_users, :backlogs, :periods, :tasks, :works, :estimates
9
9
 
10
10
  def setup
11
11
  @controller = WorksController.new
@@ -4,7 +4,7 @@ require 'user_notify'
4
4
 
5
5
  class UserSystemTest < ActionController::IntegrationTest
6
6
  self.use_transactional_fixtures = false
7
- fixtures :users
7
+ fixtures :users, :groups_users
8
8
 
9
9
  def setup
10
10
  ActionMailer::Base.inject_one_error = false
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class EstimateTest < Test::Unit::TestCase
4
- fixtures :parties, :users, :groups, :backlogs, :periods, :tasks, :works, :estimates
4
+ fixtures :parties, :users, :groups, :groups_users, :backlogs, :periods, :tasks, :works, :estimates
5
5
 
6
6
  # Replace this with your real tests.
7
7
  def test_truth
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class GroupTest < Test::Unit::TestCase
4
- fixtures :groups
4
+ fixtures :groups, :groups_users
5
5
 
6
6
  # Replace this with your real tests.
7
7
  def test_truth
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class TaskTest < Test::Unit::TestCase
4
- fixtures :parties, :users, :groups, :backlogs, :periods, :tasks, :estimates, :works
4
+ fixtures :parties, :users, :groups, :groups_users, :backlogs, :periods, :tasks, :estimates, :works
5
5
 
6
6
  # Replace this with your real tests.
7
7
  def test_truth
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class UserTest < Test::Unit::TestCase
4
- fixtures :users
4
+ fixtures :users, :groups_users
5
5
  self.use_transactional_fixtures = false
6
6
 
7
7
  def test_authenticate
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: backlog
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.0
6
+ version: 0.5.0
7
7
  date: 2007-08-06 00:00:00 +02:00
8
8
  summary: Application to aid collecting, processing, organizing, reviewing and doing tasks.
9
9
  require_paths:
@@ -154,6 +154,7 @@ files:
154
154
  - test/fixtures/users.yml
155
155
  - test/fixtures/groups.yml
156
156
  - test/fixtures/backlogs.yml
157
+ - test/fixtures/groups_users.yml
157
158
  - test/fixtures/parties.yml
158
159
  - test/fixtures/estimates.yml
159
160
  - test/fixtures/tasks.yml
@@ -167,6 +168,7 @@ files:
167
168
  - test/unit/estimate_test.rb
168
169
  - test/unit/big_decimal_yaml_fix_test.rb
169
170
  - lib
171
+ - lib/version_from_history.rb
170
172
  - lib/class_table_inheritance.rb
171
173
  - lib/clock.rb
172
174
  - lib/big_decimal_yaml_fix.rb
@@ -223,7 +225,6 @@ files:
223
225
  - config/environments/datek_production.rb
224
226
  - LICENSE_LOCALIZATION
225
227
  - README.txt
226
- - doc
227
228
  - Manifest.txt
228
229
  - vendor
229
230
  - vendor/plugins