gaku_core 0.1.1 → 0.2.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/gaku/core_controller.rb +3 -8
  3. data/app/decorators/gaku/course_decorator.rb +1 -2
  4. data/app/decorators/gaku/guardian_decorator.rb +1 -1
  5. data/app/decorators/gaku/person_decorator.rb +8 -12
  6. data/app/decorators/gaku/student_decorator.rb +0 -2
  7. data/app/decorators/gaku/teacher_decorator.rb +1 -1
  8. data/app/models/concerns/addresses.rb +6 -6
  9. data/app/models/concerns/contacts.rb +6 -6
  10. data/app/models/concerns/enrollmentable.rb +9 -0
  11. data/app/models/concerns/gradable.rb +14 -0
  12. data/app/models/concerns/notes.rb +1 -2
  13. data/app/models/concerns/pagination.rb +1 -2
  14. data/app/models/concerns/person.rb +0 -2
  15. data/app/models/concerns/picture.rb +1 -3
  16. data/app/models/concerns/semesterable.rb +12 -0
  17. data/app/models/concerns/student_reviewable.rb +7 -0
  18. data/app/models/gaku/ability.rb +2 -4
  19. data/app/models/gaku/address.rb +11 -10
  20. data/app/models/gaku/admin_ability.rb +0 -1
  21. data/app/models/gaku/assignment.rb +0 -2
  22. data/app/models/gaku/assignment_score.rb +0 -1
  23. data/app/models/gaku/attachment.rb +1 -4
  24. data/app/models/gaku/attendance.rb +0 -2
  25. data/app/models/gaku/attendance_type.rb +0 -2
  26. data/app/models/gaku/badge.rb +0 -2
  27. data/app/models/gaku/badge_type.rb +0 -1
  28. data/app/models/gaku/class_group.rb +13 -13
  29. data/app/models/gaku/commute_method_type.rb +0 -2
  30. data/app/models/gaku/contact.rb +6 -36
  31. data/app/models/gaku/contact_type.rb +0 -2
  32. data/app/models/gaku/country.rb +0 -3
  33. data/app/models/gaku/course.rb +11 -25
  34. data/app/models/gaku/course_group.rb +0 -2
  35. data/app/models/gaku/course_group_enrollment.rb +3 -4
  36. data/app/models/gaku/department.rb +0 -2
  37. data/app/models/gaku/enrollment.rb +85 -0
  38. data/app/models/gaku/enrollment_status.rb +0 -2
  39. data/app/models/gaku/exam.rb +17 -22
  40. data/app/models/gaku/exam_portion.rb +2 -6
  41. data/app/models/gaku/exam_portion_score.rb +0 -2
  42. data/app/models/gaku/exam_schedule.rb +0 -1
  43. data/app/models/gaku/exam_session.rb +14 -0
  44. data/app/models/gaku/exam_syllabus.rb +2 -6
  45. data/app/models/gaku/external_school_record.rb +1 -9
  46. data/app/models/gaku/extracurricular_activity.rb +1 -2
  47. data/app/models/gaku/faculty.rb +0 -2
  48. data/app/models/gaku/grading_method.rb +14 -2
  49. data/app/models/gaku/grading_method_connector.rb +35 -0
  50. data/app/models/gaku/grading_method_set.rb +6 -4
  51. data/app/models/gaku/grading_method_set_item.rb +4 -5
  52. data/app/models/gaku/guardian.rb +1 -3
  53. data/app/models/gaku/install.rb +0 -2
  54. data/app/models/gaku/lesson.rb +0 -1
  55. data/app/models/gaku/lesson_plan.rb +0 -2
  56. data/app/models/gaku/level.rb +0 -2
  57. data/app/models/gaku/preset.rb +18 -18
  58. data/app/models/gaku/program.rb +0 -2
  59. data/app/models/gaku/program_level.rb +0 -2
  60. data/app/models/gaku/program_specialty.rb +0 -2
  61. data/app/models/gaku/program_syllabus.rb +0 -2
  62. data/app/models/gaku/role.rb +0 -2
  63. data/app/models/gaku/schedule.rb +0 -1
  64. data/app/models/gaku/scholarship_status.rb +0 -2
  65. data/app/models/gaku/school.rb +0 -2
  66. data/app/models/gaku/school_role.rb +0 -2
  67. data/app/models/gaku/school_year.rb +4 -2
  68. data/app/models/gaku/semester.rb +21 -6
  69. data/app/models/gaku/semester_attendance.rb +14 -0
  70. data/app/models/gaku/semester_connector.rb +27 -0
  71. data/app/models/gaku/simple_grade.rb +0 -2
  72. data/app/models/gaku/simple_grade_type.rb +0 -1
  73. data/app/models/gaku/specialty.rb +0 -2
  74. data/app/models/gaku/state.rb +0 -3
  75. data/app/models/gaku/student.rb +47 -45
  76. data/app/models/gaku/student_exam_session.rb +11 -0
  77. data/app/models/gaku/student_guardian.rb +0 -2
  78. data/app/models/gaku/student_review.rb +11 -0
  79. data/app/models/gaku/student_review_category.rb +13 -0
  80. data/app/models/gaku/student_specialty.rb +2 -5
  81. data/app/models/gaku/syllabus.rb +0 -4
  82. data/app/models/gaku/teacher.rb +0 -2
  83. data/app/models/gaku/template.rb +7 -9
  84. data/app/models/gaku/user.rb +10 -22
  85. data/app/models/gaku/user_role.rb +0 -2
  86. data/app/services/gaku/contact_creation.rb +49 -0
  87. data/app/services/gaku/contact_updation.rb +41 -0
  88. data/app/services/gaku/student_selection.rb +57 -0
  89. data/app/services/gaku/user_creator.rb +31 -0
  90. data/config/initializers/devise.rb +1 -1
  91. data/config/initializers/redis.rb +5 -0
  92. data/config/locales/en.yml +79 -15
  93. data/config/routes.rb +5 -10
  94. data/db/default/gaku/attendance_types.rb +14 -16
  95. data/db/default/gaku/commute_method_types.rb +2 -4
  96. data/db/default/gaku/enrollment_status.rb +3 -3
  97. data/db/default/gaku/master_school.rb +7 -6
  98. data/db/default/gaku/presets.rb +6 -9
  99. data/db/default/gaku/scholarship_statuses.rb +1 -1
  100. data/db/migrate/20140128141752_change_grading_methods_arguments_field.rb +5 -0
  101. data/db/migrate/20140213113405_create_grading_method_connectors_table.rb +9 -0
  102. data/db/migrate/20140304094422_create_gaku_exam_sessions_table.rb +10 -0
  103. data/db/migrate/20140304101025_create_gaku_student_exam_session_table.rb +8 -0
  104. data/db/migrate/20140325073941_add_time_format_24_to_presets_table.rb +5 -0
  105. data/db/migrate/20140408111314_remove_semester_join_tables.rb +6 -0
  106. data/db/migrate/20140408111358_create_semester_connectors_table.rb +8 -0
  107. data/db/migrate/20140423093155_create_enrollments_table.rb +11 -0
  108. data/db/migrate/20140423100114_clean_enrollments_join_models.rb +8 -0
  109. data/db/migrate/20140429112725_add_counters_to_enrollmentable.rb +11 -0
  110. data/db/migrate/20140604104210_rename_method_to_grading_method.rb +5 -0
  111. data/db/migrate/20140604113045_add_default_value_to_curved.rb +5 -0
  112. data/db/migrate/20140610091053_add_seat_number_to_enrollments.rb +5 -0
  113. data/db/migrate/20140701104700_change_hstore_to_string_criteria.rb +5 -0
  114. data/db/migrate/20140715135152_create_semester_attendance_table.rb +16 -0
  115. data/db/migrate/20140718105226_create_student_review_categories_table.rb +13 -0
  116. data/db/migrate/20140728121353_create_student_review_table.rb +12 -0
  117. data/db/seeds.rb +1 -1
  118. data/lib/gaku/core.rb +2 -1
  119. data/lib/gaku/core/engine.rb +7 -5
  120. data/lib/gaku/core/url_helpers.rb +1 -1
  121. data/lib/gaku/grading/collection/base_method.rb +30 -0
  122. data/lib/gaku/grading/collection/calculations.rb +36 -0
  123. data/lib/gaku/grading/collection/interval.rb +55 -0
  124. data/lib/gaku/grading/collection/ordinal.rb +10 -0
  125. data/lib/gaku/grading/collection/percentage.rb +10 -0
  126. data/lib/gaku/grading/collection/result.rb +18 -0
  127. data/lib/gaku/grading/collection/score.rb +10 -0
  128. data/lib/gaku/grading/single/base_method.rb +30 -0
  129. data/lib/gaku/grading/single/calculations.rb +42 -0
  130. data/lib/gaku/grading/single/interval.rb +7 -0
  131. data/lib/gaku/grading/single/ordinal.rb +30 -0
  132. data/lib/gaku/grading/single/pass_fail.rb +2 -0
  133. data/lib/gaku/grading/single/percentage.rb +26 -0
  134. data/lib/gaku/grading/single/ratio.rb +2 -0
  135. data/lib/gaku/grading/single/result.rb +18 -0
  136. data/lib/gaku/grading/single/score.rb +15 -0
  137. data/lib/gaku/migrations.rb +1 -1
  138. data/lib/gaku/streamer/sse.rb +5 -5
  139. data/lib/gaku/testing/auth_helpers.rb +6 -2
  140. data/lib/gaku/testing/common_rake.rb +9 -3
  141. data/lib/gaku/testing/controller_helpers.rb +17 -12
  142. data/lib/gaku/testing/coverage.rb +1 -1
  143. data/lib/gaku/testing/deferred_garbage_collection.rb +3 -3
  144. data/lib/gaku/testing/factories/attachment_factory.rb +0 -1
  145. data/lib/gaku/testing/factories/attendance_type_factory.rb +1 -1
  146. data/lib/gaku/testing/factories/class_group_factory.rb +12 -1
  147. data/lib/gaku/testing/factories/contact_creation_factory.rb +18 -0
  148. data/lib/gaku/testing/factories/course_enrollment_factory.rb +9 -9
  149. data/lib/gaku/testing/factories/course_factory.rb +2 -4
  150. data/lib/gaku/testing/factories/course_group_factory.rb +2 -4
  151. data/lib/gaku/testing/factories/enrollment_factory.rb +10 -0
  152. data/lib/gaku/testing/factories/exam_factory.rb +1 -1
  153. data/lib/gaku/testing/factories/exam_portion_factory.rb +2 -4
  154. data/lib/gaku/testing/factories/exam_score_factory.rb +1 -1
  155. data/lib/gaku/testing/factories/exam_session_factory.rb +14 -0
  156. data/lib/gaku/testing/factories/extracurricular_activity_factory.rb +1 -1
  157. data/lib/gaku/testing/factories/grading_method_connector_factory.rb +11 -0
  158. data/lib/gaku/testing/factories/grading_method_factory.rb +3 -2
  159. data/lib/gaku/testing/factories/guardian_factory.rb +2 -4
  160. data/lib/gaku/testing/factories/lesson_plan_factory.rb +2 -2
  161. data/lib/gaku/testing/factories/preset_factory.rb +7 -7
  162. data/lib/gaku/testing/factories/program_factory.rb +0 -1
  163. data/lib/gaku/testing/factories/school_factory.rb +3 -3
  164. data/lib/gaku/testing/factories/semester_attendance_factory.rb +8 -0
  165. data/lib/gaku/testing/factories/semester_connectors_factory.rb +11 -0
  166. data/lib/gaku/testing/factories/semester_factory.rb +16 -0
  167. data/lib/gaku/testing/factories/simple_grade_type_factory.rb +1 -1
  168. data/lib/gaku/testing/factories/state_factory.rb +2 -1
  169. data/lib/gaku/testing/factories/student_exam_session_factory.rb +8 -0
  170. data/lib/gaku/testing/factories/student_factory.rb +15 -5
  171. data/lib/gaku/testing/factories/student_review_category_factory.rb +7 -0
  172. data/lib/gaku/testing/factories/student_review_factory.rb +13 -0
  173. data/lib/gaku/testing/factories/teacher_factory.rb +1 -1
  174. data/lib/gaku/testing/factories/template_factory.rb +5 -7
  175. data/lib/gaku/testing/factories/traits.rb +32 -4
  176. data/lib/gaku/testing/factories/user_factory.rb +0 -1
  177. data/lib/gaku_core.rb +1 -1
  178. data/lib/generators/gaku/dummy/dummy_generator.rb +5 -4
  179. data/lib/generators/gaku/install/install_generator.rb +16 -14
  180. data/lib/tasks/admin_user.rake +2 -1
  181. metadata +310 -264
  182. data/app/models/gaku/class_group_course_enrollment.rb +0 -17
  183. data/app/models/gaku/class_group_enrollment.rb +0 -31
  184. data/app/models/gaku/course_enrollment.rb +0 -23
  185. data/app/models/gaku/disposal.rb +0 -45
  186. data/app/models/gaku/extracurricular_activity_enrollment.rb +0 -15
  187. data/app/models/gaku/semester_class_group.rb +0 -21
  188. data/app/models/gaku/semester_course.rb +0 -21
  189. data/lib/gaku/grading/calculations.rb +0 -279
  190. data/lib/gaku/grading/grade.rb +0 -17
  191. data/lib/gaku/grading/japanese_hs_standard.rb +0 -8
  192. data/lib/gaku/testing/factories/class_group_course_enrollment_factory.rb +0 -8
  193. data/lib/gaku/testing/factories/class_group_enrollment_factory.rb +0 -9
  194. data/lib/gaku/testing/factories/semester_class_group_factory.rb +0 -8
  195. data/lib/gaku/testing/factories/semester_course.rb +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: df332b097347c0b53484b5c7ab8f4ed7d81f3eb6
4
- data.tar.gz: 497232fa220c2e410cdbebbd1f5567919d59ed1a
3
+ metadata.gz: 20342fcdfd2861a72ac472b2686b6c4b94cf0db3
4
+ data.tar.gz: f5a1482fcf966d496f04d53c8e497675594c4b6a
5
5
  SHA512:
6
- metadata.gz: 7a2433b7a857e897afbf0189d44647ecfa87e48b2620e02f0606a29c49d1bfd866f6b257bc11bcb53f3a0660a2142f6d793293dc2c5f0df31ae96418df3cdf8d
7
- data.tar.gz: 9c8353ba3035fb83326fcc51a072c40a81e4412307bffb881bc68208d26cfba632958be18c8701f4f728abeca99c52134d66541cea4800a12310506cce2b3ef5
6
+ metadata.gz: 7c2cc6b3fc11c5dfa6560dc7067d6d6d3d954254c1c894f4d6a7fbab03962c7791852b7351125ea65e4baba19e75aebd9cd83f68df67c88ff60da111b4753f75
7
+ data.tar.gz: afe4fb7cbc4ced2ff729c5abe92d20c0f2a256c1731c21079abe1d18b02569af9049a8a0404c13535d4bef54abd9f0bd4eb95d24e6842f2baf703a12348eae97
@@ -1,7 +1,7 @@
1
1
  module Gaku
2
2
  class CoreController < ActionController::Base
3
3
  protect_from_forgery
4
- #check_authorization
4
+ # check_authorization
5
5
 
6
6
  rescue_from CanCan::AccessDenied do |exception|
7
7
  session[:previous_url] = request.fullpath unless request.fullpath =~ /\/users/
@@ -15,7 +15,6 @@ module Gaku
15
15
  # user_signed_in? ? current_user : 'Public user' # or whatever
16
16
  # end
17
17
 
18
-
19
18
  protected
20
19
 
21
20
  def get_resource_name(object)
@@ -46,19 +45,15 @@ module Gaku
46
45
  end
47
46
 
48
47
  def users_check
49
- if User.count == 0
50
- redirect_to set_up_admin_account_path
51
- end
48
+ redirect_to set_up_admin_account_path if User.count == 0
52
49
  end
53
50
 
54
51
  def extract_locale_from_accept_language_header
55
52
  request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
56
53
  end
57
54
 
58
-
59
- def after_sign_out_path_for(resource_or_scope)
55
+ def after_sign_out_path_for(_resource_or_scope)
60
56
  root_path
61
57
  end
62
-
63
58
  end
64
59
  end
@@ -10,6 +10,5 @@ module Gaku
10
10
  object.code
11
11
  end
12
12
  end
13
-
14
13
  end
15
- end
14
+ end
@@ -3,4 +3,4 @@ module Gaku
3
3
  decorates 'Gaku::Guardian'
4
4
  delegate_all
5
5
  end
6
- end
6
+ end
@@ -1,11 +1,10 @@
1
1
  module Gaku
2
2
  class PersonDecorator < Draper::Decorator
3
-
4
3
  def sex_and_birth
5
4
  [h.gender(object), object.birth_date.to_s].reject(&:empty?).join(', ')
6
5
  end
7
6
 
8
- #returns full name complete with formatting [if any]
7
+ # returns full name complete with formatting [if any]
9
8
  def formatted_name
10
9
  student_names
11
10
  end
@@ -14,10 +13,8 @@ module Gaku
14
13
  student_names reading: true
15
14
  end
16
15
 
17
- # return full name without formatting but in order,
18
- # with spaces between portions
19
16
  def full_name
20
- student_names without_formating: true
17
+ "#{object.surname} #{object.name}"
21
18
  end
22
19
 
23
20
  def full_name_reading
@@ -30,18 +27,18 @@ module Gaku
30
27
 
31
28
  if options[:without_formating]
32
29
  preset_without_format = ''
33
- preset.gsub(/%(\w+)/) {|n| preset_without_format << n + ' '}
30
+ preset.gsub(/%(\w+)/) { |n| preset_without_format << n + ' ' }
34
31
  preset = preset_without_format.strip
35
32
  end
36
33
 
37
- if options[:reading] && object.name_reading.blank? && object.surname_reading.blank? && object.middle_name_reading.blank?
34
+ if options[:reading] && object.name_reading.blank? &&
35
+ object.surname_reading.blank? &&
36
+ object.middle_name_reading.blank?
38
37
  return ''
39
38
  end
40
39
 
41
40
  reading = options[:reading]
42
- if preset.blank?
43
- return reading ? object.phonetic_reading : object.to_s
44
- end
41
+ return reading ? object.phonetic_reading : object.to_s if preset.blank?
45
42
  result = preset.gsub(/%(\w+)/) do |name|
46
43
  case name
47
44
  when '%first' then proper_name(:name, reading)
@@ -58,6 +55,5 @@ module Gaku
58
55
  def proper_name(attribute, reading)
59
56
  reading ? object.send(attribute.to_s + '_reading') : object.send(attribute)
60
57
  end
61
-
62
58
  end
63
- end
59
+ end
@@ -40,7 +40,5 @@ module Gaku
40
40
  def major_check(student_specialty)
41
41
  student_specialty.major ? h.t(:'specialty.major') : h.t(:'specialty.minor')
42
42
  end
43
-
44
-
45
43
  end
46
44
  end
@@ -3,4 +3,4 @@ module Gaku
3
3
  decorates 'Gaku::Teacher'
4
4
  delegate_all
5
5
  end
6
- end
6
+ end
@@ -3,15 +3,15 @@ module Addresses
3
3
 
4
4
  included do
5
5
  has_many :addresses, as: :addressable
6
+ has_one :primary_address, -> { where(primary: true) }, class_name: 'Gaku::Address', as: :addressable
6
7
 
7
- def get_primary_address
8
- addresses.where(primary: true).first
9
- end
8
+ # def primary_address
9
+ # addresses.where(primary: true).first
10
+ # end
10
11
 
11
12
  def address_widget
12
- "#{get_primary_address.city}, " +
13
- "#{get_primary_address.address1}" if get_primary_address
13
+ "#{primary_address.city}, " \
14
+ "#{primary_address.address1}" if primary_address
14
15
  end
15
16
  end
16
-
17
17
  end
@@ -3,15 +3,15 @@ module Contacts
3
3
 
4
4
  included do
5
5
  has_many :contacts, as: :contactable
6
+ has_one :primary_contact, -> { where(primary: true) }, class_name: 'Gaku::Contact', as: :contactable
6
7
 
7
- def get_primary_contact
8
- contacts.where(primary: true).first
9
- end
8
+
9
+ # def primary_contact
10
+ # contacts.where(primary: true).first
11
+ # end
10
12
 
11
13
  def contact_widget
12
- "#{get_primary_contact.contact_type}: #{get_primary_contact.data}" if get_primary_contact
14
+ "#{primary_contact.contact_type}: #{primary_contact.data}" if primary_contact
13
15
  end
14
16
  end
15
-
16
17
  end
17
-
@@ -0,0 +1,9 @@
1
+ module Enrollmentable
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ has_many :enrollments, as: :enrollmentable, dependent: :destroy
6
+ has_many :students, through: :enrollments
7
+ end
8
+
9
+ end
@@ -0,0 +1,14 @@
1
+ module Gradable
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ has_many :grading_method_connectors, as: :gradable
6
+ has_many :grading_methods, through: :grading_method_connectors
7
+ end
8
+
9
+ def use_primary_grading_method_set
10
+ if Gaku::GradingMethodSet.primary
11
+ grading_methods << Gaku::GradingMethodSet.primary.grading_methods
12
+ end
13
+ end
14
+ end
@@ -4,5 +4,4 @@ module Notes
4
4
  included do
5
5
  has_many :notes, as: :notable
6
6
  end
7
-
8
- end
7
+ end
@@ -4,5 +4,4 @@ module Pagination
4
4
  included do
5
5
  paginates_per 20
6
6
  end
7
-
8
- end
7
+ end
@@ -24,6 +24,4 @@ module Person
24
24
  end
25
25
 
26
26
  end
27
-
28
27
  end
29
-
@@ -2,8 +2,6 @@ module Picture
2
2
  extend ActiveSupport::Concern
3
3
 
4
4
  included do
5
- has_attached_file :picture, styles: {thumb: '256x256>'}, default_url: ':placeholder'
5
+ has_attached_file :picture, styles: { thumb: '256x256>' }, default_url: ':placeholder'
6
6
  end
7
-
8
7
  end
9
-
@@ -0,0 +1,12 @@
1
+ module Semesterable
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ has_many :semester_connectors, as: :semesterable, dependent: :destroy
6
+ has_many :semesters, through: :semester_connectors, source: :semester
7
+
8
+ scope :without_semester,
9
+ -> { includes(:semester_connectors).where(gaku_semester_connectors: { semesterable_id: nil }) }
10
+
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ module StudentReviewable
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ has_many :student_reviews, as: :student_reviewable
6
+ end
7
+ end
@@ -26,7 +26,7 @@ module Gaku
26
26
  clear_aliased_actions
27
27
 
28
28
  # override cancan default aliasing
29
- #(we don't want to differentiate between read and index)
29
+ # (we don't want to differentiate between read and index)
30
30
  alias_action :edit, to: :update
31
31
  alias_action :new, to: :create
32
32
  alias_action :new_action, to: :create
@@ -47,13 +47,11 @@ module Gaku
47
47
  end
48
48
  end
49
49
 
50
-
51
- #include any abilities registered by extensions, etc.
50
+ # include any abilities registered by extensions, etc.
52
51
  Ability.abilities.each do |clazz|
53
52
  ability = clazz.send(:new, user)
54
53
  @rules = rules + ability.send(:rules)
55
54
  end
56
-
57
55
  end
58
56
  end
59
57
  end
@@ -4,24 +4,26 @@ module Gaku
4
4
  belongs_to :state
5
5
  belongs_to :addressable, polymorphic: true, counter_cache: true
6
6
 
7
- scope :deleted, -> { where(deleted: true) }
8
7
  scope :students, -> { where(addressable_type: 'Gaku::Student') }
9
8
  scope :teachers, -> { where(addressable_type: 'Gaku::Teacher') }
10
9
  scope :guardians, -> { where(addressable_type: 'Gaku::Guardian') }
11
10
 
12
-
13
11
  validates :address1, :country, :city, presence: true
14
12
 
15
13
  accepts_nested_attributes_for :country
16
14
 
17
15
  before_create :ensure_first_primary, on: :create
18
- after_save :update_primary_address_field
16
+ # after_save :update_primary_address_field
19
17
  after_destroy :reset_counter_cache
20
18
 
19
+ def to_s
20
+ "#{city} #{address1}"
21
+ end
22
+
21
23
  def make_primary
22
24
  addresses.where.not(id: id).update_all(primary: false)
23
25
  update_attribute(:primary, true)
24
- update_primary_address_field
26
+ # update_primary_address_field
25
27
  end
26
28
 
27
29
  def primary?
@@ -79,11 +81,10 @@ module Gaku
79
81
  end
80
82
  end
81
83
 
82
- def update_primary_address_field
83
- if addressable && addressable.has_attribute?(:primary_address)
84
- addressable.update_attribute(:primary_address, addressable.address_widget)
85
- end
86
- end
87
-
84
+ # def update_primary_address_field
85
+ # if addressable && addressable.has_attribute?(:primary_address)
86
+ # addressable.update_attribute(:primary_address, addressable.address_widget)
87
+ # end
88
+ # end
88
89
  end
89
90
  end
@@ -15,7 +15,6 @@ module Gaku
15
15
  user ||= User.new
16
16
 
17
17
  can :manage, :all if user.role? :admin
18
-
19
18
  end
20
19
  end
21
20
  end
@@ -1,6 +1,5 @@
1
1
  module Gaku
2
2
  class Assignment < ActiveRecord::Base
3
-
4
3
  belongs_to :syllabus
5
4
  belongs_to :grading_method
6
5
 
@@ -10,6 +9,5 @@ module Gaku
10
9
  def to_s
11
10
  name
12
11
  end
13
-
14
12
  end
15
13
  end
@@ -8,6 +8,5 @@ module Gaku
8
8
  def to_s
9
9
  score
10
10
  end
11
-
12
11
  end
13
12
  end
@@ -1,12 +1,10 @@
1
1
  module Gaku
2
2
  class Attachment < ActiveRecord::Base
3
-
4
3
  belongs_to :attachable, polymorphic: true
5
4
 
6
5
  has_attached_file :asset
7
6
 
8
- validates_associated :attachable,
9
- message: I18n.t(:'attachment.associated')
7
+ validates_associated :attachable, message: I18n.t(:'attachment.associated')
10
8
 
11
9
  validates :name, presence: true
12
10
  validates :asset, presence: true, on: :create
@@ -14,6 +12,5 @@ module Gaku
14
12
  def to_s
15
13
  name
16
14
  end
17
-
18
15
  end
19
16
  end
@@ -1,6 +1,5 @@
1
1
  module Gaku
2
2
  class Attendance < ActiveRecord::Base
3
-
4
3
  belongs_to :attendancable, polymorphic: true
5
4
  belongs_to :student
6
5
  belongs_to :attendance_type
@@ -11,6 +10,5 @@ module Gaku
11
10
  def to_s
12
11
  reason
13
12
  end
14
-
15
13
  end
16
14
  end
@@ -1,6 +1,5 @@
1
1
  module Gaku
2
2
  class AttendanceType < ActiveRecord::Base
3
-
4
3
  has_many :attendances
5
4
 
6
5
  translates :name
@@ -10,6 +9,5 @@ module Gaku
10
9
  def to_s
11
10
  name
12
11
  end
13
-
14
12
  end
15
13
  end
@@ -1,10 +1,8 @@
1
1
  module Gaku
2
2
  class Badge < ActiveRecord::Base
3
-
4
3
  belongs_to :student, counter_cache: :badges_count
5
4
  belongs_to :badge_type
6
5
 
7
6
  validates :badge_type_id, :student_id, presence: true
8
-
9
7
  end
10
8
  end
@@ -10,6 +10,5 @@ module Gaku
10
10
  def to_s
11
11
  name
12
12
  end
13
-
14
13
  end
15
14
  end
@@ -1,23 +1,23 @@
1
1
  module Gaku
2
2
  class ClassGroup < ActiveRecord::Base
3
3
 
4
- include Notes, Pagination
4
+ include Notes, Pagination, Enrollmentable, Semesterable, StudentReviewable
5
5
 
6
- has_many :enrollments, class_name: 'Gaku::ClassGroupEnrollment'
7
- has_many :students, through: :enrollments
8
-
9
- has_many :class_group_course_enrollments, dependent: :destroy
10
- has_many :courses, through: :class_group_course_enrollments
6
+ validates :name, presence: true
11
7
 
12
- has_many :semester_class_groups, dependent: :destroy
13
- has_many :semesters, through: :semester_class_groups
8
+ def self.for_select
9
+ %w(active upcomming).map do |state|
10
+ [state.humanize, send(state).map { |cg| [cg.to_s, cg.id] }]
11
+ end
12
+ end
14
13
 
15
- validates :name, presence: true
14
+ def self.active
15
+ @active = joins(:semesters).merge(Gaku::Semester.active).uniq
16
+ end
16
17
 
17
- scope :without_semester, -> {
18
- includes(:semester_class_groups)
19
- .where(gaku_semester_class_groups: {class_group_id: nil})
20
- }
18
+ def self.upcomming
19
+ @upcomming = joins(:semesters).merge(Gaku::Semester.upcomming).uniq - active
20
+ end
21
21
 
22
22
  def to_s
23
23
  "#{grade} - #{name}"