backlog 0.35.5 → 0.36.2

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.
Files changed (150) hide show
  1. data/Gemfile +19 -0
  2. data/Gemfile~ +4 -0
  3. data/History.txt +25 -0
  4. data/Rakefile +3 -3
  5. data/app/controllers/{application.rb → application_controller.rb} +1 -2
  6. data/app/controllers/backlogs_controller.rb +0 -16
  7. data/app/controllers/search_controller.rb +0 -2
  8. data/app/controllers/user_controller.rb +7 -7
  9. data/app/controllers/work_locks_controller.rb +2 -2
  10. data/app/controllers/works_controller.rb +23 -23
  11. data/app/helpers/application_helper.rb +9 -6
  12. data/app/helpers/backlogs_helper.rb +1 -1
  13. data/app/helpers/periods_helper.rb +1 -1
  14. data/app/models/backlog.rb +13 -10
  15. data/app/models/period.rb +0 -5
  16. data/app/models/sidebar.rb +1 -0
  17. data/app/models/task.rb +4 -10
  18. data/app/models/user.rb +5 -6
  19. data/app/models/user_notify.rb +0 -1
  20. data/app/models/work.rb +20 -25
  21. data/app/models/works_report_filter.rb +4 -4
  22. data/app/views/backlogs/_buttons.rhtml +1 -1
  23. data/app/views/backlogs/_form.rhtml +5 -9
  24. data/app/views/layouts/_left_top.rhtml +0 -1
  25. data/app/views/periods/_form.rhtml +1 -1
  26. data/app/views/search/results.rhtml +1 -12
  27. data/app/views/task_notify/{invite_en.rhtml → invite.en.html.erb} +0 -0
  28. data/app/views/task_notify/{invite_no.rhtml → invite.no.html.erb} +0 -0
  29. data/app/views/tasks/_task.rhtml +49 -50
  30. data/app/views/tasks/edit.rhtml +4 -4
  31. data/app/views/tasks/start_work.rjs +1 -1
  32. data/app/views/user/_edit.rhtml +1 -1
  33. data/app/views/user/change_password.rhtml +1 -1
  34. data/app/views/user/edit.rhtml +4 -4
  35. data/app/views/user/signup.rhtml +2 -2
  36. data/app/views/user_notify/{change_password_en.rhtml → change_password.en.html.erb} +0 -0
  37. data/app/views/user_notify/{change_password_no.rhtml → change_password.no.html.erb} +0 -0
  38. data/app/views/user_notify/{forgot_password_en.rhtml → forgot_password.en.html.erb} +0 -0
  39. data/app/views/user_notify/{forgot_password_no.rhtml → forgot_password.no.html.erb} +0 -0
  40. data/app/views/user_notify/{monitoring_en.rhtml → monitoring.en.html.erb} +0 -0
  41. data/app/views/user_notify/{monitoring_no.rhtml → monitoring.no.html.erb} +0 -0
  42. data/app/views/user_notify/{monitoring_invitation_en.rhtml → monitoring_invitation.en.html.erb} +0 -0
  43. data/app/views/user_notify/{monitoring_invitation_no.rhtml → monitoring_invitation.no.html.erb} +0 -0
  44. data/app/views/user_notify/{signup_en.rhtml → signup.en.html.erb} +0 -0
  45. data/app/views/user_notify/{signup_no.rhtml → signup.no.html.erb} +0 -0
  46. data/app/views/work_lock_notify/{lock_en.rhtml → lock.en.html.erb} +0 -0
  47. data/app/views/work_lock_notify/{lock_no.rhtml → lock.no.html.erb} +0 -0
  48. data/app/views/work_lock_notify/{nag_en.rhtml → nag.en.html.erb} +0 -0
  49. data/app/views/work_lock_notify/{nag_no.rhtml → nag.no.html.erb} +0 -0
  50. data/app/views/works/_form.rhtml +6 -6
  51. data/app/views/works/_new_row.rhtml +6 -6
  52. data/app/views/works/_row.rhtml +2 -2
  53. data/app/views/works/daily_work_sheet.rhtml +1 -1
  54. data/app/views/works/list.rhtml +6 -6
  55. data/app/views/works/list_excel.rhtml +8 -4
  56. data/app/views/works/timeliste.rhtml +14 -14
  57. data/app/views/works/update_row.rjs +1 -1
  58. data/app/views/works/weekly_work_sheet.rhtml +5 -5
  59. data/app/views/works/weekly_work_sheet_details.rhtml +5 -5
  60. data/config/boot.rb +108 -27
  61. data/config/database.yml +3 -26
  62. data/config/environment.rb +4 -12
  63. data/config/environments/development.rb +0 -1
  64. data/config/initializers/jdbc.rb +7 -0
  65. data/config/initializers/mongrel.rb +83 -0
  66. data/config/locales/en.yml +189 -0
  67. data/config/locales/no.yml +192 -0
  68. data/config/preinitializer.rb +20 -0
  69. data/cruise_build.sh +10 -0
  70. data/cruise_config.rb +1 -1
  71. data/db/migrate/20100720124707_merge_work_account_into_backlog.rb +74 -0
  72. data/db/schema.rb +93 -127
  73. data/lib/class_table_inheritance.rb +53 -11
  74. data/lib/tasks/jdbc.rake +8 -0
  75. data/lib/user_system.rb +5 -1
  76. data/public/javascripts/controls.js +76 -79
  77. data/public/javascripts/dragdrop.js +166 -167
  78. data/public/javascripts/effects.js +174 -168
  79. data/public/javascripts/prototype.js +470 -334
  80. data/public/stylesheets/mwrt002.css +6 -6
  81. data/script/dbconsole +3 -0
  82. data/test/fixtures/backlogs.yml +2 -2
  83. data/test/fixtures/work_lock_subscriptions.yml +2 -2
  84. data/test/fixtures/works.yml +6 -6
  85. data/test/functional/absences_controller_test.rb +1 -1
  86. data/test/functional/backlogs_controller_test.rb +4 -4
  87. data/test/functional/customers_controller_test.rb +1 -1
  88. data/test/functional/dashboard_controller_test.rb +1 -1
  89. data/test/functional/estimates_controller_test.rb +1 -1
  90. data/test/functional/groups_controller_test.rb +1 -1
  91. data/test/functional/parties_controller_test.rb +1 -1
  92. data/test/functional/periods_controller_test.rb +1 -1
  93. data/test/functional/public_holidays_controller_test.rb +1 -1
  94. data/test/functional/search_controller_test.rb +1 -1
  95. data/test/functional/task_files_controller_test.rb +1 -1
  96. data/test/functional/tasks_controller_test.rb +6 -6
  97. data/test/functional/user_controller_test.rb +3 -2
  98. data/test/functional/welcome_controller_test.rb +1 -1
  99. data/test/functional/work_locks_controller_test.rb +1 -1
  100. data/test/functional/works_controller_test.rb +11 -11
  101. data/test/test_helper.rb +2 -2
  102. data/test/unit/absence_test.rb +1 -1
  103. data/test/unit/configuration_test.rb +1 -1
  104. data/test/unit/customer_test.rb +1 -1
  105. data/test/unit/estimate_test.rb +1 -1
  106. data/test/unit/group_test.rb +1 -1
  107. data/test/unit/party_test.rb +1 -1
  108. data/test/unit/period_test.rb +1 -1
  109. data/test/unit/public_holiday_test.rb +1 -1
  110. data/test/unit/task_file_test.rb +1 -1
  111. data/test/unit/task_test.rb +1 -1
  112. data/test/unit/user_test.rb +1 -1
  113. data/test/unit/work_lock_subscription_test.rb +1 -1
  114. data/test/unit/work_lock_test.rb +1 -1
  115. data/test/unit/work_test.rb +8 -8
  116. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +3 -3
  117. data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +2 -2
  118. data/vendor/plugins/auto_complete/README +23 -0
  119. data/vendor/plugins/auto_complete/Rakefile +22 -0
  120. data/vendor/plugins/auto_complete/init.rb +2 -0
  121. data/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
  122. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +143 -0
  123. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
  124. data/vendor/plugins/backlog_jira/init.rb +4 -0
  125. data/vendor/plugins/backlog_jira/{tasks → lib/tasks}/backlog_jira_tasks.rake +0 -0
  126. data/vendor/plugins/has_history/{tasks → lib/tasks}/has_history_tasks.rake +0 -0
  127. metadata +745 -817
  128. data/#SearchRequest.xml# +0 -3443
  129. data/app/controllers/application.rb~ +0 -207
  130. data/app/controllers/work_accounts_controller.rb +0 -58
  131. data/app/helpers/work_accounts_helper.rb +0 -2
  132. data/app/models/work_account.rb +0 -18
  133. data/app/models/work_lock_subscription.rb +0 -3
  134. data/app/views/work_accounts/_form.rhtml +0 -16
  135. data/app/views/work_accounts/_name_list.rhtml +0 -5
  136. data/app/views/work_accounts/_title.rhtml +0 -5
  137. data/app/views/work_accounts/edit.rhtml +0 -12
  138. data/app/views/work_accounts/list.rhtml +0 -31
  139. data/app/views/work_accounts/new.rhtml +0 -10
  140. data/app/views/work_accounts/show.rhtml +0 -50
  141. data/config/environments/localization_environment.rb +0 -10
  142. data/jira.log +0 -98246
  143. data/lang/en.yaml +0 -147
  144. data/lang/localizations.yaml +0 -2
  145. data/lang/no.yaml +0 -146
  146. data/lib/localization.rb +0 -88
  147. data/test/fixtures/work_accounts.yml +0 -7
  148. data/test/functional/work_accounts_controller_test.rb +0 -94
  149. data/test/unit/localization_test.rb +0 -47
  150. data/test/unit/work_account_test.rb +0 -10
@@ -0,0 +1,192 @@
1
+ "no":
2
+ number:
3
+ # Used in number_with_delimiter()
4
+ # These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
5
+ format:
6
+ # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
7
+ separator: ","
8
+ # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three)
9
+ delimiter: "."
10
+ # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
11
+ precision: 3
12
+
13
+ # Used in number_to_currency()
14
+ currency:
15
+ format:
16
+ # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
17
+ format: "%n %u"
18
+ unit: "NOK"
19
+ # These three are to override number.format and are optional
20
+ separator: ","
21
+ delimiter: "."
22
+ precision: 2
23
+
24
+ # Used in number_to_percentage()
25
+ percentage:
26
+ format:
27
+ # These three are to override number.format and are optional
28
+ # separator:
29
+ delimiter: ""
30
+ # precision:
31
+
32
+ # Used in number_to_precision()
33
+ precision:
34
+ format:
35
+ # These three are to override number.format and are optional
36
+ # separator:
37
+ delimiter: ""
38
+ # precision:
39
+
40
+ # date:
41
+ # formats:
42
+ # default: "%Y-%m-%d"
43
+ # short: "%b %d"
44
+ # long: "%B %d, %Y"
45
+
46
+ abort: Avbryt
47
+ aborted: Avbrutt
48
+ absent: Fravær
49
+ account: Konto
50
+ active: Aktiv
51
+ administration: Administrasjon
52
+ all: All
53
+ all_accounts: alle konti
54
+ assigned_to: Tilordnet
55
+ back: Tilbake
56
+ backlog: Oppgaveliste
57
+ backlog_description: Oppgaveliste med sortering og statussporing
58
+ backlogs: Oppgavelister
59
+ burn_down_chart: Fremdriftsgraf
60
+ cannot_find_user: Kan ikke finne bruker %s
61
+ change_password: Bytt Passord
62
+ complete: Fullfør
63
+ completed: Fullført
64
+ completed_at: Stop tid
65
+ completed_tasks: Fullførte Oppgaver
66
+ confirmation: Er du sikker?
67
+ created_by: Opprettet av
68
+ customer: Kunde
69
+ daily_work_sheet: Timeføringsskjema
70
+ dashboard: Dashboard
71
+ delete: Slett
72
+ description: Beskrivelse
73
+ details: Detaljer
74
+ done: Utført
75
+ down: Ned
76
+ edit: Rediger
77
+ edit_task: Rediger oppgave
78
+ editing: Redigerer
79
+ empty_work_record: Tom arbeidslinje
80
+ enable_customer: Tillat kunder
81
+ enable_invoicing: Tillat fakturering
82
+ enable_periods: Tillat sprinter
83
+ enable_subtasks: Tillat underoppgaver
84
+ enable_users: Tillat brukere
85
+ end_on: Avslutt på
86
+ end_work: Stopp
87
+ estimate: Estimat
88
+ experimental: Eksperimentell!
89
+ files: Files
90
+ friday: Fredag
91
+ grab_task: Grip oppgave
92
+ grabbed_by_you: Tatt av deg
93
+ group: Gruppe
94
+ groups: Grupper
95
+ holiday: Ferie
96
+ holidays_used: Brukte feriedager
97
+ home: Hjem
98
+ hours: Timer
99
+ hours_last_month: Timer forrige måned
100
+ hours_last_week: Timer forrige uke
101
+ hours_this_month: Timer denne måned
102
+ hours_this_week: Timer denne uke
103
+ hours_today: Timer i dag
104
+ invite: Invitèr
105
+ invoice: Fakturerbart
106
+ invoice_code: Faktureringskode
107
+ invoice_short: Fakt
108
+ left: Venstre
109
+ listing_works: Registrert arbeid
110
+ lock: Lås
111
+ log_in: Log inn
112
+ log_out: Log ut
113
+ main_backlog: Hovedliste
114
+ members: Medlemmer
115
+ monday: Mandag
116
+ move_to_bottom: Flytt oppgaven til slutten av listen
117
+ move_to_next_period: Flytt oppgaven til neste periode
118
+ move_to_top: Flytt oppgaven til toppen av listen
119
+ moved: Flyttet
120
+ name: Navn
121
+ new_backlog: Start ny oppgaveliste
122
+ new_customer: Legg til ny kunde
123
+ new_group: Start ny gruppe
124
+ new_period: Start ny periode
125
+ new_task: Legg til ny oppgave
126
+ new_work: Registrer arbeid
127
+ new_work_account: Legg til timeføringskonto
128
+ next: Neste
129
+ no: Nei
130
+ no_backlog: Uten oppgaveliste
131
+ no_pending_tasks: Det er ingen ventende oppgaver i denne perioden.
132
+ no_pending_tasks_in_backlog: Det er ingen ventende oppgaver i denne oppgavelisten.
133
+ not_grabbed: Ikke tatt av noen
134
+ notes: Notater
135
+ ownership: Eierskap
136
+ paging: Del opp i flere sider
137
+ password: Passord
138
+ period: Periode
139
+ periods: Perioder
140
+ please_login: Vennligst logg på
141
+ position: Posisjon
142
+ postponed: Utsatt
143
+ previous: Forrige
144
+ previous_abr: Forrige
145
+ projection: Projeksjon
146
+ public_holiday: Offentlig fridag
147
+ release_task: Slipp oppgave
148
+ reopen: Gjenåpne
149
+ resolution: Avslutningsmåte
150
+ resolution_abr: Avsl.
151
+ right: Høyre
152
+ saturday: Lørdag
153
+ save: Lagre
154
+ search: Søk
155
+ search_results_for: "Søkeresultater for '{{query}}'"
156
+ select: Velg
157
+ shortcuts: Knapper
158
+ sick_days_used: Sykedager
159
+ signup: Innmelding
160
+ specify: Spesifisèr
161
+ spreadsheet: Regneark
162
+ start: Start
163
+ start_on: Start på
164
+ start_work: Start arbeid
165
+ started_at: Start tid
166
+ stop: Stopp
167
+ work_lock_subscriptions: Abonenter på timelister
168
+ sunday: Søndag
169
+ task: Oppgave
170
+ tasks: Oppgaver
171
+ thursday: Torsdag
172
+ todo: Igjen
173
+ total: Totalt
174
+ totals: Totalt
175
+ track_todo: Estimater
176
+ track_done: Spor utført arbeid
177
+ track_times: Spor start- og stopptider
178
+ tuesday: Tirsdag
179
+ unlock: Lås opp
180
+ unplanned_tasks: Ikke planlagte oppgaver
181
+ up: Opp
182
+ updated_by: Oppdatert av
183
+ user: Bruker
184
+ view_fullscreen: Vis fullskjerm
185
+ wednesday: Onsdag
186
+ week: Uke
187
+ weekly_work_sheet: Timeoversikt for uke
188
+ welcome_link: Få ting gjort.
189
+ work: Arbeid
190
+ work_account: Timeføringskonto
191
+ work_accounts: Timeføringskonti
192
+ yes: Ja
@@ -0,0 +1,20 @@
1
+ begin
2
+ require "rubygems"
3
+ require "bundler"
4
+ rescue LoadError
5
+ raise "Could not load the bundler gem. Install it with `gem install bundler`."
6
+ end
7
+
8
+ if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
9
+ raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
10
+ "Run `gem install bundler` to upgrade."
11
+ end
12
+
13
+ begin
14
+ # Set up load paths for all bundled gems
15
+ ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
16
+ Bundler.setup
17
+ rescue Bundler::GemNotFound
18
+ raise RuntimeError, "Bundler couldn't find some gems." +
19
+ "Did you run `bundle install`?"
20
+ end
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ whoami
4
+ which jruby
5
+ jruby --version
6
+
7
+ export RAILS_ENV=test
8
+
9
+ jruby -S rake db:migrate
10
+ jruby -S rake
@@ -1,5 +1,5 @@
1
1
  Project.configure do |project|
2
2
  project.email_notifier.emails = ['arndt@datek.no', 'espen@datek.no', 'uwe@datek.no']
3
3
  project.scheduler.polling_interval = 5.minutes
4
- project.build_command = 'export RAILS_ENV=test ; rake db:migrate ; rake'
4
+ project.build_command = './cruise_build.sh'
5
5
  end
@@ -0,0 +1,74 @@
1
+ class MergeWorkAccountIntoBacklog < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :backlogs, :track_times, :boolean
4
+ add_column :works, :backlog_id, :integer
5
+ add_column :work_lock_subscriptions, :backlog_id, :integer
6
+
7
+ load_classes
8
+
9
+ work_account_to_backlog_map = {}
10
+ backlog_to_work_acountmap = {}
11
+
12
+ work_accounts = WorkAccount.all(:include => :backlogs)
13
+ work_accounts.each{|wa| raise "Data errror" unless wa.backlogs.size == 1}
14
+
15
+ backlogs = Backlog.all(:include => :work_account)
16
+ faulty_backlogs = backlogs.select{|bl| bl.work_account.nil?}
17
+ raise "Work account missing for: #{faulty_backlogs.map{|bl| bl.name}.join(', ')}" if faulty_backlogs.size > 0
18
+ backlogs.each{|bl| work_account_to_backlog_map[bl.work_account_id] = bl ; backlog_to_work_acountmap[bl.id] = bl.work_account}
19
+
20
+ backlogs.each{|bl| bl.update_attributes! :track_times => backlog_to_work_acountmap[bl.id].track_times || false}
21
+ change_column_null :backlogs, :track_times, false
22
+
23
+ Work.all.each{|w| w.update_attributes! :backlog_id => work_account_to_backlog_map[w.work_account.id].id || raise("Missing backlog for work account #{w.id} #{w.work_account.name} #{w.work_account.id}")}
24
+ change_column_null :works, :backlog_id, false
25
+
26
+ work_accounts.each{|wa| execute "UPDATE work_lock_subscriptions SET backlog_id = #{work_account_to_backlog_map[wa.id].id} WHERE work_account_id = #{wa.id}"}
27
+ change_column_null :work_lock_subscriptions, :backlog_id, false
28
+
29
+ remove_column :backlogs, :work_account_id
30
+ remove_column :tasks, :work_account_id
31
+ remove_column :works, :work_account_id
32
+ remove_column :work_lock_subscriptions, :work_account_id
33
+ end
34
+
35
+ def self.down
36
+ raise "Not implemented, yet."
37
+ end
38
+
39
+ def self.load_classes
40
+ class_eval <<-EOF
41
+ class WorkAccount < ActiveRecord::Base
42
+ has_many :backlogs
43
+ end
44
+
45
+ class Backlog < ActiveRecord::Base
46
+ belongs_to :work_account
47
+ end
48
+
49
+ class Work < ActiveRecord::Base
50
+ belongs_to :task
51
+ belongs_to :work_account
52
+
53
+ alias_method :old_work_account, :work_account
54
+ def work_account
55
+ self.old_work_account || (task && task.work_account)
56
+ end
57
+ end
58
+
59
+ # class WorkLockSubscription < ActiveRecord::Base ; end
60
+
61
+ class Task < ActiveRecord::Base
62
+ belongs_to :backlog
63
+ belongs_to :work_account
64
+ acts_as_tree :order => 'position'
65
+
66
+ alias_method :old_work_account, :work_account
67
+ def work_account
68
+ self.old_work_account || (parent ? parent.work_account : backlog.work_account)
69
+ end
70
+ end
71
+ EOF
72
+ end
73
+
74
+ end
@@ -1,196 +1,162 @@
1
- # This file is autogenerated. Instead of editing this file, please use the
2
- # migrations feature of ActiveRecord to incrementally modify your database, and
1
+ # This file is auto-generated from the current state of the database. Instead of editing this file,
2
+ # please use the migrations feature of Active Record to incrementally modify your database, and
3
3
  # then regenerate this schema definition.
4
+ #
5
+ # Note that this schema.rb definition is the authoritative source for your database schema. If you need
6
+ # to create the application database on another system, you should be using db:schema:load, not running
7
+ # all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
8
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
9
+ #
10
+ # It's strongly recommended to check this file into your version control system.
4
11
 
5
- ActiveRecord::Schema.define(:version => 31) do
12
+ ActiveRecord::Schema.define(:version => 20100720124707) do
6
13
 
7
14
  create_table "absences", :force => true do |t|
8
- t.column "user_id", :integer, :null => false
9
- t.column "on", :date, :null => false
10
- t.column "reason", :string, :null => false
15
+ t.integer "user_id", :null => false
16
+ t.date "on", :null => false
17
+ t.string "reason", :null => false
11
18
  end
12
19
 
13
20
  create_table "backlogs", :force => true do |t|
14
- t.column "name", :string, :limit => 64, :null => false
15
- t.column "track_todo", :boolean
16
- t.column "enable_subtasks", :boolean, :default => false, :null => false
17
- t.column "enable_customer", :boolean
18
- t.column "enable_users", :boolean
19
- t.column "work_account_id", :integer
20
- t.column "customer_id", :integer
21
- t.column "enable_periods", :boolean
21
+ t.string "name", :limit => 64, :null => false
22
+ t.boolean "track_todo"
23
+ t.boolean "enable_subtasks", :default => false, :null => false
24
+ t.boolean "enable_customer"
25
+ t.boolean "enable_users"
26
+ t.integer "customer_id"
27
+ t.boolean "enable_periods"
28
+ t.boolean "track_times", :null => false
22
29
  end
23
30
 
24
31
  create_table "configurations", :force => true do |t|
25
- t.column "time_keeper", :boolean
32
+ t.boolean "time_keeper"
26
33
  end
27
34
 
28
35
  create_table "customers", :force => true do |t|
29
- t.column "name", :string, :limit => 64, :null => false
36
+ t.string "name", :limit => 64, :null => false
30
37
  end
31
38
 
32
39
  create_table "estimates", :force => true do |t|
33
- t.column "task_id", :integer, :null => false
34
- t.column "todo", :decimal, :precision => 6, :scale => 2, :default => 1.0, :null => false
35
- t.column "created_at", :datetime, :null => false
36
- t.column "user_id", :integer
40
+ t.integer "task_id", :null => false
41
+ t.decimal "todo", :precision => 6, :scale => 2, :default => 1.0, :null => false
42
+ t.datetime "created_at", :null => false
43
+ t.integer "user_id"
37
44
  end
38
45
 
39
46
  add_index "estimates", ["task_id", "created_at"], :name => "index_estimates_on_task_id_and_created_at"
40
47
 
41
48
  create_table "groups", :primary_key => "party_id", :force => true do |t|
42
- t.column "name", :string, :null => false
49
+ t.string "name", :null => false
43
50
  end
44
51
 
45
52
  create_table "groups_users", :id => false, :force => true do |t|
46
- t.column "group_id", :integer, :null => false
47
- t.column "user_id", :integer, :null => false
53
+ t.integer "group_id", :null => false
54
+ t.integer "user_id", :null => false
48
55
  end
49
56
 
50
57
  add_index "groups_users", ["group_id", "user_id"], :name => "index_groups_users_on_group_id_and_user_id", :unique => true
51
58
 
52
59
  create_table "parties", :force => true do |t|
53
- t.column "type", :string
60
+ t.string "type"
54
61
  end
55
62
 
56
63
  create_table "periods", :force => true do |t|
57
- t.column "position", :integer, :null => false
58
- t.column "start_on", :date, :null => false
59
- t.column "end_on", :date, :null => false
60
- t.column "party_id", :integer
64
+ t.integer "position", :null => false
65
+ t.date "start_on", :null => false
66
+ t.date "end_on", :null => false
67
+ t.integer "party_id"
61
68
  end
62
69
 
63
70
  create_table "public_holidays", :force => true do |t|
64
- t.column "on", :date, :null => false
71
+ t.date "on", :null => false
72
+ end
73
+
74
+ create_table "schema_info", :id => false, :force => true do |t|
75
+ t.integer "version"
65
76
  end
66
77
 
67
78
  create_table "task_files", :force => true do |t|
68
- t.column "task_id", :integer, :null => false
69
- t.column "name", :string, :limit => 64, :null => false
70
- t.column "content_type", :string, :null => false
71
- t.column "content_data", :binary, :null => false
79
+ t.integer "task_id", :null => false
80
+ t.string "name", :limit => 64, :null => false
81
+ t.string "content_type", :null => false
82
+ t.binary "content_data", :null => false
72
83
  end
73
84
 
74
85
  create_table "tasks", :force => true do |t|
75
- t.column "position", :integer
76
- t.column "description", :string, :limit => 80, :null => false
77
- t.column "finished_at", :datetime
78
- t.column "initial_estimate", :decimal, :precision => 6, :scale => 2, :default => 1.0, :null => false
79
- t.column "period_id", :integer
80
- t.column "created_at", :datetime
81
- t.column "parent_id", :integer
82
- t.column "resolution", :string, :limit => 16
83
- t.column "previous_task_id", :integer
84
- t.column "backlog_id", :integer
85
- t.column "notes", :text
86
- t.column "work_account_id", :integer
87
- t.column "customer_id", :integer
88
- t.column "created_by", :integer
89
- t.column "updated_by", :integer
90
- t.column "updated_at", :datetime
86
+ t.integer "position"
87
+ t.string "description", :limit => 80, :null => false
88
+ t.datetime "finished_at"
89
+ t.integer "initial_estimate", :default => 1, :null => false
90
+ t.integer "period_id"
91
+ t.datetime "created_at"
92
+ t.integer "parent_id"
93
+ t.string "resolution", :limit => 16
94
+ t.integer "previous_task_id"
95
+ t.integer "backlog_id"
96
+ t.text "notes"
97
+ t.integer "customer_id"
98
+ t.integer "created_by"
99
+ t.integer "updated_by"
100
+ t.datetime "updated_at"
91
101
  end
92
102
 
93
103
  add_index "tasks", ["parent_id"], :name => "index_tasks_on_parent_id"
94
104
 
95
105
  create_table "tasks_users", :id => false, :force => true do |t|
96
- t.column "task_id", :integer, :null => false
97
- t.column "user_id", :integer, :null => false
106
+ t.integer "task_id", :null => false
107
+ t.integer "user_id", :null => false
98
108
  end
99
109
 
100
110
  create_table "user_work_lock_subscriptions", :id => false, :force => true do |t|
101
- t.column "subscriber_user_id", :integer, :null => false
102
- t.column "user_id", :integer, :null => false
111
+ t.integer "subscriber_user_id", :null => false
112
+ t.integer "user_id", :null => false
103
113
  end
104
114
 
105
115
  create_table "users", :primary_key => "party_id", :force => true do |t|
106
- t.column "login", :string, :limit => 80, :null => false
107
- t.column "salted_password", :string, :limit => 40, :null => false
108
- t.column "email", :string, :limit => 60, :null => false
109
- t.column "first_name", :string, :limit => 40
110
- t.column "last_name", :string, :limit => 40
111
- t.column "salt", :string, :limit => 40, :null => false
112
- t.column "verified", :boolean, :default => false
113
- t.column "role", :string, :limit => 40
114
- t.column "security_token", :string, :limit => 40
115
- t.column "token_expiry", :datetime
116
- t.column "deleted", :boolean, :default => false
116
+ t.string "login", :limit => 80, :null => false
117
+ t.string "salted_password", :limit => 40, :null => false
118
+ t.string "email", :limit => 60, :null => false
119
+ t.string "first_name", :limit => 40
120
+ t.string "last_name", :limit => 40
121
+ t.string "salt", :limit => 40, :null => false
122
+ t.boolean "verified", :default => false
123
+ t.string "role", :limit => 40
124
+ t.string "security_token", :limit => 40
125
+ t.datetime "token_expiry"
126
+ t.boolean "deleted", :default => false
117
127
  end
118
128
 
119
129
  create_table "work_accounts", :force => true do |t|
120
- t.column "name", :string, :limit => 64, :null => false
121
- t.column "track_times", :boolean
122
- t.column "invoice_code", :string
130
+ t.string "name", :limit => 64, :null => false
131
+ t.boolean "track_times"
132
+ t.string "invoice_code"
123
133
  end
124
134
 
125
135
  create_table "work_lock_subscriptions", :id => false, :force => true do |t|
126
- t.column "subscriber_user_id", :integer, :null => false
127
- t.column "work_account_id", :integer, :null => false
136
+ t.integer "subscriber_user_id", :null => false
137
+ t.integer "backlog_id", :null => false
128
138
  end
129
139
 
130
140
  create_table "work_locks", :force => true do |t|
131
- t.column "user_id", :integer, :null => false
132
- t.column "start_on", :date, :null => false
133
- t.column "end_on", :date, :null => false
141
+ t.integer "user_id", :null => false
142
+ t.date "start_on", :null => false
143
+ t.date "end_on", :null => false
134
144
  end
135
145
 
136
146
  create_table "works", :force => true do |t|
137
- t.column "task_id", :integer
138
- t.column "hours", :decimal, :precision => 6, :scale => 3, :default => 0.0, :null => false
139
- t.column "completed_at", :datetime
140
- t.column "user_id", :integer
141
- t.column "invoice", :boolean
142
- t.column "work_account_id", :integer
143
- t.column "customer_id", :integer
144
- t.column "description", :string
145
- t.column "started_on", :date, :null => false
146
- t.column "start_time", :time
147
- t.column "notes", :text
147
+ t.integer "task_id"
148
+ t.decimal "hours", :precision => 6, :scale => 3, :default => 0.0, :null => false
149
+ t.datetime "completed_at"
150
+ t.integer "user_id"
151
+ t.boolean "invoice"
152
+ t.integer "customer_id"
153
+ t.string "description"
154
+ t.date "started_on", :null => false
155
+ t.time "start_time"
156
+ t.text "notes"
157
+ t.integer "backlog_id", :null => false
148
158
  end
149
159
 
150
160
  add_index "works", ["task_id", "completed_at"], :name => "index_works_on_task_id_and_completed_at"
151
161
 
152
- add_foreign_key "absences", ["user_id"], "users", ["party_id"], :name => "absences_user_id_fkey"
153
-
154
- add_foreign_key "backlogs", ["work_account_id"], "work_accounts", ["id"], :name => "backlogs_work_account_id_fkey"
155
- add_foreign_key "backlogs", ["customer_id"], "customers", ["id"], :name => "backlogs_customer_id_fkey"
156
-
157
- add_foreign_key "estimates", ["task_id"], "tasks", ["id"], :name => "estimates_task_id_fkey"
158
- add_foreign_key "estimates", ["user_id"], "users", ["party_id"], :name => "estimates_user_id_fkey"
159
-
160
- add_foreign_key "groups", ["party_id"], "parties", ["id"], :name => "groups_party_id_fkey"
161
-
162
- add_foreign_key "groups_users", ["group_id"], "groups", ["party_id"], :name => "groups_users_group_id_fkey"
163
- add_foreign_key "groups_users", ["user_id"], "users", ["party_id"], :name => "groups_users_user_id_fkey"
164
-
165
- add_foreign_key "periods", ["party_id"], "parties", ["id"], :name => "periods_party_id_fkey"
166
-
167
- add_foreign_key "task_files", ["task_id"], "tasks", ["id"], :name => "task_files_task_id_fkey"
168
-
169
- add_foreign_key "tasks", ["period_id"], "periods", ["id"], :name => "tasks_period_id_fkey"
170
- add_foreign_key "tasks", ["parent_id"], "tasks", ["id"], :name => "tasks_parent_id_fkey"
171
- add_foreign_key "tasks", ["previous_task_id"], "tasks", ["id"], :name => "tasks_previous_task_id_fkey"
172
- add_foreign_key "tasks", ["backlog_id"], "backlogs", ["id"], :name => "tasks_backlog_id_fkey"
173
- add_foreign_key "tasks", ["work_account_id"], "work_accounts", ["id"], :name => "tasks_work_account_id_fkey"
174
- add_foreign_key "tasks", ["customer_id"], "customers", ["id"], :name => "tasks_customer_id_fkey"
175
- add_foreign_key "tasks", ["created_by"], "users", ["party_id"], :name => "tasks_created_by_fkey"
176
- add_foreign_key "tasks", ["updated_by"], "users", ["party_id"], :name => "tasks_updated_by_fkey"
177
-
178
- add_foreign_key "tasks_users", ["task_id"], "tasks", ["id"], :name => "tasks_users_task_id_fkey"
179
- add_foreign_key "tasks_users", ["user_id"], "users", ["party_id"], :name => "tasks_users_user_id_fkey"
180
-
181
- add_foreign_key "user_work_lock_subscriptions", ["subscriber_user_id"], "users", ["party_id"], :name => "user_work_lock_subscriptions_subscriber_user_id_fkey"
182
- add_foreign_key "user_work_lock_subscriptions", ["user_id"], "users", ["party_id"], :name => "user_work_lock_subscriptions_user_id_fkey"
183
-
184
- add_foreign_key "users", ["party_id"], "parties", ["id"], :name => "users_party_id_fkey"
185
-
186
- add_foreign_key "work_lock_subscriptions", ["subscriber_user_id"], "users", ["party_id"], :name => "work_lock_subscriptions_subscriber_user_id_fkey"
187
- add_foreign_key "work_lock_subscriptions", ["work_account_id"], "work_accounts", ["id"], :name => "work_lock_subscriptions_work_account_id_fkey"
188
-
189
- add_foreign_key "work_locks", ["user_id"], "users", ["party_id"], :name => "work_locks_user_id_fkey"
190
-
191
- add_foreign_key "works", ["task_id"], "tasks", ["id"], :name => "works_task_id_fkey"
192
- add_foreign_key "works", ["user_id"], "users", ["party_id"], :name => "works_user_id_fkey"
193
- add_foreign_key "works", ["customer_id"], "customers", ["id"], :name => "works_customer_id_fkey"
194
- add_foreign_key "works", ["work_account_id"], "work_accounts", ["id"], :name => "works_work_account_id_fkey"
195
-
196
162
  end