rails_db_admin 2.0.4 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. data/app/models/report.rb +3 -0
  2. data/lib/rails_db_admin/connection_handler.rb +11 -13
  3. data/lib/rails_db_admin/version.rb +2 -2
  4. data/lib/tasks/rails_db_admin_tasks.rake +4 -4
  5. data/spec/controllers/rails_db_admin/erp_app/desktop/base_controller_spec.rb +8 -8
  6. data/spec/controllers/rails_db_admin/erp_app/desktop/queries_controller_spec.rb +4 -3
  7. data/spec/dummy/config/application.rb +6 -0
  8. data/spec/dummy/config/environments/spec.rb +3 -0
  9. data/spec/dummy/db/data_migrations/20110109173616_create_capability_scope_types.erp_tech_svcs.rb +15 -0
  10. data/spec/dummy/db/data_migrations/20110525001935_add_usd_currency.erp_base_erp_svcs.rb +12 -0
  11. data/spec/dummy/db/data_migrations/20110608185830_create_default_dynamic_models_and_forms.erp_forms.rb +33 -0
  12. data/spec/dummy/db/data_migrations/20110609150135_add_iso_codes.erp_base_erp_svcs.rb +19 -0
  13. data/spec/dummy/db/data_migrations/20110728201729_erp_app_setup.erp_app.rb +252 -0
  14. data/spec/dummy/db/data_migrations/20110728201733_update_preferences.erp_app.rb +53 -0
  15. data/spec/dummy/db/data_migrations/20110802200222_schedule_delete_expired_sessions_job.erp_tech_svcs.rb +16 -0
  16. data/spec/dummy/db/data_migrations/20110816005525_rails_db_admin_application.rails_db_admin.rb +32 -0
  17. data/spec/dummy/db/data_migrations/20110816161238_create_desktop_app_audit_log_viewer.erp_app.rb +21 -0
  18. data/spec/dummy/db/data_migrations/20110817160743_add_file_manager_application.erp_app.rb +32 -0
  19. data/spec/dummy/db/data_migrations/20110828190913_create_desktop_app_dynamic_forms.erp_forms.rb +19 -0
  20. data/spec/dummy/db/data_migrations/20110913145838_setup_compass_ae_instance.erp_base_erp_svcs.rb +12 -0
  21. data/spec/dummy/db/data_migrations/20111108183739_add_default_capabilities.erp_app.rb +23 -0
  22. data/spec/dummy/db/data_migrations/20111108183740_add_new_contact_widgets.erp_app.rb +42 -0
  23. data/spec/dummy/db/data_migrations/20111111144706_setup_audit_log_types.erp_tech_svcs.rb +22 -0
  24. data/spec/dummy/db/data_migrations/20120109173616_create_download_capability_type.erp_tech_svcs.rb +14 -0
  25. data/spec/dummy/db/data_migrations/20120229160222_add_userinfo_widget.erp_app.rb +29 -0
  26. data/spec/dummy/db/data_migrations/20120405193721_create_party_and_role_type_for_communication_events.erp_app.rb +11 -0
  27. data/spec/dummy/db/data_migrations/20120411180756_create_user_management_mobile_application.erp_app.rb +19 -0
  28. data/spec/dummy/db/data_migrations/20120418164215_create_configuration_management_desktop_application.erp_app.rb +23 -0
  29. data/spec/dummy/db/data_migrations/20120824013449_create_ticket_form.erp_forms.rb +67 -0
  30. data/spec/dummy/db/data_migrations/20121026013449_update_ticket_form.erp_forms.rb +65 -0
  31. data/spec/dummy/db/data_migrations/20121026191738_update_contact_form.erp_forms.rb +27 -0
  32. data/spec/dummy/db/data_migrations/20121116155018_create_group_relationship_and_role_types.erp_tech_svcs.rb +20 -0
  33. data/spec/dummy/db/data_migrations/20121130201859_upgrade_remove_system_mgmt_app.erp_app.rb +16 -0
  34. data/spec/dummy/db/data_migrations/20121130212146_note_capabilities.erp_tech_svcs.rb +24 -0
  35. data/spec/dummy/db/data_migrations/20121218175028_create_security_management_desktop_application.erp_app.rb +23 -0
  36. data/spec/dummy/db/migrate/20121219201515_base_erp_services.erp_base_erp_svcs.rb +461 -0
  37. data/spec/dummy/db/migrate/20121219201516_base_tech_services.erp_tech_svcs.rb +255 -0
  38. data/spec/dummy/db/migrate/20121219201517_create_has_attribute_tables.erp_tech_svcs.rb +39 -0
  39. data/spec/dummy/db/migrate/20121219201518_base_app_framework.erp_app.rb +276 -0
  40. data/spec/dummy/db/migrate/20121219201519_dynamic_forms.erp_forms.rb +95 -0
  41. data/spec/dummy/db/migrate/20121219201520_create_tickets.erp_forms.rb +19 -0
  42. data/spec/dummy/db/migrate/20121219201521_upgrade_dynamic_forms_table.erp_forms.rb +32 -0
  43. data/spec/dummy/db/migrate/20121227215524_add_reports.rails_db_admin.rb +21 -0
  44. data/spec/dummy/db/migrate/20130107181642_create_groups.erp_tech_svcs.rb +19 -0
  45. data/spec/dummy/db/migrate/20130107181643_upgrade_security.erp_tech_svcs.rb +54 -0
  46. data/spec/dummy/db/migrate/20130107181644_upgrade_security2.erp_tech_svcs.rb +270 -0
  47. data/spec/dummy/db/schema.rb +888 -0
  48. data/spec/dummy/db/spec.sqlite3 +0 -0
  49. data/spec/dummy/log/spec.log +38042 -0
  50. data/spec/lib/rails_db_admin/extjs/json_column_builder_spec.rb +2 -3
  51. data/spec/lib/rails_db_admin/table_support_spec.rb +1 -1
  52. data/spec/spec_helper.rb +18 -15
  53. metadata +107 -9
@@ -0,0 +1,95 @@
1
+ # This migration comes from erp_forms (originally 20110530193446)
2
+ class DynamicForms < ActiveRecord::Migration
3
+ def self.up
4
+ unless table_exists?(:dynamic_form_models)
5
+ create_table :dynamic_form_models do |t|
6
+ t.string :model_name
7
+ t.boolean :show_in_multitask, :default => false
8
+ t.boolean :allow_comments, :default => true
9
+ t.boolean :allow_files, :default => true
10
+ t.string :file_security_default, :default => 'private'
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+
16
+ unless table_exists?(:dynamic_form_documents)
17
+ create_table :dynamic_form_documents do |t|
18
+ t.integer :dynamic_form_model_id
19
+ t.string :type
20
+
21
+ t.timestamps
22
+ end
23
+
24
+ add_index :dynamic_form_documents, :dynamic_form_model_id
25
+ add_index :dynamic_form_documents, :type
26
+ end
27
+
28
+ unless table_exists?(:dynamic_forms)
29
+ create_table :dynamic_forms do |t|
30
+ t.string :description
31
+ t.text :definition
32
+ t.integer :dynamic_form_model_id
33
+ t.string :model_name
34
+ t.string :internal_identifier
35
+ t.boolean :default
36
+ t.string :widget_action, :default => 'save'
37
+ t.string :widget_email_recipients
38
+ t.boolean :focus_first_field, :default => true
39
+ t.boolean :submit_empty_text, :default => false
40
+ t.string :msg_target, :default => 'qtip'
41
+ t.string :submit_button_label, :default => 'Submit'
42
+ t.string :cancel_button_label, :default => 'Cancel'
43
+ t.text :comment
44
+
45
+ t.integer :created_by_id
46
+ t.integer :updated_by_id
47
+
48
+ t.timestamps
49
+ end
50
+
51
+ add_index :dynamic_forms, :created_by_id
52
+ add_index :dynamic_forms, :updated_by_id
53
+ add_index :dynamic_forms, :dynamic_form_model_id
54
+ add_index :dynamic_forms, :model_name
55
+ add_index :dynamic_forms, :internal_identifier
56
+ end
57
+
58
+ unless table_exists?(:dynamic_data)
59
+ create_table :dynamic_data do |t|
60
+ t.string :reference_type
61
+ t.integer :reference_id
62
+ t.text :dynamic_attributes
63
+
64
+ t.integer :created_with_form_id
65
+ t.integer :updated_with_form_id
66
+
67
+ t.integer :created_by_id
68
+ t.integer :updated_by_id
69
+
70
+ t.timestamps
71
+ end
72
+
73
+ add_index :dynamic_data, :created_with_form_id
74
+ add_index :dynamic_data, :updated_with_form_id
75
+ add_index :dynamic_data, :created_by_id
76
+ add_index :dynamic_data, :updated_by_id
77
+ add_index :dynamic_data, :reference_type
78
+ add_index :dynamic_data, :reference_id
79
+ end
80
+
81
+ end
82
+
83
+ def self.down
84
+ [ :dynamic_form_models,
85
+ :dynamic_form_documents,
86
+ :dynamic_forms,
87
+ :dynamic_data
88
+ ].each do |tbl|
89
+ if table_exists?(tbl)
90
+ drop_table tbl
91
+ end
92
+ end
93
+
94
+ end
95
+ end
@@ -0,0 +1,19 @@
1
+ # This migration comes from erp_forms (originally 20120824012520)
2
+ class CreateTickets < ActiveRecord::Migration
3
+
4
+ def up
5
+ unless table_exists?(:tickets)
6
+ create_table :tickets do |t|
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ end
12
+
13
+ def down
14
+ if table_exists?(:tickets)
15
+ drop_table :tickets
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,32 @@
1
+ # This migration comes from erp_forms (originally 20121007022323)
2
+ class UpgradeDynamicFormsTable < ActiveRecord::Migration
3
+ def self.up
4
+ add_column :dynamic_form_models, :show_in_multitask, :boolean, :default => false unless columns(:dynamic_form_models).collect {|c| c.name}.include?('show_in_multitask')
5
+ add_column :dynamic_form_models, :allow_comments, :boolean, :default => true unless columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_comments')
6
+ add_column :dynamic_form_models, :allow_files, :boolean, :default => true unless columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_files')
7
+ add_column :dynamic_form_models, :file_security_default, :string, :default => 'private' unless columns(:dynamic_form_models).collect {|c| c.name}.include?('file_security_default')
8
+ add_column :dynamic_forms, :widget_action, :string, :default => 'save' unless columns(:dynamic_forms).collect {|c| c.name}.include?('widget_action')
9
+ add_column :dynamic_forms, :widget_email_recipients, :string unless columns(:dynamic_forms).collect {|c| c.name}.include?('widget_email_recipients')
10
+ add_column :dynamic_forms, :focus_first_field, :boolean, :default => true unless columns(:dynamic_forms).collect {|c| c.name}.include?('focus_first_field')
11
+ add_column :dynamic_forms, :submit_empty_text, :boolean, :default => false unless columns(:dynamic_forms).collect {|c| c.name}.include?('submit_empty_text')
12
+ add_column :dynamic_forms, :msg_target, :string, :default => 'qtip' unless columns(:dynamic_forms).collect {|c| c.name}.include?('msg_target')
13
+ add_column :dynamic_forms, :submit_button_label, :string, :default => 'Submit' unless columns(:dynamic_forms).collect {|c| c.name}.include?('submit_button_label')
14
+ add_column :dynamic_forms, :cancel_button_label, :string, :default => 'Cancel' unless columns(:dynamic_forms).collect {|c| c.name}.include?('cancel_button_label')
15
+ add_column :dynamic_forms, :comment, :text unless columns(:dynamic_forms).collect {|c| c.name}.include?('comment')
16
+ end
17
+
18
+ def self.down
19
+ remove_column :dynamic_form_models, :show_in_multitask if columns(:dynamic_form_models).collect {|c| c.name}.include?('show_in_multitask')
20
+ remove_column :dynamic_form_models, :file_security_default if columns(:dynamic_form_models).collect {|c| c.name}.include?('file_security_default')
21
+ remove_column :dynamic_form_models, :allow_files if columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_files')
22
+ remove_column :dynamic_form_models, :allow_comments if columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_comments')
23
+ remove_column :dynamic_forms, :widget_action if columns(:dynamic_forms).collect {|c| c.name}.include?('widget_action')
24
+ remove_column :dynamic_forms, :widget_email_recipients if columns(:dynamic_forms).collect {|c| c.name}.include?('widget_email_recipients')
25
+ remove_column :dynamic_forms, :focus_first_field if columns(:dynamic_forms).collect {|c| c.name}.include?('focus_first_field')
26
+ remove_column :dynamic_forms, :submit_empty_text if columns(:dynamic_forms).collect {|c| c.name}.include?('submit_empty_text')
27
+ remove_column :dynamic_forms, :msg_target if columns(:dynamic_forms).collect {|c| c.name}.include?('msg_target')
28
+ remove_column :dynamic_forms, :submit_button_label if columns(:dynamic_forms).collect {|c| c.name}.include?('submit_button_label')
29
+ remove_column :dynamic_forms, :cancel_button_label if columns(:dynamic_forms).collect {|c| c.name}.include?('cancel_button_label')
30
+ remove_column :dynamic_forms, :comment if columns(:dynamic_forms).collect {|c| c.name}.include?('comment')
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ # This migration comes from rails_db_admin (originally 20121210160131)
2
+ class AddReports < ActiveRecord::Migration
3
+ def up
4
+ unless table_exists? :reports
5
+ create_table :reports do |t|
6
+ t.string :name
7
+ t.string :internal_identifier
8
+ t.text :template
9
+ t.text :query
10
+
11
+ t.timestamps
12
+ end
13
+ end
14
+ end
15
+
16
+ def down
17
+ if table.exists? :reports
18
+ drop_table :reports
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ # This migration comes from erp_tech_svcs (originally 20121116151510)
2
+ class CreateGroups < ActiveRecord::Migration
3
+ def self.up
4
+ unless table_exists?(:groups)
5
+ create_table :groups do |t|
6
+ t.column :description, :string
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ [ :groups ].each do |tbl|
14
+ if table_exists?(tbl)
15
+ drop_table tbl
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,54 @@
1
+ # This migration comes from erp_tech_svcs (originally 20121126171612)
2
+ class UpgradeSecurity < ActiveRecord::Migration
3
+
4
+ def self.up
5
+ unless table_exists?(:capability_accessors)
6
+ create_table :capability_accessors do |t|
7
+ t.string :capability_accessor_record_type
8
+ t.integer :capability_accessor_record_id
9
+ t.integer :capability_id
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :capability_accessors, :capability_id
14
+ add_index :capability_accessors, [:capability_accessor_record_id, :capability_accessor_record_type], :name => 'capability_accessor_record_index'
15
+ end
16
+
17
+ unless columns(:capabilities).collect {|c| c.name}.include?('scope_query')
18
+ add_column :capabilities, :description, :string
19
+ add_column :capabilities, :capability_resource_type, :string
20
+ add_column :capabilities, :capability_resource_id, :integer
21
+ add_column :capabilities, :scope_type_id, :integer
22
+ add_column :capabilities, :scope_query, :text
23
+
24
+ add_index :capabilities, :scope_type_id
25
+ add_index :capabilities, [:capability_resource_id, :capability_resource_type], :name => 'capability_resource_index'
26
+ end
27
+
28
+ unless table_exists?(:scope_types)
29
+ create_table :scope_types do |t|
30
+ t.string :description
31
+ t.string :internal_identifier
32
+ t.timestamps
33
+ end
34
+
35
+ add_index :scope_types, :internal_identifier
36
+ end
37
+
38
+ unless table_exists?(:parties_security_roles)
39
+ create_table :parties_security_roles, :id => false do |t|
40
+ t.integer :party_id
41
+ t.integer :security_role_id
42
+ end
43
+
44
+ add_index :parties_security_roles, :party_id
45
+ add_index :parties_security_roles, :security_role_id
46
+ end
47
+
48
+ rename_table :roles, :security_roles unless table_exists?(:security_roles)
49
+
50
+ end
51
+
52
+ def self.down
53
+ end
54
+ end
@@ -0,0 +1,270 @@
1
+ # This migration comes from erp_tech_svcs (originally 20121126173506)
2
+ class UpgradeSecurity2 < ActiveRecord::Migration
3
+ def self.up
4
+ if table_exists?(:secured_models)
5
+ Website.all.each do |w|
6
+ old_role_iid = "website_#{w.name.underscore.gsub("'","").gsub(",","")}_access"
7
+
8
+ r = SecurityRole.find_by_internal_identifier(old_role_iid)
9
+ unless r.nil?
10
+ r.internal_identifier = w.website_role_iid
11
+ r.save
12
+ end
13
+ end
14
+ instance = ScopeType.create(:description => 'Instance', :internal_identifier => 'instance')
15
+ class_scope_type = ScopeType.create(:description => 'Class', :internal_identifier => 'class')
16
+ ScopeType.create(:description => 'Query', :internal_identifier => 'query')
17
+
18
+ execute('BEGIN TRANSACTION')
19
+ puts "populating parties_security_roles"
20
+ sql =
21
+ "INSERT INTO parties_security_roles (
22
+ party_id,
23
+ security_role_id
24
+ )
25
+ SELECT
26
+ u.party_id AS party_id,
27
+ rsm.role_id AS security_role_id
28
+ FROM secured_models sm
29
+ JOIN roles_secured_models rsm ON sm.id=rsm.secured_model_id
30
+ JOIN users u ON sm.secured_record_id=u.id
31
+ WHERE sm.secured_record_type='User'"
32
+
33
+ execute(sql)
34
+ execute('COMMIT')
35
+
36
+ execute('BEGIN TRANSACTION')
37
+ puts "populating capabilities with secure File Assets"
38
+ sql =
39
+ "INSERT INTO capabilities (
40
+ capability_type_id,
41
+ capability_resource_type,
42
+ capability_resource_id,
43
+ scope_type_id
44
+ )
45
+ SELECT
46
+ c.capability_type_id AS capability_type_id,
47
+ 'FileAsset' AS capability_resource_type,
48
+ cm.capable_model_record_id AS capability_resource_id,
49
+ #{instance.id} AS scope_type_id
50
+ FROM capable_models AS cm
51
+ JOIN capabilities_capable_models AS ccm ON ccm.capable_model_id = cm.id
52
+ JOIN capabilities AS c ON ccm.capability_id = c.id
53
+ JOIN secured_models AS sm ON sm.secured_record_id = c.id AND sm.secured_record_type = 'Capability'
54
+ JOIN roles_secured_models AS rsm ON rsm.secured_model_id = sm.id
55
+ JOIN security_roles AS r ON r.id = rsm.role_id
56
+ WHERE cm.capable_model_record_type = 'FileAsset'"
57
+
58
+ execute(sql)
59
+ execute('COMMIT')
60
+
61
+ view = CapabilityType.find_by_internal_identifier('view')
62
+
63
+ execute('BEGIN TRANSACTION')
64
+ puts "populating capabilities with secure Website Sections"
65
+ sql =
66
+ "INSERT INTO capabilities (
67
+ capability_type_id,
68
+ capability_resource_type,
69
+ capability_resource_id,
70
+ scope_type_id
71
+ )
72
+ SELECT
73
+ #{view.id} AS capability_type_id,
74
+ 'WebsiteSection' AS capability_resource_type,
75
+ ws.id AS capability_resource_id,
76
+ #{instance.id} AS scope_type_id
77
+ FROM secured_models sm
78
+ JOIN roles_secured_models rsm ON sm.id=rsm.secured_model_id
79
+ JOIN website_sections ws ON sm.secured_record_id=ws.id
80
+ WHERE sm.secured_record_type='WebsiteSection'"
81
+
82
+ execute(sql)
83
+ execute('COMMIT')
84
+
85
+ execute('BEGIN TRANSACTION')
86
+ puts "populating capabilities with secure Website Nav Items"
87
+ sql =
88
+ "INSERT INTO capabilities (
89
+ capability_type_id,
90
+ capability_resource_type,
91
+ capability_resource_id,
92
+ scope_type_id
93
+ )
94
+ SELECT
95
+ #{view.id} AS capability_type_id,
96
+ 'WebsiteNavItem' AS capability_resource_type,
97
+ ws.id AS capability_resource_id,
98
+ #{instance.id} AS scope_type_id
99
+ FROM secured_models sm
100
+ JOIN roles_secured_models rsm ON sm.id=rsm.secured_model_id
101
+ JOIN website_sections ws ON sm.secured_record_id=ws.id
102
+ WHERE sm.secured_record_type='WebsiteNavItem'"
103
+
104
+ execute(sql)
105
+ execute('COMMIT')
106
+
107
+ # delete obsolete records: Application, Widget, dupes?
108
+ Capability.where("capability_resource_type IS NULL").delete_all
109
+
110
+ admin = SecurityRole.find_by_internal_identifier('admin')
111
+ website_author = SecurityRole.find_by_internal_identifier('website_author')
112
+ layout_author = SecurityRole.find_by_internal_identifier('layout_author')
113
+ content_author = SecurityRole.find_by_internal_identifier('content_author')
114
+ designer = SecurityRole.find_by_internal_identifier('designer')
115
+ publisher = SecurityRole.find_by_internal_identifier('publisher')
116
+
117
+ # add instance capabilities to roles
118
+ instance_capabilities = Capability.where(:scope_type_id => instance.id).all
119
+ instance_capabilities.each do |c|
120
+ case c.capability_resource_type
121
+ when 'FileAsset'
122
+ admin.add_capability(c)
123
+ website_author.add_capability(c)
124
+ content_author.add_capability(c)
125
+ if c.capability_resource.file_asset_holder_type == 'Website'
126
+ website_role = c.capability_resource.file_asset_holder.role
127
+ website_role.add_capability(c)
128
+ end
129
+ when 'WebsiteSection'
130
+ admin.add_capability(c)
131
+ website_author.add_capability(c)
132
+ website_role = c.capability_resource.website.role
133
+ website_role.add_capability(c)
134
+ when 'WebsiteNavItem'
135
+ admin.add_capability(c)
136
+ website_author.add_capability(c)
137
+ website_role = c.capability_resource.website_nav.website.role
138
+ website_role.add_capability(c)
139
+ end
140
+ end
141
+
142
+ # add knitkit class capabilities to roles
143
+ admin.add_capability('create', 'WebsiteNav')
144
+ admin.add_capability('delete', 'WebsiteNav')
145
+ admin.add_capability('edit', 'WebsiteNav')
146
+
147
+ website_author.add_capability('create', 'WebsiteNav')
148
+ website_author.add_capability('delete', 'WebsiteNav')
149
+ website_author.add_capability('edit', 'WebsiteNav')
150
+
151
+ admin.add_capability('create', 'Website')
152
+ admin.add_capability('delete', 'Website')
153
+ admin.add_capability('edit', 'Website')
154
+ admin.add_capability('import', 'Website')
155
+ admin.add_capability('publish', 'Website')
156
+ admin.add_capability('activate', 'Website')
157
+
158
+ website_author.add_capability('create', 'Website')
159
+ website_author.add_capability('delete', 'Website')
160
+ website_author.add_capability('edit', 'Website')
161
+ website_author.add_capability('import', 'Website')
162
+ publisher.add_capability('publish', 'Website')
163
+ publisher.add_capability('activate', 'Website')
164
+
165
+ admin.add_capability('create', 'WebsiteHost')
166
+ admin.add_capability('delete', 'WebsiteHost')
167
+ admin.add_capability('edit', 'WebsiteHost')
168
+
169
+ website_author.add_capability('create', 'WebsiteHost')
170
+ website_author.add_capability('delete', 'WebsiteHost')
171
+ website_author.add_capability('edit', 'WebsiteHost')
172
+
173
+ admin.add_capability('create', 'WebsiteSection')
174
+ admin.add_capability('delete', 'WebsiteSection')
175
+ admin.add_capability('edit', 'WebsiteSection')
176
+ admin.add_capability('secure', 'WebsiteSection')
177
+ admin.add_capability('unsecure', 'WebsiteSection')
178
+
179
+ website_author.add_capability('create', 'WebsiteSection')
180
+ website_author.add_capability('delete', 'WebsiteSection')
181
+ website_author.add_capability('edit', 'WebsiteSection')
182
+ website_author.add_capability('secure', 'WebsiteSection')
183
+ website_author.add_capability('unsecure', 'WebsiteSection')
184
+
185
+ admin.add_capability('create', 'WebsiteSectionLayout')
186
+ admin.add_capability('edit', 'WebsiteSectionLayout')
187
+
188
+ layout_author.add_capability('create', 'WebsiteSectionLayout')
189
+ layout_author.add_capability('edit', 'WebsiteSectionLayout')
190
+
191
+ admin.add_capability('create', 'Content')
192
+ admin.add_capability('delete', 'Content')
193
+ admin.add_capability('edit', 'Content')
194
+ admin.add_capability('publish', 'Content')
195
+ admin.add_capability('revert_version', 'Content')
196
+ admin.add_capability('add_existing', 'Content')
197
+ admin.add_capability('edit_html', 'Content')
198
+ admin.add_capability('edit_excerpt', 'Content')
199
+
200
+ content_author.add_capability('create', 'Content')
201
+ content_author.add_capability('delete', 'Content')
202
+ content_author.add_capability('edit', 'Content')
203
+ content_author.add_capability('publish', 'Content')
204
+ content_author.add_capability('revert_version', 'Content')
205
+ content_author.add_capability('add_existing', 'Content')
206
+ content_author.add_capability('edit_html', 'Content')
207
+ content_author.add_capability('edit_excerpt', 'Content')
208
+
209
+ admin.add_capability('create', 'WebsiteNavItem')
210
+ admin.add_capability('delete', 'WebsiteNavItem')
211
+ admin.add_capability('edit', 'WebsiteNavItem')
212
+ admin.add_capability('secure', 'WebsiteNavItem')
213
+ admin.add_capability('unsecure', 'WebsiteNavItem')
214
+
215
+ website_author.add_capability('create', 'WebsiteNavItem')
216
+ website_author.add_capability('delete', 'WebsiteNavItem')
217
+ website_author.add_capability('edit', 'WebsiteNavItem')
218
+ website_author.add_capability('secure', 'WebsiteNavItem')
219
+ website_author.add_capability('unsecure', 'WebsiteNavItem')
220
+
221
+ admin.add_capability('view', 'Theme')
222
+ designer.add_capability('view', 'Theme')
223
+
224
+ admin.add_capability('view', 'SiteImageAsset')
225
+ website_author.add_capability('view', 'SiteImageAsset')
226
+ content_author.add_capability('view', 'SiteImageAsset')
227
+
228
+ content_author.add_capability('view', 'GlobalImageAsset')
229
+
230
+ admin.add_capability('view', 'GlobalImageAsset')
231
+ admin.add_capability('upload', 'GlobalImageAsset')
232
+ admin.add_capability('delete', 'GlobalImageAsset')
233
+
234
+ website_author.add_capability('view', 'GlobalImageAsset')
235
+ website_author.add_capability('upload', 'GlobalImageAsset')
236
+ website_author.add_capability('delete', 'GlobalImageAsset')
237
+
238
+ admin.add_capability('view', 'SiteFileAsset')
239
+ website_author.add_capability('view', 'SiteFileAsset')
240
+ content_author.add_capability('view', 'SiteFileAsset')
241
+
242
+ content_author.add_capability('view', 'GlobalFileAsset')
243
+
244
+ admin.add_capability('view', 'GlobalFileAsset')
245
+ admin.add_capability('upload', 'GlobalFileAsset')
246
+ admin.add_capability('delete', 'GlobalFileAsset')
247
+
248
+ website_author.add_capability('view', 'GlobalFileAsset')
249
+ website_author.add_capability('upload', 'GlobalFileAsset')
250
+ website_author.add_capability('delete', 'GlobalFileAsset')
251
+
252
+ admin.add_capability('drag_item', 'WebsiteTree')
253
+ website_author.add_capability('drag_item', 'WebsiteTree')
254
+
255
+ # update capability descriptions
256
+ Capability.all.each do |c|
257
+ c.update_description
258
+ end
259
+
260
+ drop_table :capable_models
261
+ drop_table :capabilities_capable_models
262
+ drop_table :secured_models
263
+ drop_table :roles_secured_models
264
+ remove_column :capabilities, :resource
265
+ end
266
+ end
267
+
268
+ def self.down
269
+ end
270
+ end