Merge pull request #343 from opf/feature/squashed-migrations

Removes migrations in favor of their aggregation.
pull/350/merge
sschu 11 years ago
commit 1e4f9fcbdf
  1. 25
      app/models/user.rb
  2. 878
      db/migrate/000_aggregated_migrations.rb
  3. 336
      db/migrate/001_setup.rb
  4. 24
      db/migrate/002_issue_move.rb
  5. 24
      db/migrate/003_issue_add_note.rb
  6. 26
      db/migrate/004_export_pdf.rb
  7. 23
      db/migrate/005_issue_start_date.rb
  8. 28
      db/migrate/006_calendar_and_activity.rb
  9. 68
      db/migrate/007_create_journals.rb
  10. 24
      db/migrate/008_create_user_preferences.rb
  11. 21
      db/migrate/009_add_hide_mail_pref.rb
  12. 28
      db/migrate/010_create_comments.rb
  13. 21
      db/migrate/011_add_news_comments_count.rb
  14. 26
      db/migrate/012_add_comments_permissions.rb
  15. 27
      db/migrate/013_create_queries.rb
  16. 24
      db/migrate/014_add_queries_permissions.rb
  17. 24
      db/migrate/015_create_repositories.rb
  18. 34
      db/migrate/016_add_repositories_permissions.rb
  19. 24
      db/migrate/017_create_settings.rb
  20. 30
      db/migrate/018_set_doc_and_files_notifications.rb
  21. 22
      db/migrate/019_add_issue_status_position.rb
  22. 22
      db/migrate/020_add_role_position.rb
  23. 78
      db/migrate/021_add_tracker_position.rb
  24. 25
      db/migrate/022_serialize_possibles_values.rb
  25. 21
      db/migrate/023_add_tracker_is_in_roadmap.rb
  26. 24
      db/migrate/024_add_roadmap_permission.rb
  27. 24
      db/migrate/025_add_search_permission.rb
  28. 23
      db/migrate/026_add_repository_login_and_password.rb
  29. 26
      db/migrate/027_create_wikis.rb
  30. 26
      db/migrate/028_create_wiki_pages.rb
  31. 42
      db/migrate/029_create_wiki_contents.rb
  32. 24
      db/migrate/030_add_projects_feeds_permissions.rb
  33. 21
      db/migrate/031_add_repository_root_url.rb
  34. 36
      db/migrate/032_create_time_entries.rb
  35. 24
      db/migrate/033_add_timelog_permissions.rb
  36. 28
      db/migrate/034_create_changesets.rb
  37. 28
      db/migrate/035_create_changes.rb
  38. 22
      db/migrate/036_add_changeset_commit_date.rb
  39. 21
      db/migrate/037_add_project_identifier.rb
  40. 21
      db/migrate/038_add_custom_field_is_filter.rb
  41. 25
      db/migrate/039_create_watchers.rb
  42. 25
      db/migrate/040_create_changesets_issues.rb
  43. 25
      db/migrate/041_rename_comment_to_comments.rb
  44. 26
      db/migrate/042_create_issue_relations.rb
  45. 26
      db/migrate/043_add_relations_permissions.rb
  46. 21
      db/migrate/044_set_language_length_to_five.rb
  47. 30
      db/migrate/045_create_boards.rb
  48. 33
      db/migrate/046_create_messages.rb
  49. 28
      db/migrate/047_add_boards_permissions.rb
  50. 21
      db/migrate/048_allow_null_version_effective_date.rb
  51. 24
      db/migrate/049_add_wiki_destroy_page_permission.rb
  52. 26
      db/migrate/050_add_wiki_attachments_permissions.rb
  53. 21
      db/migrate/051_add_project_status.rb
  54. 21
      db/migrate/052_add_changes_revision.rb
  55. 21
      db/migrate/053_add_changes_branch.rb
  56. 21
      db/migrate/054_add_changesets_scmid.rb
  57. 23
      db/migrate/055_add_repositories_type.rb
  58. 24
      db/migrate/056_add_repositories_changes_permission.rb
  59. 21
      db/migrate/057_add_versions_wiki_page_title.rb
  60. 21
      db/migrate/058_add_issue_categories_assigned_to_id.rb
  61. 21
      db/migrate/059_add_roles_assignable.rb
  62. 21
      db/migrate/060_change_changesets_committer_limit.rb
  63. 21
      db/migrate/061_add_roles_builtin.rb
  64. 29
      db/migrate/062_insert_builtin_roles.rb
  65. 21
      db/migrate/063_add_roles_permissions.rb
  66. 22
      db/migrate/064_drop_permissions.rb
  67. 23
      db/migrate/065_add_settings_updated_on.rb
  68. 21
      db/migrate/066_add_custom_value_customized_index.rb
  69. 27
      db/migrate/067_create_wiki_redirects.rb
  70. 30
      db/migrate/068_create_enabled_modules.rb
  71. 21
      db/migrate/069_add_issues_estimated_hours.rb
  72. 21
      db/migrate/070_change_attachments_content_type_limit.rb
  73. 21
      db/migrate/071_add_queries_column_names.rb
  74. 27
      db/migrate/072_add_enumerations_position.rb
  75. 21
      db/migrate/073_add_enumerations_is_default.rb
  76. 21
      db/migrate/074_add_auth_sources_tls.rb
  77. 21
      db/migrate/075_add_members_mail_notification.rb
  78. 26
      db/migrate/076_allow_null_position.rb
  79. 21
      db/migrate/077_remove_issue_statuses_html_color.rb
  80. 27
      db/migrate/078_add_custom_fields_position.rb
  81. 21
      db/migrate/079_add_user_preferences_time_zone.rb
  82. 22
      db/migrate/080_add_users_type.rb
  83. 87
      db/migrate/081_create_projects_trackers.rb
  84. 21
      db/migrate/082_add_messages_locked.rb
  85. 21
      db/migrate/083_add_messages_sticky.rb
  86. 21
      db/migrate/084_change_auth_sources_account_limit.rb
  87. 21
      db/migrate/085_add_role_tracker_old_status_index_to_workflows.rb
  88. 21
      db/migrate/086_add_custom_fields_searchable.rb
  89. 20
      db/migrate/087_change_projects_description_to_text.rb
  90. 21
      db/migrate/088_add_custom_fields_default_value.rb
  91. 21
      db/migrate/089_add_attachments_description.rb
  92. 21
      db/migrate/090_change_versions_name_limit.rb
  93. 21
      db/migrate/091_change_changesets_revision_to_string.rb
  94. 21
      db/migrate/092_change_changes_from_revision_to_string.rb
  95. 21
      db/migrate/093_add_wiki_pages_protected.rb
  96. 21
      db/migrate/094_change_projects_homepage_limit.rb
  97. 21
      db/migrate/095_add_wiki_pages_parent_id.rb
  98. 26
      db/migrate/096_add_commit_access_permission.rb
  99. 25
      db/migrate/097_add_view_wiki_edits_permission.rb
  100. 27
      db/migrate/098_set_topic_authors_as_watchers.rb
  101. Some files were not shown because too many files have changed in this diff Show More

@ -44,13 +44,20 @@ class User < Principal
:username => User.user_format_structure_to_format(:username)
}
USER_MAIL_OPTION_ALL = ['all', :label_user_mail_option_all]
USER_MAIL_OPTION_SELECTED = ['selected', :label_user_mail_option_selected]
USER_MAIL_OPTION_ONLY_MY_EVENTS = ['only_my_events', :label_user_mail_option_only_my_events]
USER_MAIL_OPTION_ONLY_ASSIGNED = ['only_assigned', :label_user_mail_option_only_assigned]
USER_MAIL_OPTION_ONLY_OWNER = ['only_owner', :label_user_mail_option_only_owner]
USER_MAIL_OPTION_NON = ['none', :label_user_mail_option_none]
MAIL_NOTIFICATION_OPTIONS = [
['all', :label_user_mail_option_all],
['selected', :label_user_mail_option_selected],
['only_my_events', :label_user_mail_option_only_my_events],
['only_assigned', :label_user_mail_option_only_assigned],
['only_owner', :label_user_mail_option_only_owner],
['none', :label_user_mail_option_none]
USER_MAIL_OPTION_ALL,
USER_MAIL_OPTION_SELECTED,
USER_MAIL_OPTION_ONLY_MY_EVENTS,
USER_MAIL_OPTION_ONLY_ASSIGNED,
USER_MAIL_OPTION_ONLY_OWNER,
USER_MAIL_OPTION_NON
]
USER_DELETION_JOURNAL_BUCKET_SIZE = 1000;
@ -87,7 +94,7 @@ class User < Principal
# Active non-anonymous users scope
scope :active, :conditions => "#{User.table_name}.status = #{STATUSES[:active]}"
scope :active_or_registered, :conditions =>
"#{User.table_name}.status = #{STATUSES[:active]} or " +
"#{User.table_name}.status = #{STATUSES[:active]} or " +
"#{User.table_name}.status = #{STATUSES[:registered]}"
scope :not_builtin,
:conditions => "#{User.table_name}.status <> #{STATUSES[:builtin]}"
@ -100,7 +107,7 @@ class User < Principal
def self.create_blocked_scope(blocked)
block_duration = Setting.brute_force_block_minutes.to_i.minutes
blocked_if_login_since = Time.now - block_duration
negation = blocked ? '' : 'NOT'
negation = blocked ? '' : 'NOT'
where("#{negation} (failed_login_count >= ? AND last_failed_login_on > ?)",
Setting.brute_force_block_after_failed_logins.to_i,
blocked_if_login_since)
@ -849,7 +856,7 @@ class User < Principal
#
def last_failed_login_within_block_time?
block_duration = Setting.brute_force_block_minutes.to_i.minutes
self.last_failed_login_on and
self.last_failed_login_on and
Time.now - self.last_failed_login_on < block_duration
end

@ -0,0 +1,878 @@
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
# This migration aggregates the migrations detailed in the @@migrations
# heredoc
class AggregatedMigrations < ActiveRecord::Migration
class IncompleteMigrationsError < ::StandardError
end
@@migrations = <<-MIGRATIONS
001_setup.rb
002_issue_move.rb
003_issue_add_note.rb
004_export_pdf.rb
005_issue_start_date.rb
006_calendar_and_activity.rb
007_create_journals.rb
008_create_user_preferences.rb
009_add_hide_mail_pref.rb
010_create_comments.rb
011_add_news_comments_count.rb
012_add_comments_permissions.rb
013_create_queries.rb
014_add_queries_permissions.rb
015_create_repositories.rb
016_add_repositories_permissions.rb
017_create_settings.rb
018_set_doc_and_files_notifications.rb
019_add_issue_status_position.rb
020_add_role_position.rb
021_add_tracker_position.rb
022_serialize_possibles_values.rb
023_add_tracker_is_in_roadmap.rb
024_add_roadmap_permission.rb
025_add_search_permission.rb
026_add_repository_login_and_password.rb
027_create_wikis.rb
028_create_wiki_pages.rb
029_create_wiki_contents.rb
030_add_projects_feeds_permissions.rb
031_add_repository_root_url.rb
032_create_time_entries.rb
033_add_timelog_permissions.rb
034_create_changesets.rb
035_create_changes.rb
036_add_changeset_commit_date.rb
037_add_project_identifier.rb
038_add_custom_field_is_filter.rb
039_create_watchers.rb
040_create_changesets_issues.rb
041_rename_comment_to_comments.rb
042_create_issue_relations.rb
043_add_relations_permissions.rb
044_set_language_length_to_five.rb
045_create_boards.rb
046_create_messages.rb
047_add_boards_permissions.rb
048_allow_null_version_effective_date.rb
049_add_wiki_destroy_page_permission.rb
050_add_wiki_attachments_permissions.rb
051_add_project_status.rb
052_add_changes_revision.rb
053_add_changes_branch.rb
054_add_changesets_scmid.rb
055_add_repositories_type.rb
056_add_repositories_changes_permission.rb
057_add_versions_wiki_page_title.rb
058_add_issue_categories_assigned_to_id.rb
059_add_roles_assignable.rb
060_change_changesets_committer_limit.rb
061_add_roles_builtin.rb
062_insert_builtin_roles.rb
063_add_roles_permissions.rb
064_drop_permissions.rb
065_add_settings_updated_on.rb
066_add_custom_value_customized_index.rb
067_create_wiki_redirects.rb
068_create_enabled_modules.rb
069_add_issues_estimated_hours.rb
070_change_attachments_content_type_limit.rb
071_add_queries_column_names.rb
072_add_enumerations_position.rb
073_add_enumerations_is_default.rb
074_add_auth_sources_tls.rb
075_add_members_mail_notification.rb
076_allow_null_position.rb
077_remove_issue_statuses_html_color.rb
078_add_custom_fields_position.rb
079_add_user_preferences_time_zone.rb
080_add_users_type.rb
081_create_projects_trackers.rb
082_add_messages_locked.rb
083_add_messages_sticky.rb
084_change_auth_sources_account_limit.rb
085_add_role_tracker_old_status_index_to_workflows.rb
086_add_custom_fields_searchable.rb
087_change_projects_description_to_text.rb
088_add_custom_fields_default_value.rb
089_add_attachments_description.rb
090_change_versions_name_limit.rb
091_change_changesets_revision_to_string.rb
092_change_changes_from_revision_to_string.rb
093_add_wiki_pages_protected.rb
094_change_projects_homepage_limit.rb
095_add_wiki_pages_parent_id.rb
096_add_commit_access_permission.rb
097_add_view_wiki_edits_permission.rb
098_set_topic_authors_as_watchers.rb
099_add_delete_wiki_pages_attachments_permission.rb
100_add_changesets_user_id.rb
101_populate_changesets_user_id.rb
102_add_custom_fields_editable.rb
103_set_custom_fields_editable.rb
104_add_projects_lft_and_rgt.rb
105_build_projects_tree.rb
106_remove_projects_projects_count.rb
107_add_open_id_authentication_tables.rb
108_add_identity_url_to_users.rb
20090214190337_add_watchers_user_id_type_index.rb
20090312172426_add_queries_sort_criteria.rb
20090312194159_add_projects_trackers_unique_index.rb
20090318181151_extend_settings_name.rb
20090323224724_add_type_to_enumerations.rb
20090401221305_update_enumerations_to_sti.rb
20090401231134_add_active_field_to_enumerations.rb
20090403001910_add_project_to_enumerations.rb
20090406161854_add_parent_id_to_enumerations.rb
20090425161243_add_queries_group_by.rb
20090503121501_create_member_roles.rb
20090503121505_populate_member_roles.rb
20090503121510_drop_members_role_id.rb
20090614091200_fix_messages_sticky_null.rb
20090704172350_populate_users_type.rb
20090704172355_create_groups_users.rb
20090704172358_add_member_roles_inherited_from.rb
20091010093521_fix_users_custom_values.rb
20091017212227_add_missing_indexes_to_workflows.rb
20091017212457_add_missing_indexes_to_custom_fields_projects.rb
20091017212644_add_missing_indexes_to_messages.rb
20091017212938_add_missing_indexes_to_repositories.rb
20091017213027_add_missing_indexes_to_comments.rb
20091017213113_add_missing_indexes_to_enumerations.rb
20091017213151_add_missing_indexes_to_wiki_pages.rb
20091017213228_add_missing_indexes_to_watchers.rb
20091017213257_add_missing_indexes_to_auth_sources.rb
20091017213332_add_missing_indexes_to_documents.rb
20091017213444_add_missing_indexes_to_tokens.rb
20091017213536_add_missing_indexes_to_changesets.rb
20091017213642_add_missing_indexes_to_issue_categories.rb
20091017213716_add_missing_indexes_to_member_roles.rb
20091017213757_add_missing_indexes_to_boards.rb
20091017213835_add_missing_indexes_to_user_preferences.rb
20091017213910_add_missing_indexes_to_issues.rb
20091017214015_add_missing_indexes_to_members.rb
20091017214107_add_missing_indexes_to_custom_fields.rb
20091017214136_add_missing_indexes_to_queries.rb
20091017214236_add_missing_indexes_to_time_entries.rb
20091017214308_add_missing_indexes_to_news.rb
20091017214336_add_missing_indexes_to_users.rb
20091017214406_add_missing_indexes_to_attachments.rb
20091017214440_add_missing_indexes_to_wiki_contents.rb
20091017214519_add_missing_indexes_to_custom_values.rb
20091017214611_add_missing_indexes_to_journals.rb
20091017214644_add_missing_indexes_to_issue_relations.rb
20091017214720_add_missing_indexes_to_wiki_redirects.rb
20091017214750_add_missing_indexes_to_custom_fields_trackers.rb
20091025163651_add_activity_indexes.rb
20091108092559_add_versions_status.rb
20091114105931_add_view_issues_permission.rb
20091123212029_add_default_done_ratio_to_issue_status.rb
20091205124427_add_versions_sharing.rb
20091220183509_add_lft_and_rgt_indexes_to_projects.rb
20091220183727_add_index_to_settings_name.rb
20091220184736_add_indexes_to_issue_status.rb
20091225164732_remove_enumerations_opt.rb
20091227112908_change_wiki_contents_text_limit.rb
20100129193402_change_users_mail_notification_to_string.rb
20100129193813_update_mail_notification_values.rb
20100221100219_add_index_on_changesets_scmid.rb
20100313132032_add_issues_nested_sets_columns.rb
20100313171051_add_index_on_issues_nested_set.rb
20100705164950_change_changes_path_length_limit.rb
20100714111651_prepare_journals_for_acts_as_journalized.rb
20100714111652_update_journals_for_acts_as_journalized.rb
20100714111653_build_initial_journals_for_acts_as_journalized.rb
20100714111654_add_changes_from_journal_details_for_acts_as_journalized.rb
20100804112053_merge_wiki_versions_with_journals.rb
20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb
20101104182107_add_unique_index_on_members.rb
20101107130441_add_custom_fields_visible.rb
20101114115114_change_projects_name_limit.rb
20101114115359_change_projects_identifier_limit.rb
20110220160626_add_workflows_assignee_and_author.rb
20110223180944_add_users_salt.rb
20110223180953_salt_user_passwords.rb
20110224000000_add_repositories_path_encoding.rb
20110226120112_change_repositories_password_limit.rb
20110226120132_change_auth_sources_account_password_limit.rb
20110227125750_change_journal_details_values_to_text.rb
20110228000000_add_repositories_log_encoding.rb
20110228000100_copy_repositories_log_encoding.rb
20110314014400_add_start_date_to_versions.rb
20110401192910_add_index_to_users_type.rb
20110519194936_remove_comments_from_wiki_content.rb
20110729125454_remove_double_initial_wiki_content_journals.rb
MIGRATIONS
def up
intersection = aggregated_versions & all_versions
if intersection == []
# No migrations that this migration aggregates have already been
# applied. In this case, run the aggregated migration.
run_aggregated_migrations
elsif intersection == aggregated_versions
# All migrations that this migration aggregates have already
# been applied. In this case, remove the information about those
# migrations from the schema_migrations table and we're done.
execute <<-SQL + (intersection.map { |version| <<-CONDITIONS }).join(" OR ")
DELETE FROM
#{quoted_schema_migrations_table_name}
WHERE
SQL
#{version_column_for_comparison} = #{quote_value(version.to_s)}
CONDITIONS
else
missing = aggregated_versions - intersection
# Only a part of the migrations that this migration aggregates
# have already been applied. In this case, fail miserably.
raise IncompleteMigrationsError, <<-MESSAGE.split("\n").map(&:strip!).join(" ") + "\n"
It appears you are migrating from an incompatible version of
ChiliProject. Your database has only some migrations from ChiliProject <
v2.4.0. Please update your database to the schema of ChiliProject
v2.4.0 and run the OpenProject migrations again. The following
migrations are missing: #{missing}
MESSAGE
end
end
def down
# TODO.
raise ActiveRecord::IrreversibleMigration, "Kind of still a TODO."
end
private
def run_aggregated_migrations
create_table "attachments", :force => true do |t|
t.integer "container_id", :default => 0, :null => false
t.string "container_type", :limit => 30, :default => "", :null => false
t.string "filename", :default => "", :null => false
t.string "disk_filename", :default => "", :null => false
t.integer "filesize", :default => 0, :null => false
t.string "content_type", :default => ""
t.string "digest", :limit => 40, :default => "", :null => false
t.integer "downloads", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.string "description"
end
add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
create_table "auth_sources", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 60, :default => "", :null => false
t.string "host", :limit => 60
t.integer "port"
t.string "account"
t.string "account_password", :default => ""
t.string "base_dn"
t.string "attr_login", :limit => 30
t.string "attr_firstname", :limit => 30
t.string "attr_lastname", :limit => 30
t.string "attr_mail", :limit => 30
t.boolean "onthefly_register", :default => false, :null => false
t.boolean "tls", :default => false, :null => false
end
add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
create_table "boards", :force => true do |t|
t.integer "project_id", :null => false
t.string "name", :default => "", :null => false
t.string "description"
t.integer "position", :default => 1
t.integer "topics_count", :default => 0, :null => false
t.integer "messages_count", :default => 0, :null => false
t.integer "last_message_id"
end
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
add_index "boards", ["project_id"], :name => "boards_project_id"
create_table "changes", :force => true do |t|
t.integer "changeset_id", :null => false
t.string "action", :limit => 1, :default => "", :null => false
t.text "path", :null => false
t.text "from_path"
t.string "from_revision"
t.string "revision"
t.string "branch"
end
add_index "changes", ["changeset_id"], :name => "changesets_changeset_id"
create_table "changesets", :force => true do |t|
t.integer "repository_id", :null => false
t.string "revision", :null => false
t.string "committer"
t.datetime "committed_on", :null => false
t.text "comments"
t.date "commit_date"
t.string "scmid"
t.integer "user_id"
end
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true
add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid"
add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id"
add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id"
create_table "changesets_issues", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "issue_id", :null => false
end
add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
create_table "comments", :force => true do |t|
t.string "commented_type", :limit => 30, :default => "", :null => false
t.integer "commented_id", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.text "comments"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
create_table "custom_fields", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.string "field_format", :limit => 30, :default => "", :null => false
t.text "possible_values"
t.string "regexp", :default => ""
t.integer "min_length", :default => 0, :null => false
t.integer "max_length", :default => 0, :null => false
t.boolean "is_required", :default => false, :null => false
t.boolean "is_for_all", :default => false, :null => false
t.boolean "is_filter", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "searchable", :default => false
t.text "default_value"
t.boolean "editable", :default => true
t.boolean "visible", :default => true, :null => false
end
add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type"
create_table "custom_fields_projects", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
end
add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id"
create_table "custom_fields_trackers", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id"
create_table "custom_values", :force => true do |t|
t.string "customized_type", :limit => 30, :default => "", :null => false
t.integer "customized_id", :default => 0, :null => false
t.integer "custom_field_id", :default => 0, :null => false
t.text "value"
end
add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id"
add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized"
create_table "documents", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "category_id", :default => 0, :null => false
t.string "title", :limit => 60, :default => "", :null => false
t.text "description"
t.datetime "created_on"
end
add_index "documents", ["category_id"], :name => "index_documents_on_category_id"
add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
add_index "documents", ["project_id"], :name => "documents_project_id"
create_table "enabled_modules", :force => true do |t|
t.integer "project_id"
t.string "name", :null => false
end
add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id"
create_table "enumerations", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "is_default", :default => false, :null => false
t.string "type"
t.boolean "active", :default => true, :null => false
t.integer "project_id"
t.integer "parent_id"
end
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
create_table "groups_users", :id => false, :force => true do |t|
t.integer "group_id", :null => false
t.integer "user_id", :null => false
end
add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true
create_table "issue_categories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.integer "assigned_to_id"
end
add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id"
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
create_table "issue_relations", :force => true do |t|
t.integer "issue_from_id", :null => false
t.integer "issue_to_id", :null => false
t.string "relation_type", :default => "", :null => false
t.integer "delay"
end
add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id"
add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id"
create_table "issue_statuses", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_closed", :default => false, :null => false
t.boolean "is_default", :default => false, :null => false
t.integer "position", :default => 1
t.integer "default_done_ratio"
end
add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed"
add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default"
add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position"
create_table "issues", :force => true do |t|
t.integer "tracker_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
t.string "subject", :default => "", :null => false
t.text "description"
t.date "due_date"
t.integer "category_id"
t.integer "status_id", :default => 0, :null => false
t.integer "assigned_to_id"
t.integer "priority_id", :default => 0, :null => false
t.integer "fixed_version_id"
t.integer "author_id", :default => 0, :null => false
t.integer "lock_version", :default => 0, :null => false
t.datetime "created_on"
t.datetime "updated_on"
t.date "start_date"
t.integer "done_ratio", :default => 0, :null => false
t.float "estimated_hours"
t.integer "parent_id"
t.integer "root_id"
t.integer "lft"
t.integer "rgt"
end
add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id"
add_index "issues", ["author_id"], :name => "index_issues_on_author_id"
add_index "issues", ["category_id"], :name => "index_issues_on_category_id"
add_index "issues", ["created_on"], :name => "index_issues_on_created_on"
add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id"
add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id"
add_index "issues", ["project_id"], :name => "issues_project_id"
add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt"
add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
create_table "journal_details", :force => true do |t|
t.integer "journal_id", :default => 0, :null => false
t.string "property", :limit => 30, :default => "", :null => false
t.string "prop_key", :limit => 30, :default => "", :null => false
t.text "old_value"
t.text "value"
end
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
create_table "journals", :force => true do |t|
t.integer "journaled_id", :default => 0, :null => false
t.integer "user_id", :default => 0, :null => false
t.text "notes"
t.datetime "created_at", :null => false
t.integer "version", :default => 0, :null => false
t.string "activity_type"
t.text "changes"
t.string "type"
end
add_index "journals", ["activity_type"], :name => "index_journals_on_activity_type"
add_index "journals", ["created_at"], :name => "index_journals_on_created_at"
add_index "journals", ["created_at"], :name => "index_journals_on_created_on"
add_index "journals", ["journaled_id"], :name => "index_journals_on_journaled_id"
add_index "journals", ["journaled_id"], :name => "index_journals_on_journalized_id"
add_index "journals", ["type"], :name => "index_journals_on_type"
add_index "journals", ["user_id"], :name => "index_journals_on_user_id"
create_table "member_roles", :force => true do |t|
t.integer "member_id", :null => false
t.integer "role_id", :null => false
t.integer "inherited_from"
end
add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id"
create_table "members", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
t.datetime "created_on"
t.boolean "mail_notification", :default => false, :null => false
end
add_index "members", ["project_id"], :name => "index_members_on_project_id"
add_index "members", ["user_id", "project_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
add_index "members", ["user_id"], :name => "index_members_on_user_id"
create_table "messages", :force => true do |t|
t.integer "board_id", :null => false
t.integer "parent_id"
t.string "subject", :default => "", :null => false
t.text "content"
t.integer "author_id"
t.integer "replies_count", :default => 0, :null => false
t.integer "last_reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.boolean "locked", :default => false
t.integer "sticky", :default => 0
end
add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
add_index "messages", ["board_id"], :name => "messages_board_id"
add_index "messages", ["created_on"], :name => "index_messages_on_created_on"
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
add_index "messages", ["parent_id"], :name => "messages_parent_id"
create_table "news", :force => true do |t|
t.integer "project_id"
t.string "title", :limit => 60, :default => "", :null => false
t.string "summary", :default => ""
t.text "description"
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.integer "comments_count", :default => 0, :null => false
end
add_index "news", ["author_id"], :name => "index_news_on_author_id"
add_index "news", ["created_on"], :name => "index_news_on_created_on"
add_index "news", ["project_id"], :name => "news_project_id"
create_table "open_id_authentication_associations", :force => true do |t|
t.integer "issued"
t.integer "lifetime"
t.string "handle"
t.string "assoc_type"
t.binary "server_url"
t.binary "secret"
end
create_table "open_id_authentication_nonces", :force => true do |t|
t.integer "timestamp", :null => false
t.string "server_url"
t.string "salt", :null => false
end
create_table "projects", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "description"
t.string "homepage", :default => ""
t.boolean "is_public", :default => true, :null => false
t.integer "parent_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "identifier"
t.integer "status", :default => 1, :null => false
t.integer "lft"
t.integer "rgt"
end
add_index "projects", ["lft"], :name => "index_projects_on_lft"
add_index "projects", ["rgt"], :name => "index_projects_on_rgt"
create_table "projects_trackers", :id => false, :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
create_table "queries", :force => true do |t|
t.integer "project_id"
t.string "name", :default => "", :null => false
t.text "filters"
t.integer "user_id", :default => 0, :null => false
t.boolean "is_public", :default => false, :null => false
t.text "column_names"
t.text "sort_criteria"
t.string "group_by"
end
add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
create_table "repositories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "url", :default => "", :null => false
t.string "login", :limit => 60, :default => ""
t.string "password", :default => ""
t.string "root_url", :default => ""
t.string "type"
t.string "path_encoding", :limit => 64
t.string "log_encoding", :limit => 64
end
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
create_table "roles", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "assignable", :default => true
t.integer "builtin", :default => 0, :null => false
t.text "permissions"
end
create_table "settings", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "value"
t.datetime "updated_on"
end
add_index "settings", ["name"], :name => "index_settings_on_name"
create_table "time_entries", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
t.integer "issue_id"
t.float "hours", :null => false
t.string "comments"
t.integer "activity_id", :null => false
t.date "spent_on", :null => false
t.integer "tyear", :null => false
t.integer "tmonth", :null => false
t.integer "tweek", :null => false
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id"
add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on"
add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id"
add_index "time_entries", ["project_id"], :name => "time_entries_project_id"
add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id"
create_table "tokens", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.string "action", :limit => 30, :default => "", :null => false
t.string "value", :limit => 40, :default => "", :null => false
t.datetime "created_on", :null => false
end
add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
create_table "trackers", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_in_chlog", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "is_in_roadmap", :default => true, :null => false
end
create_table "user_preferences", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.text "others"
t.boolean "hide_mail", :default => false
t.string "time_zone"
end
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
create_table "users", :force => true do |t|
t.string "login", :limit => 30, :default => "", :null => false
t.string "hashed_password", :limit => 40, :default => "", :null => false
t.string "firstname", :limit => 30, :default => "", :null => false
t.string "lastname", :limit => 30, :default => "", :null => false
t.string "mail", :limit => 60, :default => "", :null => false
t.boolean "admin", :default => false, :null => false
t.integer "status", :default => 1, :null => false
t.datetime "last_login_on"
t.string "language", :limit => 5, :default => ""
t.integer "auth_source_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "type"
t.string "identity_url"
t.string "mail_notification", :default => "", :null => false
t.string "salt", :limit => 64
end
add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
add_index "users", ["type"], :name => "index_users_on_type"
create_table "versions", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :default => "", :null => false
t.string "description", :default => ""
t.date "effective_date"
t.datetime "created_on"
t.datetime "updated_on"
t.string "wiki_page_title"
t.string "status", :default => "open"
t.string "sharing", :default => "none", :null => false
t.date "start_date"
end
add_index "versions", ["project_id"], :name => "versions_project_id"
add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
create_table "watchers", :force => true do |t|
t.string "watchable_type", :default => "", :null => false
t.integer "watchable_id", :default => 0, :null => false
t.integer "user_id"
end
add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type"
add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id"
add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type"
create_table "wiki_content_versions", :force => true do |t|
t.integer "wiki_content_id", :null => false
t.integer "page_id", :null => false
t.integer "author_id"
t.binary "data", :limit => 16.megabytes
t.string "compression", :limit => 6, :default => ""
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on"
add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid"
create_table "wiki_contents", :force => true do |t|
t.integer "page_id", :null => false
t.integer "author_id"
t.text "text", :limit => 16.megabytes
t.datetime "updated_on", :null => false
t.integer "lock_version", :null => false
end
add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id"
add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id"
create_table "wiki_pages", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title", :null => false
t.datetime "created_on", :null => false
t.boolean "protected", :default => false, :null => false
t.integer "parent_id"
end
add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id"
add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title"
add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id"
create_table "wiki_redirects", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title"
t.string "redirects_to"
t.datetime "created_on", :null => false
end
add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title"
add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id"
create_table "wikis", :force => true do |t|
t.integer "project_id", :null => false
t.string "start_page", :null => false
t.integer "status", :default => 1, :null => false
end
add_index "wikis", ["project_id"], :name => "wikis_project_id"
create_table "workflows", :force => true do |t|
t.integer "tracker_id", :default => 0, :null => false
t.integer "old_status_id", :default => 0, :null => false
t.integer "new_status_id", :default => 0, :null => false
t.integer "role_id", :default => 0, :null => false
t.boolean "assignee", :default => false, :null => false
t.boolean "author", :default => false, :null => false
end
add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id"
add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id"
add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status"
add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id"
true
end
def aggregated_versions
@@aggregated_versions ||= @@migrations.split.map do |m|
m.gsub(/_.*$/, '').to_i
end
end
def all_versions
@@all_versions ||= ActiveRecord::Migrator.get_all_versions
end
def schema_migrations_table_name
ActiveRecord::Migrator.schema_migrations_table_name
end
def quoted_schema_migrations_table_name
ActiveRecord::Base.connection.quote_table_name(schema_migrations_table_name)
end
def quoted_version_column_name
ActiveRecord::Base.connection.quote_table_name("version")
end
def version_column_for_comparison
"#{quoted_schema_migrations_table_name}.#{quoted_version_column_name}"
end
def quote_value s
ActiveRecord::Base.connection.quote(s)
end
end

@ -1,336 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Setup < ActiveRecord::Migration
class User < ActiveRecord::Base; end
# model removed
class Permission < ActiveRecord::Base; end
def self.up
create_table "attachments", :force => true do |t|
t.column "container_id", :integer, :default => 0, :null => false
t.column "container_type", :string, :limit => 30, :default => "", :null => false
t.column "filename", :string, :default => "", :null => false
t.column "disk_filename", :string, :default => "", :null => false
t.column "filesize", :integer, :default => 0, :null => false
t.column "content_type", :string, :limit => 60, :default => ""
t.column "digest", :string, :limit => 40, :default => "", :null => false
t.column "downloads", :integer, :default => 0, :null => false
t.column "author_id", :integer, :default => 0, :null => false
t.column "created_on", :timestamp
end
create_table "auth_sources", :force => true do |t|
t.column "type", :string, :limit => 30, :default => "", :null => false
t.column "name", :string, :limit => 60, :default => "", :null => false
t.column "host", :string, :limit => 60
t.column "port", :integer
t.column "account", :string, :limit => 60
t.column "account_password", :string, :limit => 60
t.column "base_dn", :string, :limit => 255
t.column "attr_login", :string, :limit => 30
t.column "attr_firstname", :string, :limit => 30
t.column "attr_lastname", :string, :limit => 30
t.column "attr_mail", :string, :limit => 30
t.column "onthefly_register", :boolean, :default => false, :null => false
end
create_table "custom_fields", :force => true do |t|
t.column "type", :string, :limit => 30, :default => "", :null => false
t.column "name", :string, :limit => 30, :default => "", :null => false
t.column "field_format", :string, :limit => 30, :default => "", :null => false
t.column "possible_values", :text
t.column "regexp", :string, :default => ""
t.column "min_length", :integer, :default => 0, :null => false
t.column "max_length", :integer, :default => 0, :null => false
t.column "is_required", :boolean, :default => false, :null => false
t.column "is_for_all", :boolean, :default => false, :null => false
end
create_table "custom_fields_projects", :id => false, :force => true do |t|
t.column "custom_field_id", :integer, :default => 0, :null => false
t.column "project_id", :integer, :default => 0, :null => false
end
create_table "custom_fields_trackers", :id => false, :force => true do |t|
t.column "custom_field_id", :integer, :default => 0, :null => false
t.column "tracker_id", :integer, :default => 0, :null => false
end
create_table "custom_values", :force => true do |t|
t.column "customized_type", :string, :limit => 30, :default => "", :null => false
t.column "customized_id", :integer, :default => 0, :null => false
t.column "custom_field_id", :integer, :default => 0, :null => false
t.column "value", :text
end
create_table "documents", :force => true do |t|
t.column "project_id", :integer, :default => 0, :null => false
t.column "category_id", :integer, :default => 0, :null => false
t.column "title", :string, :limit => 60, :default => "", :null => false
t.column "description", :text
t.column "created_on", :timestamp
end
add_index "documents", ["project_id"], :name => "documents_project_id"
create_table "enumerations", :force => true do |t|
t.column "opt", :string, :limit => 4, :default => "", :null => false
t.column "name", :string, :limit => 30, :default => "", :null => false
end
create_table "issue_categories", :force => true do |t|
t.column "project_id", :integer, :default => 0, :null => false
t.column "name", :string, :limit => 30, :default => "", :null => false
end
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
create_table "issue_histories", :force => true do |t|
t.column "issue_id", :integer, :default => 0, :null => false
t.column "status_id", :integer, :default => 0, :null => false
t.column "author_id", :integer, :default => 0, :null => false
t.column "notes", :text
t.column "created_on", :timestamp
end
add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
create_table "issue_statuses", :force => true do |t|
t.column "name", :string, :limit => 30, :default => "", :null => false
t.column "is_closed", :boolean, :default => false, :null => false
t.column "is_default", :boolean, :default => false, :null => false
t.column "html_color", :string, :limit => 6, :default => "FFFFFF", :null => false
end
create_table "issues", :force => true do |t|
t.column "tracker_id", :integer, :default => 0, :null => false
t.column "project_id", :integer, :default => 0, :null => false
t.column "subject", :string, :default => "", :null => false
t.column "description", :text
t.column "due_date", :date
t.column "category_id", :integer
t.column "status_id", :integer, :default => 0, :null => false
t.column "assigned_to_id", :integer
t.column "priority_id", :integer, :default => 0, :null => false
t.column "fixed_version_id", :integer
t.column "author_id", :integer, :default => 0, :null => false
t.column "lock_version", :integer, :default => 0, :null => false
t.column "created_on", :timestamp
t.column "updated_on", :timestamp
end
add_index "issues", ["project_id"], :name => "issues_project_id"
create_table "members", :force => true do |t|
t.column "user_id", :integer, :default => 0, :null => false
t.column "project_id", :integer, :default => 0, :null => false
t.column "role_id", :integer, :default => 0, :null => false
t.column "created_on", :timestamp
end
create_table "news", :force => true do |t|
t.column "project_id", :integer
t.column "title", :string, :limit => 60, :default => "", :null => false
t.column "summary", :string, :limit => 255, :default => ""
t.column "description", :text
t.column "author_id", :integer, :default => 0, :null => false
t.column "created_on", :timestamp
end
add_index "news", ["project_id"], :name => "news_project_id"
create_table "permissions", :force => true do |t|
t.column "controller", :string, :limit => 30, :default => "", :null => false
t.column "action", :string, :limit => 30, :default => "", :null => false
t.column "description", :string, :limit => 60, :default => "", :null => false
t.column "is_public", :boolean, :default => false, :null => false
t.column "sort", :integer, :default => 0, :null => false
t.column "mail_option", :boolean, :default => false, :null => false
t.column "mail_enabled", :boolean, :default => false, :null => false
end
create_table "permissions_roles", :id => false, :force => true do |t|
t.column "permission_id", :integer, :default => 0, :null => false
t.column "role_id", :integer, :default => 0, :null => false
end
add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id"
create_table "projects", :force => true do |t|
t.column "name", :string, :limit => 30, :default => "", :null => false
t.column "description", :string, :default => "", :null => false
t.column "homepage", :string, :limit => 60, :default => ""
t.column "is_public", :boolean, :default => true, :null => false
t.column "parent_id", :integer
t.column "projects_count", :integer, :default => 0
t.column "created_on", :timestamp
t.column "updated_on", :timestamp
end
create_table "roles", :force => true do |t|
t.column "name", :string, :limit => 30, :default => "", :null => false
end
create_table "tokens", :force => true do |t|
t.column "user_id", :integer, :default => 0, :null => false
t.column "action", :string, :limit => 30, :default => "", :null => false
t.column "value", :string, :limit => 40, :default => "", :null => false
t.column "created_on", :datetime, :null => false
end
create_table "trackers", :force => true do |t|
t.column "name", :string, :limit => 30, :default => "", :null => false
t.column "is_in_chlog", :boolean, :default => false, :null => false
end
create_table "users", :force => true do |t|
t.column "login", :string, :limit => 30, :default => "", :null => false
t.column "hashed_password", :string, :limit => 40, :default => "", :null => false
t.column "firstname", :string, :limit => 30, :default => "", :null => false
t.column "lastname", :string, :limit => 30, :default => "", :null => false
t.column "mail", :string, :limit => 60, :default => "", :null => false
t.column "mail_notification", :boolean, :default => true, :null => false
t.column "admin", :boolean, :default => false, :null => false
t.column "status", :integer, :default => 1, :null => false
t.column "last_login_on", :datetime
t.column "language", :string, :limit => 2, :default => ""
t.column "auth_source_id", :integer
t.column "created_on", :timestamp
t.column "updated_on", :timestamp
end
create_table "versions", :force => true do |t|
t.column "project_id", :integer, :default => 0, :null => false
t.column "name", :string, :limit => 30, :default => "", :null => false
t.column "description", :string, :default => ""
t.column "effective_date", :date
t.column "created_on", :timestamp
t.column "updated_on", :timestamp
end
add_index "versions", ["project_id"], :name => "versions_project_id"
create_table "workflows", :force => true do |t|
t.column "tracker_id", :integer, :default => 0, :null => false
t.column "old_status_id", :integer, :default => 0, :null => false
t.column "new_status_id", :integer, :default => 0, :null => false
t.column "role_id", :integer, :default => 0, :null => false
end
# project
Permission.create :controller => "projects", :action => "show", :description => "label_overview", :sort => 100, :is_public => true
Permission.create :controller => "projects", :action => "changelog", :description => "label_change_log", :sort => 105, :is_public => true
Permission.create :controller => "reports", :action => "issue_report", :description => "label_report_plural", :sort => 110, :is_public => true
Permission.create :controller => "projects", :action => "settings", :description => "label_settings", :sort => 150
Permission.create :controller => "projects", :action => "edit", :description => "button_edit", :sort => 151
# members
Permission.create :controller => "projects", :action => "list_members", :description => "button_list", :sort => 200, :is_public => true
Permission.create :controller => "projects", :action => "add_member", :description => "button_add", :sort => 220
Permission.create :controller => "members", :action => "edit", :description => "button_edit", :sort => 221
Permission.create :controller => "members", :action => "destroy", :description => "button_delete", :sort => 222
# versions
Permission.create :controller => "projects", :action => "add_version", :description => "button_add", :sort => 320
Permission.create :controller => "versions", :action => "edit", :description => "button_edit", :sort => 321
Permission.create :controller => "versions", :action => "destroy", :description => "button_delete", :sort => 322
# issue categories
Permission.create :controller => "projects", :action => "add_issue_category", :description => "button_add", :sort => 420
Permission.create :controller => "issue_categories", :action => "edit", :description => "button_edit", :sort => 421
Permission.create :controller => "issue_categories", :action => "destroy", :description => "button_delete", :sort => 422
# issues
Permission.create :controller => "projects", :action => "list_issues", :description => "button_list", :sort => 1000, :is_public => true
Permission.create :controller => "projects", :action => "export_issues_csv", :description => "label_export_csv", :sort => 1001, :is_public => true
Permission.create :controller => "issues", :action => "show", :description => "button_view", :sort => 1005, :is_public => true
Permission.create :controller => "issues", :action => "download", :description => "button_download", :sort => 1010, :is_public => true
Permission.create :controller => "projects", :action => "add_issue", :description => "button_add", :sort => 1050, :mail_option => 1, :mail_enabled => 1
Permission.create :controller => "issues", :action => "edit", :description => "button_edit", :sort => 1055
Permission.create :controller => "issues", :action => "change_status", :description => "label_change_status", :sort => 1060, :mail_option => 1, :mail_enabled => 1
Permission.create :controller => "issues", :action => "destroy", :description => "button_delete", :sort => 1065
Permission.create :controller => "issues", :action => "add_attachment", :description => "label_attachment_new", :sort => 1070
Permission.create :controller => "issues", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1075
# news
Permission.create :controller => "projects", :action => "list_news", :description => "button_list", :sort => 1100, :is_public => true
Permission.create :controller => "news", :action => "show", :description => "button_view", :sort => 1101, :is_public => true
Permission.create :controller => "projects", :action => "add_news", :description => "button_add", :sort => 1120
Permission.create :controller => "news", :action => "edit", :description => "button_edit", :sort => 1121
Permission.create :controller => "news", :action => "destroy", :description => "button_delete", :sort => 1122
# documents
Permission.create :controller => "projects", :action => "list_documents", :description => "button_list", :sort => 1200, :is_public => true
Permission.create :controller => "documents", :action => "show", :description => "button_view", :sort => 1201, :is_public => true
Permission.create :controller => "documents", :action => "download", :description => "button_download", :sort => 1202, :is_public => true
Permission.create :controller => "projects", :action => "add_document", :description => "button_add", :sort => 1220
Permission.create :controller => "documents", :action => "edit", :description => "button_edit", :sort => 1221
Permission.create :controller => "documents", :action => "destroy", :description => "button_delete", :sort => 1222
Permission.create :controller => "documents", :action => "add_attachment", :description => "label_attachment_new", :sort => 1223
Permission.create :controller => "documents", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1224
# files
Permission.create :controller => "projects", :action => "list_files", :description => "button_list", :sort => 1300, :is_public => true
Permission.create :controller => "versions", :action => "download", :description => "button_download", :sort => 1301, :is_public => true
Permission.create :controller => "projects", :action => "add_file", :description => "button_add", :sort => 1320
Permission.create :controller => "versions", :action => "destroy_file", :description => "button_delete", :sort => 1322
# create default administrator account
user = User.create :login => "admin",
:hashed_password => "d033e22ae348aeb5660fc2140aec35850c4da997",
:admin => true,
:firstname => "OpenProject",
:lastname => "Admin",
:mail => "admin@example.net",
:mail_notification => true,
:language => "en",
:status => 1
end
def self.down
drop_table :attachments
drop_table :auth_sources
drop_table :custom_fields
drop_table :custom_fields_projects
drop_table :custom_fields_trackers
drop_table :custom_values
drop_table :documents
drop_table :enumerations
drop_table :issue_categories
drop_table :issue_histories
drop_table :issue_statuses
drop_table :issues
drop_table :members
drop_table :news
drop_table :permissions
drop_table :permissions_roles
drop_table :projects
drop_table :roles
drop_table :trackers
drop_table :tokens
drop_table :users
drop_table :versions
drop_table :workflows
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class IssueMove < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "projects", :action => "move_issues", :description => "button_move", :sort => 1061, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'move_issues']).destroy
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class IssueAddNote < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "issues", :action => "add_note", :description => "label_add_note", :sort => 1057, :mail_option => 1, :mail_enabled => 0
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'add_note']).destroy
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ExportPdf < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "projects", :action => "export_issues_pdf", :description => "label_export_pdf", :sort => 1002, :is_public => true, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => "issues", :action => "export_pdf", :description => "label_export_pdf", :sort => 1015, :is_public => true, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'export_issues_pdf']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'export_pdf']).destroy
end
end

@ -1,23 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class IssueStartDate < ActiveRecord::Migration
def self.up
add_column :issues, :start_date, :date
add_column :issues, :done_ratio, :integer, :default => 0, :null => false
end
def self.down
remove_column :issues, :start_date
remove_column :issues, :done_ratio
end
end

@ -1,28 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CalendarAndActivity < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "projects", :action => "activity", :description => "label_activity", :sort => 160, :is_public => true, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => "projects", :action => "calendar", :description => "label_calendar", :sort => 165, :is_public => true, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => "projects", :action => "gantt", :description => "label_gantt", :sort => 166, :is_public => true, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'activity']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'calendar']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'gantt']).destroy
end
end

@ -1,68 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateJournals < ActiveRecord::Migration
# model removed, but needed for data migration
class IssueHistory < ActiveRecord::Base; belongs_to :issue; end
# model removed
class Permission < ActiveRecord::Base; end
def self.up
create_table :journals, :force => true do |t|
t.column "journalized_id", :integer, :default => 0, :null => false
t.column "journalized_type", :string, :limit => 30, :default => "", :null => false
t.column "user_id", :integer, :default => 0, :null => false
t.column "notes", :text
t.column "created_on", :datetime, :null => false
end
create_table :journal_details, :force => true do |t|
t.column "journal_id", :integer, :default => 0, :null => false
t.column "property", :string, :limit => 30, :default => "", :null => false
t.column "prop_key", :string, :limit => 30, :default => "", :null => false
t.column "old_value", :string
t.column "value", :string
end
# indexes
add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
Permission.create :controller => "issues", :action => "history", :description => "label_history", :sort => 1006, :is_public => true, :mail_option => 0, :mail_enabled => 0
# data migration
IssueHistory.find(:all, :include => :issue).each {|h|
j = Journal.new(:journalized => h.issue, :user_id => h.author_id, :notes => h.notes, :created_on => h.created_on)
j.details << JournalDetail.new(:property => 'attr', :prop_key => 'status_id', :value => h.status_id)
j.save
}
drop_table :issue_histories
end
def self.down
drop_table :journal_details
drop_table :journals
create_table "issue_histories", :force => true do |t|
t.column "issue_id", :integer, :default => 0, :null => false
t.column "status_id", :integer, :default => 0, :null => false
t.column "author_id", :integer, :default => 0, :null => false
t.column "notes", :text, :default => nil
t.column "created_on", :timestamp
end
add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id"
Permission.find(:first, :conditions => ["controller=? and action=?", 'issues', 'history']).destroy
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateUserPreferences < ActiveRecord::Migration
def self.up
create_table :user_preferences do |t|
t.column "user_id", :integer, :default => 0, :null => false
t.column "others", :text
end
end
def self.down
drop_table :user_preferences
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddHideMailPref < ActiveRecord::Migration
def self.up
add_column :user_preferences, :hide_mail, :boolean, :default => false
end
def self.down
remove_column :user_preferences, :hide_mail
end
end

@ -1,28 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateComments < ActiveRecord::Migration
def self.up
create_table :comments do |t|
t.column :commented_type, :string, :limit => 30, :default => "", :null => false
t.column :commented_id, :integer, :default => 0, :null => false
t.column :author_id, :integer, :default => 0, :null => false
t.column :comments, :text
t.column :created_on, :datetime, :null => false
t.column :updated_on, :datetime, :null => false
end
end
def self.down
drop_table :comments
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddNewsCommentsCount < ActiveRecord::Migration
def self.up
add_column :news, :comments_count, :integer, :default => 0, :null => false
end
def self.down
remove_column :news, :comments_count
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddCommentsPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "news", :action => "add_comment", :description => "label_comment_add", :sort => 1130, :is_public => false, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => "news", :action => "destroy_comment", :description => "label_comment_delete", :sort => 1133, :is_public => false, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'news', 'add_comment']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'news', 'destroy_comment']).destroy
end
end

@ -1,27 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateQueries < ActiveRecord::Migration
def self.up
create_table :queries, :force => true do |t|
t.column "project_id", :integer
t.column "name", :string, :default => "", :null => false
t.column "filters", :text
t.column "user_id", :integer, :default => 0, :null => false
t.column "is_public", :boolean, :default => false, :null => false
end
end
def self.down
drop_table :queries
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddQueriesPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "projects", :action => "add_query", :description => "button_create", :sort => 600, :is_public => false, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'add_query']).destroy
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateRepositories < ActiveRecord::Migration
def self.up
create_table :repositories, :force => true do |t|
t.column "project_id", :integer, :default => 0, :null => false
t.column "url", :string, :default => "", :null => false
end
end
def self.down
drop_table :repositories
end
end

@ -1,34 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRepositoriesPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "repositories", :action => "show", :description => "button_view", :sort => 1450, :is_public => true
Permission.create :controller => "repositories", :action => "browse", :description => "label_browse", :sort => 1460, :is_public => true
Permission.create :controller => "repositories", :action => "entry", :description => "entry", :sort => 1462, :is_public => true
Permission.create :controller => "repositories", :action => "revisions", :description => "label_view_revisions", :sort => 1470, :is_public => true
Permission.create :controller => "repositories", :action => "revision", :description => "label_view_revisions", :sort => 1472, :is_public => true
Permission.create :controller => "repositories", :action => "diff", :description => "diff", :sort => 1480, :is_public => true
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'repositories', 'show']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'repositories', 'browse']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'repositories', 'entry']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'repositories', 'revisions']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'repositories', 'revision']).destroy
Permission.find(:first, :conditions => ["controller=? and action=?", 'repositories', 'diff']).destroy
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateSettings < ActiveRecord::Migration
def self.up
create_table :settings, :force => true do |t|
t.column "name", :string, :limit => 30, :default => "", :null => false
t.column "value", :text
end
end
def self.down
drop_table :settings
end
end

@ -1,30 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class SetDocAndFilesNotifications < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.find_by_controller_and_action("projects", "add_file").update_attribute(:mail_option, true)
Permission.find_by_controller_and_action("projects", "add_document").update_attribute(:mail_option, true)
Permission.find_by_controller_and_action("documents", "add_attachment").update_attribute(:mail_option, true)
Permission.find_by_controller_and_action("issues", "add_attachment").update_attribute(:mail_option, true)
end
def self.down
Permission.find_by_controller_and_action("projects", "add_file").update_attribute(:mail_option, false)
Permission.find_by_controller_and_action("projects", "add_document").update_attribute(:mail_option, false)
Permission.find_by_controller_and_action("documents", "add_attachment").update_attribute(:mail_option, false)
Permission.find_by_controller_and_action("issues", "add_attachment").update_attribute(:mail_option, false)
end
end

@ -1,22 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddIssueStatusPosition < ActiveRecord::Migration
def self.up
add_column :issue_statuses, :position, :integer, :default => 1
IssueStatus.find(:all).each_with_index {|status, i| status.update_attribute(:position, i+1)}
end
def self.down
remove_column :issue_statuses, :position
end
end

@ -1,22 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRolePosition < ActiveRecord::Migration
def self.up
add_column :roles, :position, :integer, :default => 1
Role.find(:all).each_with_index {|role, i| role.update_attribute(:position, i+1)}
end
def self.down
remove_column :roles, :position
end
end

@ -1,78 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddTrackerPosition < ActiveRecord::Migration
class Tracker < ActiveRecord::Base
before_destroy :check_integrity
has_many :issues
has_many :workflows, :dependent => :delete_all do
def copy(source_tracker)
Workflow.copy(source_tracker, nil, proxy_association.owner, nil)
end
end
has_and_belongs_to_many :projects
has_and_belongs_to_many :custom_fields, :class_name => 'WorkPackageCustomField', :join_table => "#{table_name_prefix}custom_fields_trackers#{table_name_suffix}", :association_foreign_key => 'custom_field_id'
acts_as_list
validates_presence_of :name
validates_uniqueness_of :name
validates_length_of :name, :maximum => 30
def to_s; name end
def <=>(tracker)
name <=> tracker.name
end
def self.all
find(:all, :order => 'position')
end
# Returns an array of IssueStatus that are used
# in the tracker's workflows
def issue_statuses
if @issue_statuses
return @issue_statuses
elsif new_record?
return []
end
ids = Workflow.
connection.select_rows("SELECT DISTINCT old_status_id, new_status_id FROM #{Workflow.table_name} WHERE tracker_id = #{id}").
flatten.
uniq
@issue_statuses = IssueStatus.find_all_by_id(ids).sort
end
private
def check_integrity
raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])
end
end
def self.up
Object.const_set("Tracker", AddTrackerPosition::Tracker)
add_column :trackers, :position, :integer, :default => 1
Tracker.find(:all).each_with_index {|tracker, i| tracker.update_attribute(:position, i+1)}
Object.send(:remove_const, :Tracker)
end
def self.down
remove_column :trackers, :position
end
end

@ -1,25 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class SerializePossiblesValues < ActiveRecord::Migration
def self.up
CustomField.find(:all).each do |field|
if field.possible_values and field.possible_values.is_a? String
field.possible_values = field.possible_values.split('|')
field.save
end
end
end
def self.down
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddTrackerIsInRoadmap < ActiveRecord::Migration
def self.up
add_column :trackers, :is_in_roadmap, :boolean, :default => true, :null => false
end
def self.down
remove_column :trackers, :is_in_roadmap
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRoadmapPermission < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "projects", :action => "roadmap", :description => "label_roadmap", :sort => 107, :is_public => true, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'roadmap']).destroy
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddSearchPermission < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "projects", :action => "search", :description => "label_search", :sort => 130, :is_public => true, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action('projects', 'search').destroy
end
end

@ -1,23 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRepositoryLoginAndPassword < ActiveRecord::Migration
def self.up
add_column :repositories, :login, :string, :limit => 60, :default => ""
add_column :repositories, :password, :string, :limit => 60, :default => ""
end
def self.down
remove_column :repositories, :login
remove_column :repositories, :password
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateWikis < ActiveRecord::Migration
def self.up
create_table :wikis do |t|
t.column :project_id, :integer, :null => false
t.column :start_page, :string, :limit => 255, :null => false
t.column :status, :integer, :default => 1, :null => false
end
add_index :wikis, :project_id, :name => :wikis_project_id
end
def self.down
drop_table :wikis
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateWikiPages < ActiveRecord::Migration
def self.up
create_table :wiki_pages do |t|
t.column :wiki_id, :integer, :null => false
t.column :title, :string, :limit => 255, :null => false
t.column :created_on, :datetime, :null => false
end
add_index :wiki_pages, [:wiki_id, :title], :name => :wiki_pages_wiki_id_title
end
def self.down
drop_table :wiki_pages
end
end

@ -1,42 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateWikiContents < ActiveRecord::Migration
def self.up
create_table :wiki_contents do |t|
t.column :page_id, :integer, :null => false
t.column :author_id, :integer
t.column :text, :text
t.column :comments, :string, :limit => 255, :default => ""
t.column :updated_on, :datetime, :null => false
t.column :version, :integer, :null => false
end
add_index :wiki_contents, :page_id, :name => :wiki_contents_page_id
create_table :wiki_content_versions do |t|
t.column :wiki_content_id, :integer, :null => false
t.column :page_id, :integer, :null => false
t.column :author_id, :integer
t.column :data, :binary
t.column :compression, :string, :limit => 6, :default => ""
t.column :comments, :string, :limit => 255, :default => ""
t.column :updated_on, :datetime, :null => false
t.column :version, :integer, :null => false
end
add_index :wiki_content_versions, :wiki_content_id, :name => :wiki_content_versions_wcid
end
def self.down
drop_table :wiki_contents
drop_table :wiki_content_versions
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddProjectsFeedsPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "projects", :action => "feeds", :description => "label_feed_plural", :sort => 132, :is_public => true, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action('projects', 'feeds').destroy
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRepositoryRootUrl < ActiveRecord::Migration
def self.up
add_column :repositories, :root_url, :string, :limit => 255, :default => ""
end
def self.down
remove_column :repositories, :root_url
end
end

@ -1,36 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateTimeEntries < ActiveRecord::Migration
def self.up
create_table :time_entries do |t|
t.column :project_id, :integer, :null => false
t.column :user_id, :integer, :null => false
t.column :issue_id, :integer
t.column :hours, :float, :null => false
t.column :comments, :string, :limit => 255
t.column :activity_id, :integer, :null => false
t.column :spent_on, :date, :null => false
t.column :tyear, :integer, :null => false
t.column :tmonth, :integer, :null => false
t.column :tweek, :integer, :null => false
t.column :created_on, :datetime, :null => false
t.column :updated_on, :datetime, :null => false
end
add_index :time_entries, [:project_id], :name => :time_entries_project_id
add_index :time_entries, [:issue_id], :name => :time_entries_issue_id
end
def self.down
drop_table :time_entries
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddTimelogPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "timelog", :action => "edit", :description => "button_log_time", :sort => 1520, :is_public => false, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action('timelog', 'edit').destroy
end
end

@ -1,28 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateChangesets < ActiveRecord::Migration
def self.up
create_table :changesets do |t|
t.column :repository_id, :integer, :null => false
t.column :revision, :integer, :null => false
t.column :committer, :string, :limit => 30
t.column :committed_on, :datetime, :null => false
t.column :comments, :text
end
add_index :changesets, [:repository_id, :revision], :unique => true, :name => :changesets_repos_rev
end
def self.down
drop_table :changesets
end
end

@ -1,28 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateChanges < ActiveRecord::Migration
def self.up
create_table :changes do |t|
t.column :changeset_id, :integer, :null => false
t.column :action, :string, :limit => 1, :default => "", :null => false
t.column :path, :string, :default => "", :null => false
t.column :from_path, :string
t.column :from_revision, :integer
end
add_index :changes, [:changeset_id], :name => :changesets_changeset_id
end
def self.down
drop_table :changes
end
end

@ -1,22 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddChangesetCommitDate < ActiveRecord::Migration
def self.up
add_column :changesets, :commit_date, :date
Changeset.update_all "commit_date = committed_on"
end
def self.down
remove_column :changesets, :commit_date
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddProjectIdentifier < ActiveRecord::Migration
def self.up
add_column :projects, :identifier, :string, :limit => 20
end
def self.down
remove_column :projects, :identifier
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddCustomFieldIsFilter < ActiveRecord::Migration
def self.up
add_column :custom_fields, :is_filter, :boolean, :null => false, :default => false
end
def self.down
remove_column :custom_fields, :is_filter
end
end

@ -1,25 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateWatchers < ActiveRecord::Migration
def self.up
create_table :watchers do |t|
t.column :watchable_type, :string, :default => "", :null => false
t.column :watchable_id, :integer, :default => 0, :null => false
t.column :user_id, :integer
end
end
def self.down
drop_table :watchers
end
end

@ -1,25 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateChangesetsIssues < ActiveRecord::Migration
def self.up
create_table :changesets_issues, :id => false do |t|
t.column :changeset_id, :integer, :null => false
t.column :issue_id, :integer, :null => false
end
add_index :changesets_issues, [:changeset_id, :issue_id], :unique => true, :name => :changesets_issues_ids
end
def self.down
drop_table :changesets_issues
end
end

@ -1,25 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class RenameCommentToComments < ActiveRecord::Migration
def self.up
rename_column(:comments, :comment, :comments) if ActiveRecord::Base.connection.columns(Comment.table_name).detect{|c| c.name == "comment"}
rename_column(:wiki_contents, :comment, :comments) if ActiveRecord::Base.connection.columns(WikiContent.table_name).detect{|c| c.name == "comment"}
rename_column(:wiki_content_versions, :comment, :comments) if ActiveRecord::Base.connection.columns("wiki_content_versions").detect{|c| c.name == "comment"}
rename_column(:time_entries, :comment, :comments) if ActiveRecord::Base.connection.columns(TimeEntry.table_name).detect{|c| c.name == "comment"}
rename_column(:changesets, :comment, :comments) if ActiveRecord::Base.connection.columns(Changeset.table_name).detect{|c| c.name == "comment"}
end
def self.down
raise IrreversibleMigration
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateIssueRelations < ActiveRecord::Migration
def self.up
create_table :issue_relations do |t|
t.column :issue_from_id, :integer, :null => false
t.column :issue_to_id, :integer, :null => false
t.column :relation_type, :string, :default => "", :null => false
t.column :delay, :integer
end
end
def self.down
drop_table :issue_relations
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRelationsPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "issue_relations", :action => "new", :description => "label_relation_new", :sort => 1080, :is_public => false, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => "issue_relations", :action => "destroy", :description => "label_relation_delete", :sort => 1085, :is_public => false, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action("issue_relations", "new").destroy
Permission.find_by_controller_and_action("issue_relations", "destroy").destroy
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class SetLanguageLengthToFive < ActiveRecord::Migration
def self.up
change_column :users, :language, :string, :limit => 5, :default => ""
end
def self.down
raise IrreversibleMigration
end
end

@ -1,30 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateBoards < ActiveRecord::Migration
def self.up
create_table :boards do |t|
t.column :project_id, :integer, :null => false
t.column :name, :string, :default => "", :null => false
t.column :description, :string
t.column :position, :integer, :default => 1
t.column :topics_count, :integer, :default => 0, :null => false
t.column :messages_count, :integer, :default => 0, :null => false
t.column :last_message_id, :integer
end
add_index :boards, [:project_id], :name => :boards_project_id
end
def self.down
drop_table :boards
end
end

@ -1,33 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateMessages < ActiveRecord::Migration
def self.up
create_table :messages do |t|
t.column :board_id, :integer, :null => false
t.column :parent_id, :integer
t.column :subject, :string, :default => "", :null => false
t.column :content, :text
t.column :author_id, :integer
t.column :replies_count, :integer, :default => 0, :null => false
t.column :last_reply_id, :integer
t.column :created_on, :datetime, :null => false
t.column :updated_on, :datetime, :null => false
end
add_index :messages, [:board_id], :name => :messages_board_id
add_index :messages, [:parent_id], :name => :messages_parent_id
end
def self.down
drop_table :messages
end
end

@ -1,28 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddBoardsPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => "boards", :action => "new", :description => "button_add", :sort => 2000, :is_public => false, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => "boards", :action => "edit", :description => "button_edit", :sort => 2005, :is_public => false, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => "boards", :action => "destroy", :description => "button_delete", :sort => 2010, :is_public => false, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action("boards", "new").destroy
Permission.find_by_controller_and_action("boards", "edit").destroy
Permission.find_by_controller_and_action("boards", "destroy").destroy
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AllowNullVersionEffectiveDate < ActiveRecord::Migration
def self.up
change_column :versions, :effective_date, :date, :default => nil, :null => true
end
def self.down
raise IrreversibleMigration
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddWikiDestroyPagePermission < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => 'wiki', :action => 'destroy', :description => 'button_delete', :sort => 1740, :is_public => false, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action('wiki', 'destroy').destroy
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddWikiAttachmentsPermissions < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => 'wiki', :action => 'add_attachment', :description => 'label_attachment_new', :sort => 1750, :is_public => false, :mail_option => 0, :mail_enabled => 0
Permission.create :controller => 'wiki', :action => 'destroy_attachment', :description => 'label_attachment_delete', :sort => 1755, :is_public => false, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action('wiki', 'add_attachment').destroy
Permission.find_by_controller_and_action('wiki', 'destroy_attachment').destroy
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddProjectStatus < ActiveRecord::Migration
def self.up
add_column :projects, :status, :integer, :default => 1, :null => false
end
def self.down
remove_column :projects, :status
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddChangesRevision < ActiveRecord::Migration
def self.up
add_column :changes, :revision, :string
end
def self.down
remove_column :changes, :revision
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddChangesBranch < ActiveRecord::Migration
def self.up
add_column :changes, :branch, :string
end
def self.down
remove_column :changes, :branch
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddChangesetsScmid < ActiveRecord::Migration
def self.up
add_column :changesets, :scmid, :string
end
def self.down
remove_column :changesets, :scmid
end
end

@ -1,23 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRepositoriesType < ActiveRecord::Migration
def self.up
add_column :repositories, :type, :string
# Set class name for existing SVN repositories
Repository.update_all "type = 'Subversion'"
end
def self.down
remove_column :repositories, :type
end
end

@ -1,24 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRepositoriesChangesPermission < ActiveRecord::Migration
# model removed
class Permission < ActiveRecord::Base; end
def self.up
Permission.create :controller => 'repositories', :action => 'changes', :description => 'label_change_plural', :sort => 1475, :is_public => true, :mail_option => 0, :mail_enabled => 0
end
def self.down
Permission.find_by_controller_and_action('repositories', 'changes').destroy
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddVersionsWikiPageTitle < ActiveRecord::Migration
def self.up
add_column :versions, :wiki_page_title, :string
end
def self.down
remove_column :versions, :wiki_page_title
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddIssueCategoriesAssignedToId < ActiveRecord::Migration
def self.up
add_column :issue_categories, :assigned_to_id, :integer
end
def self.down
remove_column :issue_categories, :assigned_to_id
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRolesAssignable < ActiveRecord::Migration
def self.up
add_column :roles, :assignable, :boolean, :default => true
end
def self.down
remove_column :roles, :assignable
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeChangesetsCommitterLimit < ActiveRecord::Migration
def self.up
change_column :changesets, :committer, :string, :limit => nil
end
def self.down
change_column :changesets, :committer, :string, :limit => 30
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRolesBuiltin < ActiveRecord::Migration
def self.up
add_column :roles, :builtin, :integer, :default => 0, :null => false
end
def self.down
remove_column :roles, :builtin
end
end

@ -1,29 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class InsertBuiltinRoles < ActiveRecord::Migration
def self.up
Role.connection.schema_cache.clear!
Role.reset_column_information
nonmember = Role.new(:name => 'Non member', :position => 0)
nonmember.builtin = Role::BUILTIN_NON_MEMBER
nonmember.save
anonymous = Role.new(:name => 'Anonymous', :position => 0)
anonymous.builtin = Role::BUILTIN_ANONYMOUS
anonymous.save
end
def self.down
Role.destroy_all 'builtin <> 0'
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRolesPermissions < ActiveRecord::Migration
def self.up
add_column :roles, :permissions, :text
end
def self.down
remove_column :roles, :permissions
end
end

@ -1,22 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class DropPermissions < ActiveRecord::Migration
def self.up
drop_table :permissions
drop_table :permissions_roles
end
def self.down
raise IrreversibleMigration
end
end

@ -1,23 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddSettingsUpdatedOn < ActiveRecord::Migration
def self.up
add_column :settings, :updated_on, :timestamp
# set updated_on
Setting.find(:all).each(&:save)
end
def self.down
remove_column :settings, :updated_on
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddCustomValueCustomizedIndex < ActiveRecord::Migration
def self.up
add_index :custom_values, [:customized_type, :customized_id], :name => :custom_values_customized
end
def self.down
remove_index :custom_values, :name => :custom_values_customized
end
end

@ -1,27 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateWikiRedirects < ActiveRecord::Migration
def self.up
create_table :wiki_redirects do |t|
t.column :wiki_id, :integer, :null => false
t.column :title, :string
t.column :redirects_to, :string
t.column :created_on, :datetime, :null => false
end
add_index :wiki_redirects, [:wiki_id, :title], :name => :wiki_redirects_wiki_id_title
end
def self.down
drop_table :wiki_redirects
end
end

@ -1,30 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateEnabledModules < ActiveRecord::Migration
def self.up
create_table :enabled_modules do |t|
t.column :project_id, :integer
t.column :name, :string, :null => false
end
add_index :enabled_modules, [:project_id], :name => :enabled_modules_project_id
# Enable all modules for existing projects
Project.find(:all).each do |project|
project.enabled_module_names = Redmine::AccessControl.available_project_modules
end
end
def self.down
drop_table :enabled_modules
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddIssuesEstimatedHours < ActiveRecord::Migration
def self.up
add_column :issues, :estimated_hours, :float
end
def self.down
remove_column :issues, :estimated_hours
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeAttachmentsContentTypeLimit < ActiveRecord::Migration
def self.up
change_column :attachments, :content_type, :string, :limit => nil
end
def self.down
change_column :attachments, :content_type, :string, :limit => 60
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddQueriesColumnNames < ActiveRecord::Migration
def self.up
add_column :queries, :column_names, :text
end
def self.down
remove_column :queries, :column_names
end
end

@ -1,27 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddEnumerationsPosition < ActiveRecord::Migration
def self.up
add_column(:enumerations, :position, :integer, :default => 1) unless Enumeration.column_names.include?('position')
Enumeration.find(:all).group_by(&:opt).each do |opt, enums|
enums.each_with_index do |enum, i|
# do not call model callbacks
Enumeration.update_all "position = #{i+1}", {:id => enum.id}
end
end
end
def self.down
remove_column :enumerations, :position
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddEnumerationsIsDefault < ActiveRecord::Migration
def self.up
add_column :enumerations, :is_default, :boolean, :default => false, :null => false
end
def self.down
remove_column :enumerations, :is_default
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddAuthSourcesTls < ActiveRecord::Migration
def self.up
add_column :auth_sources, :tls, :boolean, :default => false, :null => false
end
def self.down
remove_column :auth_sources, :tls
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddMembersMailNotification < ActiveRecord::Migration
def self.up
add_column :members, :mail_notification, :boolean, :default => false, :null => false
end
def self.down
remove_column :members, :mail_notification
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AllowNullPosition < ActiveRecord::Migration
def self.up
# removes the 'not null' constraint on position fields
change_column :issue_statuses, :position, :integer, :default => 1, :null => true
change_column :roles, :position, :integer, :default => 1, :null => true
change_column :trackers, :position, :integer, :default => 1, :null => true
change_column :boards, :position, :integer, :default => 1, :null => true
change_column :enumerations, :position, :integer, :default => 1, :null => true
end
def self.down
# nothing to do
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class RemoveIssueStatusesHtmlColor < ActiveRecord::Migration
def self.up
remove_column :issue_statuses, :html_color
end
def self.down
raise IrreversibleMigration
end
end

@ -1,27 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddCustomFieldsPosition < ActiveRecord::Migration
def self.up
add_column(:custom_fields, :position, :integer, :default => 1)
CustomField.find(:all).group_by(&:type).each do |t, fields|
fields.each_with_index do |field, i|
# do not call model callbacks
CustomField.update_all "position = #{i+1}", {:id => field.id}
end
end
end
def self.down
remove_column :custom_fields, :position
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddUserPreferencesTimeZone < ActiveRecord::Migration
def self.up
add_column :user_preferences, :time_zone, :string
end
def self.down
remove_column :user_preferences, :time_zone
end
end

@ -1,22 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddUsersType < ActiveRecord::Migration
def self.up
add_column :users, :type, :string
User.update_all "type = 'User'"
end
def self.down
remove_column :users, :type
end
end

@ -1,87 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class CreateProjectsTrackers < ActiveRecord::Migration
class Tracker < ActiveRecord::Base
before_destroy :check_integrity
has_many :issues
has_many :workflows, :dependent => :delete_all do
def copy(source_tracker)
Workflow.copy(source_tracker, nil, proxy_association.owner, nil)
end
end
has_and_belongs_to_many :projects
has_and_belongs_to_many :custom_fields, :class_name => 'WorkPackageCustomField', :join_table => "#{table_name_prefix}custom_fields_trackers#{table_name_suffix}", :association_foreign_key => 'custom_field_id'
acts_as_list
validates_presence_of :name
validates_uniqueness_of :name
validates_length_of :name, :maximum => 30
def to_s; name end
def <=>(tracker)
name <=> tracker.name
end
def self.all
find(:all, :order => 'position')
end
# Returns an array of IssueStatus that are used
# in the tracker's workflows
def issue_statuses
if @issue_statuses
return @issue_statuses
elsif new_record?
return []
end
ids = Workflow.
connection.select_rows("SELECT DISTINCT old_status_id, new_status_id FROM #{Workflow.table_name} WHERE tracker_id = #{id}").
flatten.
uniq
@issue_statuses = IssueStatus.find_all_by_id(ids).sort
end
private
def check_integrity
raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])
end
end
def self.up
Object.const_set("Tracker", AddTrackerPosition::Tracker)
create_table :projects_trackers, :id => false do |t|
t.column :project_id, :integer, :default => 0, :null => false
t.column :tracker_id, :integer, :default => 0, :null => false
end
add_index :projects_trackers, :project_id, :name => :projects_trackers_project_id
# Associates all trackers to all projects (as it was before)
tracker_ids = Tracker.find(:all).collect(&:id)
Project.find(:all).each do |project|
project.tracker_ids = tracker_ids
end
Object.send(:remove_const, :Tracker)
end
def self.down
drop_table :projects_trackers
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddMessagesLocked < ActiveRecord::Migration
def self.up
add_column :messages, :locked, :boolean, :default => false
end
def self.down
remove_column :messages, :locked
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddMessagesSticky < ActiveRecord::Migration
def self.up
add_column :messages, :sticky, :integer, :default => 0
end
def self.down
remove_column :messages, :sticky
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeAuthSourcesAccountLimit < ActiveRecord::Migration
def self.up
change_column :auth_sources, :account, :string, :limit => nil
end
def self.down
change_column :auth_sources, :account, :string, :limit => 60
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddRoleTrackerOldStatusIndexToWorkflows < ActiveRecord::Migration
def self.up
add_index :workflows, [:role_id, :tracker_id, :old_status_id], :name => :wkfs_role_tracker_old_status
end
def self.down
remove_index(:workflows, :name => :wkfs_role_tracker_old_status); rescue
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddCustomFieldsSearchable < ActiveRecord::Migration
def self.up
add_column :custom_fields, :searchable, :boolean, :default => false
end
def self.down
remove_column :custom_fields, :searchable
end
end

@ -1,20 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeProjectsDescriptionToText < ActiveRecord::Migration
def self.up
change_column :projects, :description, :text, :null => true, :default => nil
end
def self.down
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddCustomFieldsDefaultValue < ActiveRecord::Migration
def self.up
add_column :custom_fields, :default_value, :text
end
def self.down
remove_column :custom_fields, :default_value
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddAttachmentsDescription < ActiveRecord::Migration
def self.up
add_column :attachments, :description, :string
end
def self.down
remove_column :attachments, :description
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeVersionsNameLimit < ActiveRecord::Migration
def self.up
change_column :versions, :name, :string, :limit => nil
end
def self.down
change_column :versions, :name, :string, :limit => 30
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeChangesetsRevisionToString < ActiveRecord::Migration
def self.up
change_column :changesets, :revision, :string, :null => false
end
def self.down
change_column :changesets, :revision, :integer, :null => false
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeChangesFromRevisionToString < ActiveRecord::Migration
def self.up
change_column :changes, :from_revision, :string
end
def self.down
change_column :changes, :from_revision, :integer
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddWikiPagesProtected < ActiveRecord::Migration
def self.up
add_column :wiki_pages, :protected, :boolean, :default => false, :null => false
end
def self.down
remove_column :wiki_pages, :protected
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class ChangeProjectsHomepageLimit < ActiveRecord::Migration
def self.up
change_column :projects, :homepage, :string, :limit => nil, :default => ''
end
def self.down
change_column :projects, :homepage, :string, :limit => 60, :default => ''
end
end

@ -1,21 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddWikiPagesParentId < ActiveRecord::Migration
def self.up
add_column :wiki_pages, :parent_id, :integer, :default => nil
end
def self.down
remove_column :wiki_pages, :parent_id
end
end

@ -1,26 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddCommitAccessPermission < ActiveRecord::Migration
def self.up
Role.find(:all).select { |r| not r.builtin? }.each do |r|
r.add_permission!(:commit_access)
end
end
def self.down
Role.find(:all).select { |r| not r.builtin? }.each do |r|
r.remove_permission!(:commit_access)
end
end
end

@ -1,25 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class AddViewWikiEditsPermission < ActiveRecord::Migration
def self.up
Role.find(:all).each do |r|
r.add_permission!(:view_wiki_edits) if r.has_permission?(:view_wiki_pages)
end
end
def self.down
Role.find(:all).each do |r|
r.remove_permission!(:view_wiki_edits)
end
end
end

@ -1,27 +0,0 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class SetTopicAuthorsAsWatchers < ActiveRecord::Migration
def self.up
# Sets active users who created/replied a topic as watchers of the topic
# so that the new watch functionality at topic level doesn't affect notifications behaviour
Message.connection.execute("INSERT INTO #{Watcher.table_name} (watchable_type, watchable_id, user_id)" +
" SELECT DISTINCT 'Message', COALESCE(m.parent_id, m.id), m.author_id" +
" FROM #{Message.table_name} m, #{User.table_name} u" +
" WHERE m.author_id = u.id AND u.status = 1")
end
def self.down
# Removes all message watchers
Watcher.delete_all("watchable_type = 'Message'")
end
end

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save