backlog 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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