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.
- checksums.yaml +4 -4
- data/Rakefile +17 -0
- data/app/assets/images/elements/toolbar1.png +0 -0
- data/app/assets/images/icon-chair.png +0 -0
- data/app/models/application_record.rb +3 -0
- data/app/models/concerns/{enrollmentable.rb → enrollable.rb} +2 -2
- data/app/models/concerns/gradable.rb +2 -0
- data/app/models/gaku/address.rb +3 -3
- data/app/models/gaku/attachment.rb +4 -2
- data/app/models/gaku/attendance.rb +3 -3
- data/app/models/gaku/class_group.rb +1 -1
- data/app/models/gaku/contact.rb +2 -2
- data/app/models/gaku/course.rb +3 -3
- data/app/models/gaku/enrollment.rb +23 -19
- data/app/models/gaku/exam.rb +2 -2
- data/app/models/gaku/exam_portion.rb +1 -1
- data/app/models/gaku/exam_portion_score.rb +6 -2
- data/app/models/gaku/exam_session.rb +3 -3
- data/app/models/gaku/extracurricular_activity.rb +1 -1
- data/app/models/gaku/grading_method_connector.rb +3 -3
- data/app/models/gaku/guardian.rb +1 -1
- data/app/models/gaku/lesson_plan.rb +1 -1
- data/app/models/gaku/note.rb +1 -1
- data/app/models/gaku/program_specialty.rb +2 -2
- data/app/models/gaku/school_role.rb +1 -1
- data/app/models/gaku/semester.rb +1 -1
- data/app/models/gaku/semester_connector.rb +2 -2
- data/app/models/gaku/specialty.rb +1 -1
- data/app/models/gaku/student.rb +10 -12
- data/app/models/gaku/student_review.rb +3 -3
- data/app/models/gaku/student_specialty.rb +2 -2
- data/app/models/gaku/syllabus.rb +1 -1
- data/app/models/gaku/teacher.rb +1 -1
- data/config/initializers/redis.rb +6 -2
- data/db/default/gaku/attendance_types.rb +1 -1
- data/db/migrate/20120202111850_presets.rb +3 -4
- data/db/migrate/20131014065028_translations.rb +1 -1
- data/db/migrate/20131025073352_gaku_core.rb +1 -1
- data/db/migrate/20140128141752_change_grading_methods_arguments_field.rb +1 -1
- data/db/migrate/20140130182100_change_fields_external_school_record.rb +1 -1
- data/db/migrate/20140131113337_create_student_configs.rb +1 -1
- data/db/migrate/20140207093618_drop_student_configs.rb +1 -1
- data/db/migrate/20140213113405_create_grading_method_connectors_table.rb +1 -1
- data/db/migrate/20140304094422_create_gaku_exam_sessions_table.rb +1 -1
- data/db/migrate/20140325073941_add_time_format_24_to_presets_table.rb +1 -1
- data/db/migrate/20140408111314_remove_semester_join_tables.rb +1 -1
- data/db/migrate/20140408111358_create_semester_connectors_table.rb +1 -1
- data/db/migrate/20140423093155_create_enrollments_table.rb +1 -1
- data/db/migrate/20140423100114_clean_enrollments_join_models.rb +1 -1
- data/db/migrate/20140429112725_add_counters_to_enrollmentable.rb +3 -1
- data/db/migrate/20140604104210_rename_method_to_grading_method.rb +1 -1
- data/db/migrate/20140604113045_add_default_value_to_curved.rb +1 -1
- data/db/migrate/20140610091053_add_seat_number_to_enrollments.rb +1 -1
- data/db/migrate/20140701104700_change_hstore_to_string_criteria.rb +1 -1
- data/db/migrate/20140715135152_create_semester_attendance_table.rb +1 -1
- data/db/migrate/20140718105226_create_student_review_categories_table.rb +1 -1
- data/db/migrate/20140728121353_create_student_review_table.rb +1 -1
- data/db/migrate/20150213095508_improve_countries_and_states.rb +1 -1
- data/db/migrate/20160125194100_add_gradable_to_exam_portion_score.rb +5 -0
- data/db/migrate/20170509132020_change_enrollmentable_to_enrollable.rb +6 -0
- data/gaku_core.gemspec +37 -0
- data/lib/gaku/core.rb +1 -1
- data/lib/gaku/core/engine.rb +1 -1
- data/lib/gaku/grading/collection/base_method.rb +3 -2
- data/lib/gaku/grading/collection/calculations.rb +5 -3
- data/lib/gaku/grading/collection/interval.rb +2 -2
- data/lib/gaku/grading/collection/ordinal.rb +1 -1
- data/lib/gaku/grading/collection/percentage.rb +1 -1
- data/lib/gaku/grading/collection/score.rb +1 -1
- data/lib/gaku/grading/single/base_method.rb +3 -2
- data/lib/gaku/grading/single/calculations.rb +5 -4
- data/lib/gaku/grading/single/ordinal.rb +2 -3
- data/lib/gaku/grading/single/percentage.rb +2 -3
- data/lib/gaku/grading/single/score.rb +2 -3
- data/lib/gaku/testing/common_rake.rb +47 -6
- data/lib/gaku/testing/controller_helpers.rb +6 -4
- data/lib/gaku/testing/factories/address_factory.rb +3 -3
- data/lib/gaku/testing/factories/campus_factory.rb +1 -1
- data/lib/gaku/testing/factories/enrollment_factory.rb +1 -1
- data/lib/gaku/testing/factories/guardian_factory.rb +2 -2
- data/lib/gaku/testing/factories/program_factory.rb +1 -1
- data/lib/gaku/testing/factories/school_factory.rb +1 -1
- data/lib/gaku/testing/factories/student_factory.rb +7 -5
- data/lib/gaku/testing/factories/syllabus_factory.rb +1 -1
- data/lib/gaku/testing/factories/teacher_factory.rb +4 -4
- data/lib/gaku/testing/factories/user_factory.rb +2 -2
- data/lib/generators/gaku/docker/docker_generator.rb +58 -0
- data/lib/generators/gaku/docker/templates/app/assets/javascripts/gaku/admin/all.js +10 -0
- data/lib/generators/gaku/docker/templates/app/assets/javascripts/gaku/archive/all.js +10 -0
- data/lib/generators/gaku/docker/templates/app/assets/javascripts/gaku/frontend/all.js +10 -0
- data/lib/generators/gaku/docker/templates/app/assets/stylesheets/gaku/admin/all.css +9 -0
- data/lib/generators/gaku/docker/templates/app/assets/stylesheets/gaku/archive/all.css +9 -0
- data/lib/generators/gaku/docker/templates/app/assets/stylesheets/gaku/frontend/all.css +9 -0
- data/lib/generators/gaku/docker/templates/bin/check_postgres.sh +16 -0
- data/lib/generators/gaku/docker/templates/config/database.yml +2 -0
- data/lib/generators/gaku/dummy/dummy_generator.rb +0 -1
- data/lib/generators/gaku/dummy/templates/rails/application.rb +0 -1
- data/lib/generators/gaku/dummy/templates/rails/database.yml +11 -10
- data/lib/generators/gaku/install/install_generator.rb +17 -0
- data/lib/generators/gaku/install/templates/Procfile +3 -0
- data/lib/generators/gaku/install/templates/lib/grading/README.md +2 -0
- data/lib/generators/gaku/install/templates/lib/grading/bin/gaku_grading.coffee +13 -0
- data/lib/generators/gaku/install/templates/lib/grading/package.json +19 -0
- data/lib/tasks/core.rake +1 -1
- data/lib/tasks/grading.rake +10 -0
- metadata +69 -53
- data/db/migrate/20140304101025_create_gaku_student_exam_session_table.rb +0 -8
- 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] }
|
data/app/models/gaku/syllabus.rb
CHANGED
data/app/models/gaku/teacher.rb
CHANGED
@@ -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 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,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
|
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
data/lib/gaku/core/engine.rb
CHANGED
@@ -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
|