gaku_core 0.2.4 → 0.3.0.pre.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 (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