coalescing_panda 4.0.4 → 4.0.5

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/coalescing_panda/canvas_batch.js.coffee +5 -7
  3. data/app/assets/stylesheets/coalescing_panda/progress.css.scss +97 -0
  4. data/app/controllers/coalescing_panda/canvas_batches_controller.rb +10 -0
  5. data/app/controllers/coalescing_panda/lti_controller.rb +2 -2
  6. data/app/controllers/coalescing_panda/oauth2_controller.rb +3 -1
  7. data/app/models/coalescing_panda/assignment.rb +2 -0
  8. data/app/models/coalescing_panda/assignment_group.rb +11 -0
  9. data/app/models/coalescing_panda/canvas_batch.rb +4 -0
  10. data/app/models/coalescing_panda/course.rb +2 -0
  11. data/app/models/coalescing_panda/group.rb +3 -2
  12. data/app/models/coalescing_panda/group_category.rb +11 -0
  13. data/app/models/coalescing_panda/lti_account.rb +1 -0
  14. data/app/models/coalescing_panda/user.rb +1 -0
  15. data/app/models/coalescing_panda/workers/course_miner.rb +132 -56
  16. data/app/models/concerns/single_table_polymorphic.rb +1 -1
  17. data/app/views/coalescing_panda/canvas_batches/_canvas_batch.html.haml +22 -10
  18. data/app/views/coalescing_panda/canvas_batches/_canvas_batch_flash.html.haml +1 -1
  19. data/config/routes.rb +3 -1
  20. data/db/migrate/20150506183335_create_coalescing_panda_assignment_groups.rb +18 -0
  21. data/db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb +5 -0
  22. data/db/migrate/20150526144713_add_account_to_canvas_batches.rb +5 -0
  23. data/db/migrate/20150602205257_add_option_to_canvas_batches.rb +5 -0
  24. data/db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb +5 -0
  25. data/db/migrate/20150709192717_add_leader_id_to_groups.rb +6 -0
  26. data/db/migrate/20150714205405_create_coalescing_panda_group_categories.rb +16 -0
  27. data/lib/coalescing_panda/bearcat_uri.rb +20 -0
  28. data/lib/coalescing_panda/controller_helpers.rb +22 -25
  29. data/lib/coalescing_panda/version.rb +1 -1
  30. data/spec/dummy/db/development.sqlite3 +0 -0
  31. data/spec/dummy/db/schema.rb +120 -82
  32. data/spec/dummy/db/test.sqlite3 +0 -0
  33. data/spec/dummy/log/development.log +628 -0
  34. data/spec/dummy/log/test.log +42958 -0
  35. data/spec/factories/assignment_groups.rb +14 -0
  36. data/spec/models/coalescing_panda/assignment_group_spec.rb +32 -0
  37. data/spec/models/coalescing_panda/assignment_spec.rb +1 -0
  38. data/spec/models/coalescing_panda/course_spec.rb +5 -0
  39. data/spec/models/coalescing_panda/workers/course_miner_spec.rb +57 -10
  40. metadata +25 -6
@@ -0,0 +1,18 @@
1
+ class CreateCoalescingPandaAssignmentGroups < ActiveRecord::Migration
2
+ def change
3
+ create_table :coalescing_panda_assignment_groups do |t|
4
+ t.belongs_to :coalescing_panda_course, null: false
5
+ t.belongs_to :context, polymorphic: true
6
+ t.string :canvas_assignment_group_id
7
+ t.string :name
8
+ t.integer :position
9
+ t.float :group_weight
10
+ t.string :workflow_state
11
+
12
+ t.timestamps
13
+ end
14
+
15
+ add_index :coalescing_panda_assignment_groups, [:coalescing_panda_course_id, :canvas_assignment_group_id], name: :index_assignment_group_course, unique: true
16
+ add_index :coalescing_panda_assignment_groups, [:canvas_assignment_group_id, :context_id, :context_type], name: :index_assignment_group_context, unique: true
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ class AddAssignmentGroupIdToAssignments < ActiveRecord::Migration
2
+ def change
3
+ add_column :coalescing_panda_assignments, :coalescing_panda_assignment_group_id, :integer
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddAccountToCanvasBatches < ActiveRecord::Migration
2
+ def change
3
+ add_column :coalescing_panda_canvas_batches, :coalescing_panda_lti_account_id, :integer, index: true
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddOptionToCanvasBatches < ActiveRecord::Migration
2
+ def change
3
+ add_column :coalescing_panda_canvas_batches, :options, :text
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddGroupModeratorToGroupMemberships < ActiveRecord::Migration
2
+ def change
3
+ add_column :coalescing_panda_group_memberships, :moderator, :boolean
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class AddLeaderIdToGroups < ActiveRecord::Migration
2
+ def change
3
+ add_column :coalescing_panda_groups, :leader_id, :integer
4
+ add_foreign_key :coalescing_panda_groups, :coalescing_panda_users, column: :leader_id, primary_key: "id"
5
+ end
6
+ end
@@ -0,0 +1,16 @@
1
+ class CreateCoalescingPandaGroupCategories < ActiveRecord::Migration
2
+ def change
3
+ create_table :coalescing_panda_group_categories do |t|
4
+ t.belongs_to :context, polymorphic: true
5
+ t.string :context_type
6
+ t.integer :canvas_group_category_id
7
+ t.string :name
8
+
9
+ t.timestamps
10
+ end
11
+ add_index :coalescing_panda_group_categories, [:context_id, :context_type], name: :index_group_categories_context_and_context_type
12
+
13
+ add_column :coalescing_panda_assignments, :coalescing_panda_group_category_id, :integer
14
+ add_column :coalescing_panda_groups, :coalescing_panda_group_category_id, :integer
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ class CoalescingPanda::BearcatUri
2
+ attr_accessor :uri
3
+
4
+ def initialize(uri)
5
+ Rails.logger.info "Parsing Bearcat URI: #{uri}"
6
+ @uri = URI.parse(uri)
7
+ end
8
+
9
+ def api_domain
10
+ uri.port.present? ? "#{uri.host}:#{uri.port.to_s}" : uri.host
11
+ end
12
+
13
+ def scheme
14
+ [uri.scheme, '://'].join
15
+ end
16
+
17
+ def prefix
18
+ [scheme, api_domain].join
19
+ end
20
+ end
@@ -7,27 +7,21 @@ module CoalescingPanda
7
7
  if lti_authorize!(*roles)
8
8
  user_id = params['user_id']
9
9
  launch_presentation_return_url = @lti_account.settings[:launch_presentation_return_url] || params['launch_presentation_return_url']
10
- uri = URI.parse(launch_presentation_return_url)
11
- api_domain = uri.host
12
- api_domain = "#{api_domain}:#{uri.port.to_s}" if uri.port
13
- scheme = uri.scheme + '://'
14
- @lti_params = params.to_hash
15
- session['user_id'] = user_id
16
- session['uri'] = launch_presentation_return_url
17
- session['lis_person_sourcedid'] = params['lis_person_sourcedid']
18
- session['oauth_consumer_key'] = params['oauth_consumer_key']
19
- session['custom_canvas_account_id'] = params['custom_canvas_account_id']
10
+ launch_presentation_return_url = [BearcatUri.new(request.env["HTTP_REFERER"]).prefix, launch_presentation_return_url].join unless launch_presentation_return_url.include?('http')
11
+ uri = BearcatUri.new(launch_presentation_return_url)
12
+ set_session(launch_presentation_return_url)
20
13
 
21
- if token = CanvasApiAuth.where('user_id = ? and api_domain = ?', user_id, api_domain).pluck(:api_token).first
22
- @client = Bearcat::Client.new(token: token, prefix: scheme+api_domain)
14
+ if token = CanvasApiAuth.where('user_id = ? and api_domain = ?', user_id, uri.api_domain).pluck(:api_token).first
15
+ @client = Bearcat::Client.new(token: token, prefix: uri.prefix)
23
16
  elsif @lti_account = params['oauth_consumer_key'] && LtiAccount.find_by_key(params['oauth_consumer_key'])
24
17
  client_id = @lti_account.oauth2_client_id
25
- client = Bearcat::Client.new(prefix: scheme+api_domain)
18
+ client = Bearcat::Client.new(prefix: uri.prefix)
26
19
  session['state'] = SecureRandom.hex(32)
27
- @canvas_url = client.auth_redirect_url(client_id,
28
- coalescing_panda.oauth2_redirect_url({key: params['oauth_consumer_key'],
29
- user_id: user_id, api_domain: api_domain, state: session['state']}))
20
+ redirect_url = [coalescing_panda_url, coalescing_panda.oauth2_redirect_path({key: params['oauth_consumer_key'], user_id: user_id, api_domain: uri.api_domain, state: session['state']})].join
21
+ @canvas_url = client.auth_redirect_url(client_id, redirect_url)
22
+
30
23
  #delete the added params so the original oauth sig still works
24
+ @lti_params = params.to_hash
31
25
  @lti_params.delete('action')
32
26
  @lti_params.delete('controller')
33
27
  render 'coalescing_panda/oauth2/oauth2', layout: 'coalescing_panda/application'
@@ -35,6 +29,14 @@ module CoalescingPanda
35
29
  end
36
30
  end
37
31
 
32
+ def set_session(launch_presentation_return_url)
33
+ session['user_id'] = params['user_id']
34
+ session['uri'] = launch_presentation_return_url
35
+ session['lis_person_sourcedid'] = params['lis_person_sourcedid']
36
+ session['oauth_consumer_key'] = params['oauth_consumer_key']
37
+ session['custom_canvas_account_id'] = params['custom_canvas_account_id']
38
+ end
39
+
38
40
  def have_session?
39
41
  if params['tool_consumer_instance_guid'] && session['user_id'] != params['user_id']
40
42
  reset_session
@@ -43,12 +45,9 @@ module CoalescingPanda
43
45
  end
44
46
 
45
47
  if (session['user_id'] && session['uri'])
46
- uri = URI.parse(session['uri'])
47
- api_domain = uri.host
48
- api_domain = "#{api_domain}:#{uri.port.to_s}" if uri.port
49
- scheme = uri.scheme + '://'
50
- token = CanvasApiAuth.where('user_id = ? and api_domain = ?', session['user_id'], api_domain).pluck(:api_token).first
51
- @client = Bearcat::Client.new(token: token, prefix: scheme+api_domain) if token
48
+ uri = BearcatUri.new(session['uri'])
49
+ token = CanvasApiAuth.where('user_id = ? and api_domain = ?', session['user_id'], uri.api_domain).pluck(:api_token).first
50
+ @client = Bearcat::Client.new(token: token, prefix: uri.prefix) if token
52
51
  end
53
52
 
54
53
  @lti_account = LtiAccount.find_by_key(session['oauth_consumer_key']) if session['oauth_consumer_key']
@@ -67,9 +66,7 @@ module CoalescingPanda
67
66
  logger.info 'not authorized on roles' if !authorized
68
67
  authorized = authorized && @lti_account.validate_nonce(params['oauth_nonce'], DateTime.strptime(params['oauth_timestamp'], '%s'))
69
68
  logger.info 'not authorized on nonce' if !authorized
70
- if !authorized
71
- render :text => 'Invalid Credentials, please contact your Administrator.', :status => :unauthorized
72
- end
69
+ render :text => 'Invalid Credentials, please contact your Administrator.', :status => :unauthorized unless authorized
73
70
  authorized
74
71
  end
75
72
 
@@ -1,3 +1,3 @@
1
1
  module CoalescingPanda
2
- VERSION = '4.0.4'
2
+ VERSION = '4.0.5'
3
3
  end
Binary file
@@ -11,14 +11,30 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20150210180516) do
14
+ ActiveRecord::Schema.define(version: 20150714205405) do
15
15
 
16
- create_table "coalescing_panda_assignments", force: true do |t|
17
- t.integer "coalescing_panda_course_id", null: false
16
+ create_table "coalescing_panda_assignment_groups", force: :cascade do |t|
17
+ t.integer "coalescing_panda_course_id", null: false
18
+ t.integer "context_id"
19
+ t.string "context_type"
20
+ t.string "canvas_assignment_group_id"
18
21
  t.string "name"
19
- t.text "description"
20
- t.string "canvas_assignment_id", null: false
22
+ t.integer "position"
23
+ t.float "group_weight"
21
24
  t.string "workflow_state"
25
+ t.datetime "created_at"
26
+ t.datetime "updated_at"
27
+ end
28
+
29
+ add_index "coalescing_panda_assignment_groups", ["canvas_assignment_group_id", "context_id", "context_type"], name: "index_assignment_group_context", unique: true
30
+ add_index "coalescing_panda_assignment_groups", ["coalescing_panda_course_id", "canvas_assignment_group_id"], name: "index_assignment_group_course", unique: true
31
+
32
+ create_table "coalescing_panda_assignments", force: :cascade do |t|
33
+ t.integer "coalescing_panda_course_id", null: false
34
+ t.string "name", limit: 255
35
+ t.text "description"
36
+ t.string "canvas_assignment_id", limit: 255, null: false
37
+ t.string "workflow_state", limit: 255
22
38
  t.float "points_possible"
23
39
  t.datetime "due_at"
24
40
  t.datetime "unlock_at"
@@ -29,38 +45,42 @@ ActiveRecord::Schema.define(version: 20150210180516) do
29
45
  t.integer "group_category_id"
30
46
  t.boolean "grade_group_students_individually"
31
47
  t.boolean "published"
48
+ t.integer "coalescing_panda_assignment_group_id"
49
+ t.integer "coalescing_panda_group_category_id"
32
50
  end
33
51
 
34
52
  add_index "coalescing_panda_assignments", ["coalescing_panda_course_id", "canvas_assignment_id"], name: "index_assignments_course", unique: true
35
53
 
36
- create_table "coalescing_panda_canvas_api_auths", force: true do |t|
37
- t.string "user_id"
38
- t.string "api_domain"
39
- t.string "api_token"
54
+ create_table "coalescing_panda_canvas_api_auths", force: :cascade do |t|
55
+ t.string "user_id", limit: 255
56
+ t.string "api_domain", limit: 255
57
+ t.string "api_token", limit: 255
40
58
  t.datetime "created_at"
41
59
  t.datetime "updated_at"
42
60
  end
43
61
 
44
- create_table "coalescing_panda_canvas_batches", force: true do |t|
45
- t.float "percent_complete", default: 0.0
46
- t.string "status"
62
+ create_table "coalescing_panda_canvas_batches", force: :cascade do |t|
63
+ t.float "percent_complete", default: 0.0
64
+ t.string "status", limit: 255
47
65
  t.text "message"
48
66
  t.datetime "created_at"
49
67
  t.datetime "updated_at"
50
68
  t.integer "context_id"
51
- t.string "context_type"
69
+ t.string "context_type", limit: 255
70
+ t.integer "coalescing_panda_lti_account_id"
71
+ t.text "options"
52
72
  end
53
73
 
54
- create_table "coalescing_panda_courses", force: true do |t|
55
- t.integer "coalescing_panda_lti_account_id", null: false
74
+ create_table "coalescing_panda_courses", force: :cascade do |t|
75
+ t.integer "coalescing_panda_lti_account_id", null: false
56
76
  t.integer "coalescing_panda_term_id"
57
- t.string "name"
58
- t.string "canvas_course_id", null: false
59
- t.string "sis_id"
77
+ t.string "name", limit: 255
78
+ t.string "canvas_course_id", limit: 255, null: false
79
+ t.string "sis_id", limit: 255
60
80
  t.datetime "start_at"
61
81
  t.datetime "conclude_at"
62
- t.string "workflow_state"
63
- t.string "course_code"
82
+ t.string "workflow_state", limit: 255
83
+ t.string "course_code", limit: 255
64
84
  t.datetime "created_at"
65
85
  t.datetime "updated_at"
66
86
  end
@@ -69,13 +89,13 @@ ActiveRecord::Schema.define(version: 20150210180516) do
69
89
  add_index "coalescing_panda_courses", ["coalescing_panda_term_id", "canvas_course_id"], name: "index_courses_term", unique: true
70
90
  add_index "coalescing_panda_courses", ["sis_id"], name: "index_coalescing_panda_courses_on_sis_id"
71
91
 
72
- create_table "coalescing_panda_enrollments", force: true do |t|
73
- t.integer "coalescing_panda_user_id", null: false
74
- t.integer "coalescing_panda_section_id", null: false
75
- t.string "workflow_state"
76
- t.string "sis_id"
77
- t.string "canvas_enrollment_id", null: false
78
- t.string "enrollment_type"
92
+ create_table "coalescing_panda_enrollments", force: :cascade do |t|
93
+ t.integer "coalescing_panda_user_id", null: false
94
+ t.integer "coalescing_panda_section_id", null: false
95
+ t.string "workflow_state", limit: 255
96
+ t.string "sis_id", limit: 255
97
+ t.string "canvas_enrollment_id", limit: 255, null: false
98
+ t.string "enrollment_type", limit: 255
79
99
  t.datetime "start_at"
80
100
  t.datetime "end_at"
81
101
  t.datetime "created_at"
@@ -85,51 +105,69 @@ ActiveRecord::Schema.define(version: 20150210180516) do
85
105
  add_index "coalescing_panda_enrollments", ["coalescing_panda_user_id", "coalescing_panda_section_id", "enrollment_type"], name: "index_enrollments_user_and_section", unique: true
86
106
  add_index "coalescing_panda_enrollments", ["sis_id"], name: "index_coalescing_panda_enrollments_on_sis_id"
87
107
 
88
- create_table "coalescing_panda_group_memberships", force: true do |t|
108
+ create_table "coalescing_panda_group_categories", force: :cascade do |t|
109
+ t.integer "context_id"
110
+ t.string "context_type"
111
+ t.integer "canvas_group_category_id"
112
+ t.string "name"
113
+ t.datetime "created_at"
114
+ t.datetime "updated_at"
115
+ end
116
+
117
+ add_index "coalescing_panda_group_categories", ["context_id", "context_type"], name: "index_group_categories_context_and_context_type"
118
+
119
+ create_table "coalescing_panda_group_memberships", force: :cascade do |t|
89
120
  t.integer "coalescing_panda_group_id"
90
121
  t.integer "coalescing_panda_user_id"
91
- t.string "canvas_group_membership_id"
92
- t.string "workflow_state"
122
+ t.string "canvas_group_membership_id", limit: 255
123
+ t.string "workflow_state", limit: 255
93
124
  t.datetime "created_at"
94
125
  t.datetime "updated_at"
126
+ t.boolean "moderator"
95
127
  end
96
128
 
97
- create_table "coalescing_panda_groups", force: true do |t|
129
+ add_index "coalescing_panda_group_memberships", ["coalescing_panda_group_id", "coalescing_panda_user_id"], name: "index_group_memberships_user_and_group", unique: true
130
+
131
+ create_table "coalescing_panda_groups", force: :cascade do |t|
98
132
  t.integer "context_id"
99
- t.string "context_type"
100
- t.string "description"
101
- t.string "group_category_id"
102
- t.string "canvas_group_id"
103
- t.string "name"
133
+ t.string "context_type", limit: 255
134
+ t.string "description", limit: 255
135
+ t.string "group_category_id", limit: 255
136
+ t.string "canvas_group_id", limit: 255
137
+ t.string "name", limit: 255
104
138
  t.integer "members_count"
105
139
  t.datetime "created_at"
106
140
  t.datetime "updated_at"
141
+ t.integer "leader_id"
142
+ t.integer "coalescing_panda_group_category_id"
107
143
  end
108
144
 
109
- create_table "coalescing_panda_lti_accounts", force: true do |t|
110
- t.string "name"
111
- t.string "key"
112
- t.string "secret"
113
- t.string "oauth2_client_id"
114
- t.string "oauth2_client_key"
115
- t.string "canvas_account_id"
145
+ add_index "coalescing_panda_groups", ["context_id", "canvas_group_id"], name: "index_groups_context_and_group_id", unique: true
146
+
147
+ create_table "coalescing_panda_lti_accounts", force: :cascade do |t|
148
+ t.string "name", limit: 255
149
+ t.string "key", limit: 255
150
+ t.string "secret", limit: 255
151
+ t.string "oauth2_client_id", limit: 255
152
+ t.string "oauth2_client_key", limit: 255
153
+ t.string "canvas_account_id", limit: 255
116
154
  t.text "settings"
117
155
  t.datetime "created_at"
118
156
  t.datetime "updated_at"
119
157
  end
120
158
 
121
- create_table "coalescing_panda_lti_nonces", force: true do |t|
159
+ create_table "coalescing_panda_lti_nonces", force: :cascade do |t|
122
160
  t.integer "coalescing_panda_lti_account_id"
123
- t.string "nonce"
161
+ t.string "nonce", limit: 255
124
162
  t.datetime "timestamp"
125
163
  end
126
164
 
127
- create_table "coalescing_panda_sections", force: true do |t|
128
- t.integer "coalescing_panda_course_id", null: false
129
- t.string "name"
130
- t.string "canvas_section_id", null: false
131
- t.string "sis_id"
132
- t.string "workflow_state"
165
+ create_table "coalescing_panda_sections", force: :cascade do |t|
166
+ t.integer "coalescing_panda_course_id", null: false
167
+ t.string "name", limit: 255
168
+ t.string "canvas_section_id", limit: 255, null: false
169
+ t.string "sis_id", limit: 255
170
+ t.string "workflow_state", limit: 255
133
171
  t.datetime "start_at"
134
172
  t.datetime "end_at"
135
173
  t.datetime "created_at"
@@ -139,22 +177,22 @@ ActiveRecord::Schema.define(version: 20150210180516) do
139
177
  add_index "coalescing_panda_sections", ["coalescing_panda_course_id", "canvas_section_id"], name: "index_sections_course", unique: true
140
178
  add_index "coalescing_panda_sections", ["sis_id"], name: "index_coalescing_panda_sections_on_sis_id"
141
179
 
142
- create_table "coalescing_panda_sessions", force: true do |t|
143
- t.string "token"
180
+ create_table "coalescing_panda_sessions", force: :cascade do |t|
181
+ t.string "token", limit: 255
144
182
  t.text "data"
145
183
  t.datetime "created_at"
146
184
  t.datetime "updated_at"
147
185
  end
148
186
 
149
- create_table "coalescing_panda_submissions", force: true do |t|
150
- t.integer "coalescing_panda_user_id", null: false
151
- t.integer "coalescing_panda_assignment_id", null: false
152
- t.string "url"
153
- t.string "grade"
154
- t.string "score"
187
+ create_table "coalescing_panda_submissions", force: :cascade do |t|
188
+ t.integer "coalescing_panda_user_id", null: false
189
+ t.integer "coalescing_panda_assignment_id", null: false
190
+ t.string "url", limit: 255
191
+ t.string "grade", limit: 255
192
+ t.string "score", limit: 255
155
193
  t.datetime "submitted_at"
156
- t.string "workflow_state"
157
- t.string "canvas_submission_id", null: false
194
+ t.string "workflow_state", limit: 255
195
+ t.string "canvas_submission_id", limit: 255, null: false
158
196
  t.datetime "created_at"
159
197
  t.datetime "updated_at"
160
198
  end
@@ -162,15 +200,15 @@ ActiveRecord::Schema.define(version: 20150210180516) do
162
200
  add_index "coalescing_panda_submissions", ["canvas_submission_id"], name: "index_coalescing_panda_submissions_on_canvas_submission_id"
163
201
  add_index "coalescing_panda_submissions", ["coalescing_panda_user_id", "coalescing_panda_assignment_id", "canvas_submission_id"], name: "index_submissions_user_and_assignment", unique: true
164
202
 
165
- create_table "coalescing_panda_terms", force: true do |t|
166
- t.integer "coalescing_panda_lti_account_id", null: false
167
- t.string "name"
168
- t.string "code"
169
- t.string "sis_id"
170
- t.string "canvas_term_id", null: false
203
+ create_table "coalescing_panda_terms", force: :cascade do |t|
204
+ t.integer "coalescing_panda_lti_account_id", null: false
205
+ t.string "name", limit: 255
206
+ t.string "code", limit: 255
207
+ t.string "sis_id", limit: 255
208
+ t.string "canvas_term_id", limit: 255, null: false
171
209
  t.datetime "start_at"
172
210
  t.datetime "end_at"
173
- t.string "workflow_state"
211
+ t.string "workflow_state", limit: 255
174
212
  t.datetime "created_at"
175
213
  t.datetime "updated_at"
176
214
  end
@@ -178,14 +216,14 @@ ActiveRecord::Schema.define(version: 20150210180516) do
178
216
  add_index "coalescing_panda_terms", ["canvas_term_id", "coalescing_panda_lti_account_id"], name: "index_terms_account", unique: true
179
217
  add_index "coalescing_panda_terms", ["sis_id"], name: "index_coalescing_panda_terms_on_sis_id"
180
218
 
181
- create_table "coalescing_panda_users", force: true do |t|
182
- t.integer "coalescing_panda_lti_account_id", null: false
183
- t.string "name"
184
- t.string "email"
185
- t.string "roles"
186
- t.string "workflow_state"
187
- t.string "sis_id"
188
- t.string "canvas_user_id", null: false
219
+ create_table "coalescing_panda_users", force: :cascade do |t|
220
+ t.integer "coalescing_panda_lti_account_id", null: false
221
+ t.string "name", limit: 255
222
+ t.string "email", limit: 255
223
+ t.string "roles", limit: 255
224
+ t.string "workflow_state", limit: 255
225
+ t.string "sis_id", limit: 255
226
+ t.string "canvas_user_id", limit: 255, null: false
189
227
  t.datetime "created_at"
190
228
  t.datetime "updated_at"
191
229
  end
@@ -193,16 +231,16 @@ ActiveRecord::Schema.define(version: 20150210180516) do
193
231
  add_index "coalescing_panda_users", ["coalescing_panda_lti_account_id", "canvas_user_id"], name: "index_users_account", unique: true
194
232
  add_index "coalescing_panda_users", ["sis_id"], name: "index_coalescing_panda_users_on_sis_id"
195
233
 
196
- create_table "delayed_jobs", force: true do |t|
197
- t.integer "priority", default: 0, null: false
198
- t.integer "attempts", default: 0, null: false
199
- t.text "handler", null: false
234
+ create_table "delayed_jobs", force: :cascade do |t|
235
+ t.integer "priority", default: 0, null: false
236
+ t.integer "attempts", default: 0, null: false
237
+ t.text "handler", null: false
200
238
  t.text "last_error"
201
239
  t.datetime "run_at"
202
240
  t.datetime "locked_at"
203
241
  t.datetime "failed_at"
204
- t.string "locked_by"
205
- t.string "queue"
242
+ t.string "locked_by", limit: 255
243
+ t.string "queue", limit: 255
206
244
  t.datetime "created_at"
207
245
  t.datetime "updated_at"
208
246
  end
Binary file