gaku_core 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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}"