gaku_core 0.2.4 → 0.3.0.pre.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +17 -0
  3. data/app/assets/images/elements/toolbar1.png +0 -0
  4. data/app/assets/images/icon-chair.png +0 -0
  5. data/app/models/application_record.rb +3 -0
  6. data/app/models/concerns/{enrollmentable.rb → enrollable.rb} +2 -2
  7. data/app/models/concerns/gradable.rb +2 -0
  8. data/app/models/gaku/address.rb +3 -3
  9. data/app/models/gaku/attachment.rb +4 -2
  10. data/app/models/gaku/attendance.rb +3 -3
  11. data/app/models/gaku/class_group.rb +1 -1
  12. data/app/models/gaku/contact.rb +2 -2
  13. data/app/models/gaku/course.rb +3 -3
  14. data/app/models/gaku/enrollment.rb +23 -19
  15. data/app/models/gaku/exam.rb +2 -2
  16. data/app/models/gaku/exam_portion.rb +1 -1
  17. data/app/models/gaku/exam_portion_score.rb +6 -2
  18. data/app/models/gaku/exam_session.rb +3 -3
  19. data/app/models/gaku/extracurricular_activity.rb +1 -1
  20. data/app/models/gaku/grading_method_connector.rb +3 -3
  21. data/app/models/gaku/guardian.rb +1 -1
  22. data/app/models/gaku/lesson_plan.rb +1 -1
  23. data/app/models/gaku/note.rb +1 -1
  24. data/app/models/gaku/program_specialty.rb +2 -2
  25. data/app/models/gaku/school_role.rb +1 -1
  26. data/app/models/gaku/semester.rb +1 -1
  27. data/app/models/gaku/semester_connector.rb +2 -2
  28. data/app/models/gaku/specialty.rb +1 -1
  29. data/app/models/gaku/student.rb +10 -12
  30. data/app/models/gaku/student_review.rb +3 -3
  31. data/app/models/gaku/student_specialty.rb +2 -2
  32. data/app/models/gaku/syllabus.rb +1 -1
  33. data/app/models/gaku/teacher.rb +1 -1
  34. data/config/initializers/redis.rb +6 -2
  35. data/db/default/gaku/attendance_types.rb +1 -1
  36. data/db/migrate/20120202111850_presets.rb +3 -4
  37. data/db/migrate/20131014065028_translations.rb +1 -1
  38. data/db/migrate/20131025073352_gaku_core.rb +1 -1
  39. data/db/migrate/20140128141752_change_grading_methods_arguments_field.rb +1 -1
  40. data/db/migrate/20140130182100_change_fields_external_school_record.rb +1 -1
  41. data/db/migrate/20140131113337_create_student_configs.rb +1 -1
  42. data/db/migrate/20140207093618_drop_student_configs.rb +1 -1
  43. data/db/migrate/20140213113405_create_grading_method_connectors_table.rb +1 -1
  44. data/db/migrate/20140304094422_create_gaku_exam_sessions_table.rb +1 -1
  45. data/db/migrate/20140325073941_add_time_format_24_to_presets_table.rb +1 -1
  46. data/db/migrate/20140408111314_remove_semester_join_tables.rb +1 -1
  47. data/db/migrate/20140408111358_create_semester_connectors_table.rb +1 -1
  48. data/db/migrate/20140423093155_create_enrollments_table.rb +1 -1
  49. data/db/migrate/20140423100114_clean_enrollments_join_models.rb +1 -1
  50. data/db/migrate/20140429112725_add_counters_to_enrollmentable.rb +3 -1
  51. data/db/migrate/20140604104210_rename_method_to_grading_method.rb +1 -1
  52. data/db/migrate/20140604113045_add_default_value_to_curved.rb +1 -1
  53. data/db/migrate/20140610091053_add_seat_number_to_enrollments.rb +1 -1
  54. data/db/migrate/20140701104700_change_hstore_to_string_criteria.rb +1 -1
  55. data/db/migrate/20140715135152_create_semester_attendance_table.rb +1 -1
  56. data/db/migrate/20140718105226_create_student_review_categories_table.rb +1 -1
  57. data/db/migrate/20140728121353_create_student_review_table.rb +1 -1
  58. data/db/migrate/20150213095508_improve_countries_and_states.rb +1 -1
  59. data/db/migrate/20160125194100_add_gradable_to_exam_portion_score.rb +5 -0
  60. data/db/migrate/20170509132020_change_enrollmentable_to_enrollable.rb +6 -0
  61. data/gaku_core.gemspec +37 -0
  62. data/lib/gaku/core.rb +1 -1
  63. data/lib/gaku/core/engine.rb +1 -1
  64. data/lib/gaku/grading/collection/base_method.rb +3 -2
  65. data/lib/gaku/grading/collection/calculations.rb +5 -3
  66. data/lib/gaku/grading/collection/interval.rb +2 -2
  67. data/lib/gaku/grading/collection/ordinal.rb +1 -1
  68. data/lib/gaku/grading/collection/percentage.rb +1 -1
  69. data/lib/gaku/grading/collection/score.rb +1 -1
  70. data/lib/gaku/grading/single/base_method.rb +3 -2
  71. data/lib/gaku/grading/single/calculations.rb +5 -4
  72. data/lib/gaku/grading/single/ordinal.rb +2 -3
  73. data/lib/gaku/grading/single/percentage.rb +2 -3
  74. data/lib/gaku/grading/single/score.rb +2 -3
  75. data/lib/gaku/testing/common_rake.rb +47 -6
  76. data/lib/gaku/testing/controller_helpers.rb +6 -4
  77. data/lib/gaku/testing/factories/address_factory.rb +3 -3
  78. data/lib/gaku/testing/factories/campus_factory.rb +1 -1
  79. data/lib/gaku/testing/factories/enrollment_factory.rb +1 -1
  80. data/lib/gaku/testing/factories/guardian_factory.rb +2 -2
  81. data/lib/gaku/testing/factories/program_factory.rb +1 -1
  82. data/lib/gaku/testing/factories/school_factory.rb +1 -1
  83. data/lib/gaku/testing/factories/student_factory.rb +7 -5
  84. data/lib/gaku/testing/factories/syllabus_factory.rb +1 -1
  85. data/lib/gaku/testing/factories/teacher_factory.rb +4 -4
  86. data/lib/gaku/testing/factories/user_factory.rb +2 -2
  87. data/lib/generators/gaku/docker/docker_generator.rb +58 -0
  88. data/lib/generators/gaku/docker/templates/app/assets/javascripts/gaku/admin/all.js +10 -0
  89. data/lib/generators/gaku/docker/templates/app/assets/javascripts/gaku/archive/all.js +10 -0
  90. data/lib/generators/gaku/docker/templates/app/assets/javascripts/gaku/frontend/all.js +10 -0
  91. data/lib/generators/gaku/docker/templates/app/assets/stylesheets/gaku/admin/all.css +9 -0
  92. data/lib/generators/gaku/docker/templates/app/assets/stylesheets/gaku/archive/all.css +9 -0
  93. data/lib/generators/gaku/docker/templates/app/assets/stylesheets/gaku/frontend/all.css +9 -0
  94. data/lib/generators/gaku/docker/templates/bin/check_postgres.sh +16 -0
  95. data/lib/generators/gaku/docker/templates/config/database.yml +2 -0
  96. data/lib/generators/gaku/dummy/dummy_generator.rb +0 -1
  97. data/lib/generators/gaku/dummy/templates/rails/application.rb +0 -1
  98. data/lib/generators/gaku/dummy/templates/rails/database.yml +11 -10
  99. data/lib/generators/gaku/install/install_generator.rb +17 -0
  100. data/lib/generators/gaku/install/templates/Procfile +3 -0
  101. data/lib/generators/gaku/install/templates/lib/grading/README.md +2 -0
  102. data/lib/generators/gaku/install/templates/lib/grading/bin/gaku_grading.coffee +13 -0
  103. data/lib/generators/gaku/install/templates/lib/grading/package.json +19 -0
  104. data/lib/tasks/core.rake +1 -1
  105. data/lib/tasks/grading.rake +10 -0
  106. metadata +69 -53
  107. data/db/migrate/20140304101025_create_gaku_student_exam_session_table.rb +0 -8
  108. data/lib/gaku/testing/factories/student_exam_session_factory.rb +0 -8
@@ -1,8 +1,8 @@
1
1
  module Gaku
2
2
  class StudentReview < ActiveRecord::Base
3
- belongs_to :student
4
- belongs_to :student_review_category
5
- belongs_to :student_reviewable, polymorphic: true
3
+ belongs_to :student, required: false
4
+ belongs_to :student_review_category, required: false
5
+ belongs_to :student_reviewable, polymorphic: true, required: false
6
6
 
7
7
  validates :content, :student_id, :student_review_category_id, :student_reviewable_id, :student_reviewable_type , presence: true
8
8
  validates :student_id, uniqueness: { scope: [:student_reviewable_type, :student_reviewable_id] }
@@ -1,7 +1,7 @@
1
1
  module Gaku
2
2
  class StudentSpecialty < ActiveRecord::Base
3
- belongs_to :specialty
4
- belongs_to :student
3
+ belongs_to :specialty, required: false
4
+ belongs_to :student, required: false
5
5
 
6
6
  validates :specialty_id, presence: true
7
7
 
@@ -11,7 +11,7 @@ module Gaku
11
11
  has_many :exam_syllabuses, dependent: :destroy
12
12
  has_many :exams, through: :exam_syllabuses
13
13
 
14
- belongs_to :department
14
+ belongs_to :department, required: false
15
15
 
16
16
  accepts_nested_attributes_for :exams, :assignments
17
17
 
@@ -2,6 +2,6 @@ module Gaku
2
2
  class Teacher < ActiveRecord::Base
3
3
  include Person, Addresses, Contacts, Notes, Picture, Pagination
4
4
 
5
- belongs_to :user
5
+ belongs_to :user, required: false
6
6
  end
7
7
  end
@@ -1,5 +1,9 @@
1
1
  if Rails.env.test?
2
2
  $redis = Redis.new(db: 15)
3
3
  else
4
- $redis = Redis.new
5
- end
4
+ if ENV['REDIS_HOST']
5
+ $redis = Redis.new(host: ENV['REDIS_HOST'])
6
+ else
7
+ $redis = Redis.new
8
+ end
9
+ end
@@ -41,7 +41,7 @@ types = [
41
41
 
42
42
  {
43
43
  name: 'Injury',
44
- name: '病欠[怪我]',
44
+ name_ja: '病欠[怪我]',
45
45
  color_code: '#c85179',
46
46
  counted_absent: true,
47
47
  disable_credit: false,
@@ -1,8 +1,8 @@
1
- class Presets < ActiveRecord::Migration
1
+ class Presets < ActiveRecord::Migration[4.2]
2
2
 
3
3
  def self.up
4
4
  enable_extension "hstore"
5
-
5
+ # execute "CREATE EXTENSION IF NOT EXISTS hstore"
6
6
  create_table :gaku_presets do |t|
7
7
  t.string :name
8
8
  t.boolean :default, default: false
@@ -23,8 +23,7 @@ class Presets < ActiveRecord::Migration
23
23
 
24
24
  def self.down
25
25
  drop_table :gaku_presets
26
-
27
- disable_extension "hstore"
26
+ execute "DROP EXTENSION IF EXISTS hstore"
28
27
  end
29
28
 
30
29
  end
@@ -1,4 +1,4 @@
1
- class Translations < ActiveRecord::Migration
1
+ class Translations < ActiveRecord::Migration[4.2]
2
2
 
3
3
  def up
4
4
  create_table :gaku_attendance_types do |t|
@@ -1,6 +1,6 @@
1
1
  require 'gaku/migrations'
2
2
 
3
- class GakuCore < ActiveRecord::Migration
3
+ class GakuCore < ActiveRecord::Migration[4.2]
4
4
 
5
5
  include Gaku::Migrations
6
6
 
@@ -1,4 +1,4 @@
1
- class ChangeGradingMethodsArgumentsField < ActiveRecord::Migration
1
+ class ChangeGradingMethodsArgumentsField < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  rename_column :gaku_grading_methods, :arguments, :criteria
4
4
  end
@@ -1,4 +1,4 @@
1
- class ChangeFieldsExternalSchoolRecord < ActiveRecord::Migration
1
+ class ChangeFieldsExternalSchoolRecord < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :gaku_external_school_records, :units_absent, :integer
4
4
  add_column :gaku_external_school_records, :total_units, :integer
@@ -1,4 +1,4 @@
1
- class CreateStudentConfigs < ActiveRecord::Migration
1
+ class CreateStudentConfigs < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :gaku_student_configs do |t|
4
4
  t.boolean :active, default: false
@@ -1,4 +1,4 @@
1
- class DropStudentConfigs < ActiveRecord::Migration
1
+ class DropStudentConfigs < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  drop_table :gaku_student_configs
4
4
  end
@@ -1,4 +1,4 @@
1
- class CreateGradingMethodConnectorsTable < ActiveRecord::Migration
1
+ class CreateGradingMethodConnectorsTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :gaku_grading_method_connectors do |t|
4
4
  t.references :grading_method
@@ -1,4 +1,4 @@
1
- class CreateGakuExamSessionsTable < ActiveRecord::Migration
1
+ class CreateGakuExamSessionsTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :gaku_exam_sessions do |t|
4
4
  t.integer :session_time
@@ -1,4 +1,4 @@
1
- class AddTimeFormat24ToPresetsTable < ActiveRecord::Migration
1
+ class AddTimeFormat24ToPresetsTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :gaku_presets, :time_format_24, :boolean, default: true
4
4
  end
@@ -1,4 +1,4 @@
1
- class RemoveSemesterJoinTables < ActiveRecord::Migration
1
+ class RemoveSemesterJoinTables < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  drop_table :gaku_semester_class_groups
4
4
  drop_table :gaku_semester_courses
@@ -1,4 +1,4 @@
1
- class CreateSemesterConnectorsTable < ActiveRecord::Migration
1
+ class CreateSemesterConnectorsTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :gaku_semester_connectors do |t|
4
4
  t.references :semester
@@ -1,4 +1,4 @@
1
- class CreateEnrollmentsTable < ActiveRecord::Migration
1
+ class CreateEnrollmentsTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :gaku_enrollments do |t|
4
4
  t.references :student
@@ -1,4 +1,4 @@
1
- class CleanEnrollmentsJoinModels < ActiveRecord::Migration
1
+ class CleanEnrollmentsJoinModels < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  drop_table :gaku_class_group_enrollments
4
4
  drop_table :gaku_class_group_course_enrollments
@@ -1,11 +1,13 @@
1
- class AddCountersToEnrollmentable < ActiveRecord::Migration
1
+ class AddCountersToEnrollmentable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :gaku_courses, :enrollments_count, :integer, default: 0, null: false
4
4
  add_column :gaku_class_groups, :enrollments_count, :integer, default: 0, null: false
5
5
  add_column :gaku_extracurricular_activities, :enrollments_count, :integer, default: 0, null: false
6
+ add_column :gaku_exam_sessions, :enrollments_count, :integer, default: 0, null: false
6
7
 
7
8
  #for courses already exist
8
9
  add_column :gaku_students, :extracurricular_activities_count, :integer, default: 0, null: false
9
10
  add_column :gaku_students, :class_groups_count, :integer, default: 0, null: false
11
+ add_column :gaku_students, :exam_sessions_count, :integer, default: 0, null: false
10
12
  end
11
13
  end
@@ -1,4 +1,4 @@
1
- class RenameMethodToGradingMethod < ActiveRecord::Migration
1
+ class RenameMethodToGradingMethod < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  rename_column :gaku_grading_methods, :method, :grading_type
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddDefaultValueToCurved < ActiveRecord::Migration
1
+ class AddDefaultValueToCurved < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  change_column :gaku_grading_methods, :curved, :boolean, default: false
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddSeatNumberToEnrollments < ActiveRecord::Migration
1
+ class AddSeatNumberToEnrollments < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :gaku_enrollments, :seat_number, :integer
4
4
  end
@@ -1,4 +1,4 @@
1
- class ChangeHstoreToStringCriteria < ActiveRecord::Migration
1
+ class ChangeHstoreToStringCriteria < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  change_column :gaku_grading_methods, :criteria, :string
4
4
  end
@@ -1,4 +1,4 @@
1
- class CreateSemesterAttendanceTable < ActiveRecord::Migration
1
+ class CreateSemesterAttendanceTable < ActiveRecord::Migration[4.2]
2
2
 
3
3
  def change
4
4
  create_table :gaku_semester_attendances do |t|
@@ -1,4 +1,4 @@
1
- class CreateStudentReviewCategoriesTable < ActiveRecord::Migration
1
+ class CreateStudentReviewCategoriesTable < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  create_table :gaku_student_review_categories do |t|
4
4
  t.string :name
@@ -1,4 +1,4 @@
1
- class CreateStudentReviewTable < ActiveRecord::Migration
1
+ class CreateStudentReviewTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :gaku_student_reviews do |t|
4
4
  t.references :student
@@ -1,4 +1,4 @@
1
- class ImproveCountriesAndStates < ActiveRecord::Migration
1
+ class ImproveCountriesAndStates < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :gaku_countries, :states_required, :boolean
4
4
  end
@@ -0,0 +1,5 @@
1
+ class AddGradableToExamPortionScore < ActiveRecord::Migration[4.2]
2
+ def change
3
+ add_reference :gaku_exam_portion_scores, :gradable, polymorphic: true, index: true
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class ChangeEnrollmentableToEnrollable < ActiveRecord::Migration[5.0]
2
+ def change
3
+ rename_column :gaku_enrollments, :enrollmentable_id, :enrollable_id
4
+ rename_column :gaku_enrollments, :enrollmentable_type, :enrollable_type
5
+ end
6
+ end
data/gaku_core.gemspec ADDED
@@ -0,0 +1,37 @@
1
+ require_relative '../common_gaku_gemspec_mixin'
2
+
3
+ Gem::Specification.new do |s|
4
+ set_gaku_gemspec_shared s
5
+
6
+ s.name = 'gaku_core'
7
+ s.summary = 'GAKU Engine core module'
8
+ s.description = 'Core functionality for GAKU Engine. See https://github.com/GAKUEngine/gaku'
9
+
10
+ s.files = Dir.glob("{app,config,db,lib}/**/*") +
11
+ [
12
+ 'Rakefile',
13
+ 'gaku_core.gemspec'
14
+ ]
15
+ s.require_path = 'lib'
16
+
17
+ s.requirements << 'postgresql'
18
+ s.requirements << 'postgresql-contrib'
19
+
20
+ s.add_dependency 'rails', '~> 5.1.4'
21
+ s.add_dependency 'rails-i18n', '~> 5.0.3'
22
+ s.add_dependency 'pg', '~> 0.19'
23
+ s.add_dependency 'redis', '~> 3.3.3'
24
+ s.add_dependency 'carmen', '~> 1.0.2'
25
+ s.add_dependency 'activemodel-serializers-xml'
26
+ s.add_dependency 'paperclip', '~> 5.1.0'
27
+ s.add_dependency 'ransack', '~> 1.8.2'
28
+ s.add_dependency 'kaminari', '~> 1.0.1'
29
+ s.add_dependency 'draper', '~> 3.0.1'
30
+ s.add_dependency 'devise', '~> 4.3.0'
31
+ s.add_dependency 'devise-i18n'
32
+ s.add_dependency 'cancan', '~> 1.6.10'
33
+ s.add_dependency 'highline'
34
+ s.add_dependency 'ffaker', '~> 2.5.0'
35
+ s.add_dependency 'rake-progressbar'
36
+ s.add_dependency 'globalize', '~> 5.1.0.beta2'
37
+ end
data/lib/gaku/core.rb CHANGED
@@ -3,7 +3,7 @@ require 'rails/generators'
3
3
  require 'rails-i18n'
4
4
  require 'paperclip'
5
5
  require 'ransack'
6
- require 'deface'
6
+ # require 'deface'
7
7
  require 'redis'
8
8
 
9
9
  require 'devise'
@@ -5,7 +5,7 @@ module Gaku
5
5
  engine_name 'gaku'
6
6
 
7
7
  config.autoload_paths += %W( #{config.root}/lib )
8
- config.active_record.raise_in_transactional_callbacks = true
8
+ # config.active_record.raise_in_transactional_callbacks = true
9
9
 
10
10
 
11
11
  initializer 'gaku.paperclip' do
@@ -2,10 +2,11 @@ module Gaku
2
2
  module Grading
3
3
  module Collection
4
4
  class BaseMethod
5
- attr_reader :gradable, :gradable_type, :students, :criteria, :results
5
+ attr_reader :gradable, :gradable_type, :students, :criteria, :results, :gradable_scope
6
6
 
7
7
  # Pass a gradable object [exam or assignment] and students
8
- def initialize(gradable, students, criteria = nil)
8
+ def initialize(gradable, students, gradable_scope, criteria = nil)
9
+ @gradable_scope = gradable_scope
9
10
  @gradable = gradable
10
11
  @students = students
11
12
  @criteria = criteria
@@ -3,18 +3,20 @@ module Gaku
3
3
  module Collection
4
4
  class Calculations
5
5
 
6
- attr_reader :grading_methods, :students, :exam
6
+ attr_reader :grading_methods, :students, :exam, :gradable_scope
7
7
 
8
- def initialize(grading_method, students, exam)
8
+ def initialize(grading_method, students, exam, gradable_scope)
9
9
  @exam = exam
10
10
  @students = students
11
11
  @grading_methods = grading_method
12
+ @gradable_scope = gradable_scope
13
+
12
14
  end
13
15
 
14
16
  def calculate
15
17
  {}.tap do |hash|
16
18
  @grading_methods.each do |grading_method|
17
- grading = grading_types[grading_method.grading_type].constantize.new(@exam, @students, grading_method.criteria)
19
+ grading = grading_types[grading_method.grading_type].constantize.new(@exam, @students, gradable_scope, grading_method.criteria)
18
20
  hash[grading_method.id] = grading.grade
19
21
  end
20
22
  end
@@ -5,7 +5,7 @@ class Gaku::Grading::Collection::Interval < Gaku::Grading::Collection::BaseMetho
5
5
  @scores = students_with_scores
6
6
 
7
7
  formated_student_results.each do |student|
8
- @result << Gaku::Grading::Single::Interval.new(@gradable, student).grade_exam
8
+ @result << Gaku::Grading::Single::Interval.new(@gradable, student, gradable_scope).grade_exam
9
9
  end
10
10
 
11
11
  @result
@@ -35,7 +35,7 @@ class Gaku::Grading::Collection::Interval < Gaku::Grading::Collection::BaseMetho
35
35
  end
36
36
 
37
37
  def score_results
38
- Gaku::Grading::Collection::Score.new(@gradable, @students).grade
38
+ Gaku::Grading::Collection::Score.new(@gradable, @students, gradable_scope).grade
39
39
  end
40
40
 
41
41
  def students_with_scores
@@ -2,7 +2,7 @@ class Gaku::Grading::Collection::Ordinal < Gaku::Grading::Collection::BaseMethod
2
2
 
3
3
  def grade_exam
4
4
  @students.each do |student|
5
- @result << Gaku::Grading::Single::Ordinal.new(@gradable, student, criteria).grade_exam
5
+ @result << Gaku::Grading::Single::Ordinal.new(@gradable, student, gradable_scope,criteria).grade_exam
6
6
  end
7
7
  @result
8
8
  end
@@ -2,7 +2,7 @@ class Gaku::Grading::Collection::Percentage < Gaku::Grading::Collection::BaseMet
2
2
 
3
3
  def grade_exam
4
4
  @students.each do |student|
5
- @result << Gaku::Grading::Single::Percentage.new(@gradable, student).grade_exam
5
+ @result << Gaku::Grading::Single::Percentage.new(@gradable, student, gradable_scope).grade_exam
6
6
  end
7
7
  @result
8
8
  end
@@ -2,7 +2,7 @@ class Gaku::Grading::Collection::Score < Gaku::Grading::Collection::BaseMethod
2
2
 
3
3
  def grade_exam
4
4
  @students.each do |student|
5
- @result << Gaku::Grading::Single::Score.new(@gradable, student).grade_exam
5
+ @result << Gaku::Grading::Single::Score.new(@gradable, student, gradable_scope).grade_exam
6
6
  end
7
7
  @result
8
8
  end
@@ -2,13 +2,14 @@ module Gaku
2
2
  module Grading
3
3
  module Single
4
4
  class BaseMethod
5
- attr_reader :gradable, :gradable_type, :student, :criteria, :result
5
+ attr_reader :gradable, :gradable_type, :student, :criteria, :result, :gradable_scope
6
6
 
7
7
  # Pass a gradable object [exam or assignment] and students
8
- def initialize(gradable, student, criteria = nil)
8
+ def initialize(gradable, student, gradable_scope, criteria = nil)
9
9
  @gradable = gradable
10
10
  @student = student
11
11
  @criteria = criteria
12
+ @gradable_scope = gradable_scope
12
13
  @result = {}
13
14
  end
14
15
 
@@ -3,23 +3,24 @@ module Gaku
3
3
  module Single
4
4
  class Calculations
5
5
 
6
- attr_reader :grading_methods, :student, :exam, :collection_students
6
+ attr_reader :grading_methods, :student, :exam, :collection_students, :gradable_scope
7
7
 
8
- def initialize(grading_methods, student, exam, collection_students = nil)
8
+ def initialize(grading_methods, student, exam, gradable_scope, collection_students = nil)
9
9
  @exam = exam
10
10
  @student = student
11
11
  @grading_methods = grading_methods
12
12
  @collection_students = collection_students
13
+ @gradable_scope = gradable_scope
13
14
  end
14
15
 
15
16
  def calculate
16
17
  {}.tap do |hash|
17
18
  @grading_methods.each do |grading_method|
18
19
  if grading_method.interval?
19
- grading = Gaku::Grading::Collection::Interval.new(@exam, collection_students, grading_method.criteria )
20
+ grading = Gaku::Grading::Collection::Interval.new(@exam, collection_students, gradable_scope, grading_method.criteria )
20
21
  hash[grading_method.id] = grading.grade
21
22
  else
22
- grading = grading_types[grading_method.grading_type].constantize.new(@exam, @student, grading_method.criteria)
23
+ grading = grading_types[grading_method.grading_type].constantize.new(@exam, @student, gradable_scope, grading_method.criteria)
23
24
  hash[grading_method.id] = grading.grade
24
25
  end
25
26
  end