meibo 0.27.0 → 0.28.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.
- checksums.yaml +4 -4
- data/.envrc +4 -0
- data/.rubocop.yml +14 -2
- data/.rubocop_todo.yml +0 -7
- data/Gemfile.lock +157 -56
- data/README.md +14 -3
- data/flake.lock +188 -0
- data/flake.nix +55 -0
- data/gemset.nix +658 -0
- data/lib/meibo/academic_session.rb +21 -21
- data/lib/meibo/classroom.rb +47 -34
- data/lib/meibo/classroom_set.rb +5 -1
- data/lib/meibo/converter.rb +16 -18
- data/lib/meibo/course.rb +34 -21
- data/lib/meibo/course_set.rb +5 -1
- data/lib/meibo/data_model.rb +46 -36
- data/lib/meibo/data_set.rb +8 -10
- data/lib/meibo/demographic.rb +36 -36
- data/lib/meibo/enrollment.rb +22 -22
- data/lib/meibo/enrollment_set.rb +9 -2
- data/lib/meibo/eportal/v3/classroom.rb +11 -0
- data/lib/meibo/eportal/v3/course.rb +11 -0
- data/lib/meibo/eportal/v3/enrollment.rb +11 -0
- data/lib/meibo/eportal/v3/organization.rb +11 -0
- data/lib/meibo/eportal/v3/user.rb +16 -0
- data/lib/meibo/eportal/v3/user_profile.rb +11 -0
- data/lib/meibo/eportal/v3.rb +30 -0
- data/lib/meibo/eportal/v4/user.rb +37 -0
- data/lib/meibo/eportal/v4.rb +16 -0
- data/lib/meibo/eportal.rb +6 -0
- data/lib/meibo/errors.rb +27 -5
- data/lib/meibo/factory_bot/academic_session.rb +1 -1
- data/lib/meibo/factory_bot/classroom.rb +1 -1
- data/lib/meibo/factory_bot/course.rb +1 -1
- data/lib/meibo/factory_bot/demographic.rb +1 -1
- data/lib/meibo/factory_bot/enrollment.rb +1 -1
- data/lib/meibo/factory_bot/manifest.rb +0 -21
- data/lib/meibo/factory_bot/organization.rb +1 -1
- data/lib/meibo/factory_bot/role.rb +2 -4
- data/lib/meibo/factory_bot/user.rb +7 -7
- data/lib/meibo/factory_bot/user_profile.rb +1 -1
- data/lib/meibo/japan_k12_schools_profile/v1/enrollment.rb +16 -0
- data/lib/meibo/japan_k12_schools_profile/v1.rb +20 -0
- data/lib/meibo/japan_k12_schools_profile.rb +6 -0
- data/lib/meibo/japan_profile/v1_1/academic_session.rb +29 -0
- data/lib/meibo/japan_profile/v1_1/classroom.rb +27 -0
- data/lib/meibo/japan_profile/v1_1/course.rb +16 -0
- data/lib/meibo/japan_profile/v1_1/demographic.rb +11 -0
- data/lib/meibo/japan_profile/v1_1/enrollment.rb +47 -0
- data/lib/meibo/japan_profile/v1_1/organization.rb +16 -0
- data/lib/meibo/japan_profile/v1_1/organization_set.rb +23 -0
- data/lib/meibo/japan_profile/v1_1/user.rb +39 -0
- data/lib/meibo/japan_profile/v1_1/user_set.rb +17 -0
- data/lib/meibo/japan_profile/v1_1.rb +35 -0
- data/lib/meibo/japan_profile/v1_1_1.rb +9 -0
- data/lib/meibo/japan_profile/v1_2/user.rb +42 -0
- data/lib/meibo/japan_profile/v1_2.rb +20 -0
- data/lib/meibo/japan_profile.rb +6 -0
- data/lib/meibo/manifest.rb +41 -46
- data/lib/meibo/oneroster/v1_2/user.rb +43 -0
- data/lib/meibo/oneroster/v1_2.rb +62 -0
- data/lib/meibo/oneroster/v1_2_1.rb +22 -0
- data/lib/meibo/oneroster.rb +6 -0
- data/lib/meibo/organization.rb +17 -17
- data/lib/meibo/processing_mode.rb +53 -0
- data/lib/meibo/profile.rb +8 -4
- data/lib/meibo/profiles.rb +12 -120
- data/lib/meibo/pse_interoperability_standard/v5.rb +9 -0
- data/lib/meibo/pse_interoperability_standard/v6/enrollment.rb +11 -0
- data/lib/meibo/pse_interoperability_standard/v6.rb +18 -0
- data/lib/meibo/pse_interoperability_standard.rb +6 -0
- data/lib/meibo/reader.rb +24 -36
- data/lib/meibo/role.rb +24 -24
- data/lib/meibo/roster.rb +46 -47
- data/lib/meibo/user.rb +35 -35
- data/lib/meibo/user_profile.rb +20 -20
- data/lib/meibo/user_set.rb +1 -1
- data/lib/meibo/version.rb +1 -1
- data/lib/meibo.rb +10 -2
- data/meibo.gemspec +1 -1
- metadata +45 -28
- data/lib/meibo/eportal_v3/classroom.rb +0 -15
- data/lib/meibo/eportal_v3/course.rb +0 -15
- data/lib/meibo/eportal_v3/enrollment.rb +0 -15
- data/lib/meibo/eportal_v3/organization.rb +0 -15
- data/lib/meibo/eportal_v3/user.rb +0 -16
- data/lib/meibo/eportal_v3/user_profile.rb +0 -15
- data/lib/meibo/japan_profile/academic_session.rb +0 -29
- data/lib/meibo/japan_profile/classroom.rb +0 -24
- data/lib/meibo/japan_profile/course.rb +0 -18
- data/lib/meibo/japan_profile/demographic.rb +0 -15
- data/lib/meibo/japan_profile/enrollment.rb +0 -40
- data/lib/meibo/japan_profile/organization.rb +0 -20
- data/lib/meibo/japan_profile/organization_set.rb +0 -17
- data/lib/meibo/japan_profile/role_jp_m0.rb +0 -26
- data/lib/meibo/japan_profile/user.rb +0 -45
- data/lib/meibo/japan_profile/user_m0.rb +0 -12
- data/lib/meibo/japan_profile/user_set.rb +0 -14
- data/lib/meibo/manifest/processing_mode.rb +0 -41
- data/lib/meibo/user_m0.rb +0 -47
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: meibo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.28.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Seiei Miyagi
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: csv
|
|
@@ -52,13 +51,13 @@ dependencies:
|
|
|
52
51
|
- - ">="
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
53
|
version: '0'
|
|
55
|
-
description:
|
|
56
54
|
email:
|
|
57
55
|
- hanachin@gmail.com
|
|
58
56
|
executables: []
|
|
59
57
|
extensions: []
|
|
60
58
|
extra_rdoc_files: []
|
|
61
59
|
files:
|
|
60
|
+
- ".envrc"
|
|
62
61
|
- ".rspec"
|
|
63
62
|
- ".rubocop.yml"
|
|
64
63
|
- ".rubocop_todo.yml"
|
|
@@ -69,6 +68,9 @@ files:
|
|
|
69
68
|
- LICENSE.txt
|
|
70
69
|
- README.md
|
|
71
70
|
- Rakefile
|
|
71
|
+
- flake.lock
|
|
72
|
+
- flake.nix
|
|
73
|
+
- gemset.nix
|
|
72
74
|
- lib/meibo.rb
|
|
73
75
|
- lib/meibo/academic_session.rb
|
|
74
76
|
- lib/meibo/academic_session_set.rb
|
|
@@ -94,12 +96,16 @@ files:
|
|
|
94
96
|
- lib/meibo/demographic_set.rb
|
|
95
97
|
- lib/meibo/enrollment.rb
|
|
96
98
|
- lib/meibo/enrollment_set.rb
|
|
97
|
-
- lib/meibo/
|
|
98
|
-
- lib/meibo/
|
|
99
|
-
- lib/meibo/
|
|
100
|
-
- lib/meibo/
|
|
101
|
-
- lib/meibo/
|
|
102
|
-
- lib/meibo/
|
|
99
|
+
- lib/meibo/eportal.rb
|
|
100
|
+
- lib/meibo/eportal/v3.rb
|
|
101
|
+
- lib/meibo/eportal/v3/classroom.rb
|
|
102
|
+
- lib/meibo/eportal/v3/course.rb
|
|
103
|
+
- lib/meibo/eportal/v3/enrollment.rb
|
|
104
|
+
- lib/meibo/eportal/v3/organization.rb
|
|
105
|
+
- lib/meibo/eportal/v3/user.rb
|
|
106
|
+
- lib/meibo/eportal/v3/user_profile.rb
|
|
107
|
+
- lib/meibo/eportal/v4.rb
|
|
108
|
+
- lib/meibo/eportal/v4/user.rb
|
|
103
109
|
- lib/meibo/errors.rb
|
|
104
110
|
- lib/meibo/factory_bot/academic_session.rb
|
|
105
111
|
- lib/meibo/factory_bot/all.rb
|
|
@@ -113,29 +119,42 @@ files:
|
|
|
113
119
|
- lib/meibo/factory_bot/roster.rb
|
|
114
120
|
- lib/meibo/factory_bot/user.rb
|
|
115
121
|
- lib/meibo/factory_bot/user_profile.rb
|
|
116
|
-
- lib/meibo/
|
|
117
|
-
- lib/meibo/
|
|
118
|
-
- lib/meibo/
|
|
119
|
-
- lib/meibo/japan_profile
|
|
120
|
-
- lib/meibo/japan_profile/
|
|
121
|
-
- lib/meibo/japan_profile/
|
|
122
|
-
- lib/meibo/japan_profile/
|
|
123
|
-
- lib/meibo/japan_profile/
|
|
124
|
-
- lib/meibo/japan_profile/
|
|
125
|
-
- lib/meibo/japan_profile/
|
|
126
|
-
- lib/meibo/japan_profile/
|
|
122
|
+
- lib/meibo/japan_k12_schools_profile.rb
|
|
123
|
+
- lib/meibo/japan_k12_schools_profile/v1.rb
|
|
124
|
+
- lib/meibo/japan_k12_schools_profile/v1/enrollment.rb
|
|
125
|
+
- lib/meibo/japan_profile.rb
|
|
126
|
+
- lib/meibo/japan_profile/v1_1.rb
|
|
127
|
+
- lib/meibo/japan_profile/v1_1/academic_session.rb
|
|
128
|
+
- lib/meibo/japan_profile/v1_1/classroom.rb
|
|
129
|
+
- lib/meibo/japan_profile/v1_1/course.rb
|
|
130
|
+
- lib/meibo/japan_profile/v1_1/demographic.rb
|
|
131
|
+
- lib/meibo/japan_profile/v1_1/enrollment.rb
|
|
132
|
+
- lib/meibo/japan_profile/v1_1/organization.rb
|
|
133
|
+
- lib/meibo/japan_profile/v1_1/organization_set.rb
|
|
134
|
+
- lib/meibo/japan_profile/v1_1/user.rb
|
|
135
|
+
- lib/meibo/japan_profile/v1_1/user_set.rb
|
|
136
|
+
- lib/meibo/japan_profile/v1_1_1.rb
|
|
137
|
+
- lib/meibo/japan_profile/v1_2.rb
|
|
138
|
+
- lib/meibo/japan_profile/v1_2/user.rb
|
|
127
139
|
- lib/meibo/manifest.rb
|
|
128
|
-
- lib/meibo/
|
|
140
|
+
- lib/meibo/oneroster.rb
|
|
141
|
+
- lib/meibo/oneroster/v1_2.rb
|
|
142
|
+
- lib/meibo/oneroster/v1_2/user.rb
|
|
143
|
+
- lib/meibo/oneroster/v1_2_1.rb
|
|
129
144
|
- lib/meibo/organization.rb
|
|
130
145
|
- lib/meibo/organization_set.rb
|
|
146
|
+
- lib/meibo/processing_mode.rb
|
|
131
147
|
- lib/meibo/profile.rb
|
|
132
148
|
- lib/meibo/profiles.rb
|
|
149
|
+
- lib/meibo/pse_interoperability_standard.rb
|
|
150
|
+
- lib/meibo/pse_interoperability_standard/v5.rb
|
|
151
|
+
- lib/meibo/pse_interoperability_standard/v6.rb
|
|
152
|
+
- lib/meibo/pse_interoperability_standard/v6/enrollment.rb
|
|
133
153
|
- lib/meibo/reader.rb
|
|
134
154
|
- lib/meibo/role.rb
|
|
135
155
|
- lib/meibo/role_set.rb
|
|
136
156
|
- lib/meibo/roster.rb
|
|
137
157
|
- lib/meibo/user.rb
|
|
138
|
-
- lib/meibo/user_m0.rb
|
|
139
158
|
- lib/meibo/user_profile.rb
|
|
140
159
|
- lib/meibo/user_profile_set.rb
|
|
141
160
|
- lib/meibo/user_set.rb
|
|
@@ -149,9 +168,8 @@ metadata:
|
|
|
149
168
|
allowed_push_host: https://rubygems.org/
|
|
150
169
|
homepage_uri: https://github.com/hanachin/meibo
|
|
151
170
|
source_code_uri: https://github.com/hanachin/meibo
|
|
152
|
-
changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0.
|
|
171
|
+
changelog_uri: https://github.com/hanachin/meibo/blob/meibo/v0.28.0/CHANGELOG.md
|
|
153
172
|
rubygems_mfa_required: 'true'
|
|
154
|
-
post_install_message:
|
|
155
173
|
rdoc_options: []
|
|
156
174
|
require_paths:
|
|
157
175
|
- lib
|
|
@@ -159,15 +177,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
159
177
|
requirements:
|
|
160
178
|
- - ">="
|
|
161
179
|
- !ruby/object:Gem::Version
|
|
162
|
-
version:
|
|
180
|
+
version: 3.4.0
|
|
163
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
182
|
requirements:
|
|
165
183
|
- - ">="
|
|
166
184
|
- !ruby/object:Gem::Version
|
|
167
185
|
version: '0'
|
|
168
186
|
requirements: []
|
|
169
|
-
rubygems_version:
|
|
170
|
-
signing_key:
|
|
187
|
+
rubygems_version: 4.0.10
|
|
171
188
|
specification_version: 4
|
|
172
189
|
summary: Meibo is a ruby library for OneRoster CSV Binding Japan Profile.
|
|
173
190
|
test_files: []
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module EportalV3
|
|
5
|
-
class Classroom < ::Meibo::JapanProfile::Classroom
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(
|
|
10
|
-
fullwidth: %i[title location].freeze
|
|
11
|
-
).freeze
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module EportalV3
|
|
5
|
-
class Course < ::Meibo::JapanProfile::Course
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(
|
|
10
|
-
fullwidth: %i[title].freeze
|
|
11
|
-
).freeze
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module EportalV3
|
|
5
|
-
class Enrollment < ::Meibo::JapanProfile::Enrollment
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(
|
|
10
|
-
required: [*superclass.converters[:required], :primary].freeze
|
|
11
|
-
).freeze
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module EportalV3
|
|
5
|
-
class Organization < ::Meibo::JapanProfile::Organization
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(
|
|
10
|
-
fullwidth: %i[name].freeze
|
|
11
|
-
).freeze
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module EportalV3
|
|
5
|
-
class User < ::Meibo::JapanProfile::UserM0
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(
|
|
10
|
-
fullwidth: %i[given_name family_name middle_name preferred_given_name preferred_middle_name preferred_family_name kana_given_name kana_family_name kana_middle_name].freeze,
|
|
11
|
-
required: [*superclass.converters[:required], :user_master_identifier, :preferred_given_name, :preferred_family_name, :kana_given_name, :kana_family_name].freeze
|
|
12
|
-
).freeze
|
|
13
|
-
)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module EportalV3
|
|
5
|
-
class UserProfile < ::Meibo::UserProfile
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(
|
|
10
|
-
fullwidth: %i[description].freeze
|
|
11
|
-
).freeze
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class AcademicSession < ::Meibo::AcademicSession
|
|
6
|
-
TYPES = { school_year: "schoolYear" }.freeze
|
|
7
|
-
|
|
8
|
-
DataModel.define(
|
|
9
|
-
self,
|
|
10
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
11
|
-
converters: superclass.converters.merge(
|
|
12
|
-
format: { title: /\A\d+年度\z/ },
|
|
13
|
-
enum: { type: TYPES.values.freeze }.freeze
|
|
14
|
-
)
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
# NOTE: 以下固定
|
|
18
|
-
# - titleは連携処理実行時の対象年度西暦 + 「年度」を設定
|
|
19
|
-
# - typeはschoolYear固定
|
|
20
|
-
# - start_dateは対象年度の開始日固定
|
|
21
|
-
# - end_dateは対象年度の終了日固定
|
|
22
|
-
def initialize(school_year:, title: "#{school_year}年度", type: TYPES[:school_year],
|
|
23
|
-
start_date: Date.new(school_year, 4,
|
|
24
|
-
1), end_date: Date.new(school_year + 1, 3, 31), **other_fields)
|
|
25
|
-
super(school_year: school_year, title: title, type: type, start_date: start_date, end_date: end_date, **other_fields)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class Classroom < ::Meibo::Classroom
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map.merge(
|
|
9
|
-
special_needs: "metadata.jp.specialNeeds"
|
|
10
|
-
).freeze,
|
|
11
|
-
converters: superclass.converters.merge(
|
|
12
|
-
boolean: [:special_needs].freeze,
|
|
13
|
-
enum: { class_type: TYPES.values.freeze }.freeze,
|
|
14
|
-
mext_grade_code: [:grades].freeze
|
|
15
|
-
).freeze
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
def initialize(special_needs: nil, **other_fields)
|
|
19
|
-
super(**other_fields)
|
|
20
|
-
@special_needs = special_needs
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class Course < ::Meibo::Course
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(enum: { course_code: [""].freeze }.freeze, mext_grade_code: [:grades].freeze)
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
# NOTE: courseCodeは空文字固定
|
|
13
|
-
def initialize(course_code: "", **other_fields)
|
|
14
|
-
super(course_code: course_code, **other_fields)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class Demographic < ::Meibo::Demographic
|
|
6
|
-
DataModel.define(
|
|
7
|
-
self,
|
|
8
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
9
|
-
converters: superclass.converters.merge(
|
|
10
|
-
enum: { sex: SEX.values.freeze }
|
|
11
|
-
).freeze
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class Enrollment < ::Meibo::Enrollment
|
|
6
|
-
ROLES = {
|
|
7
|
-
student: "student",
|
|
8
|
-
teacher: "teacher",
|
|
9
|
-
administrator: "administrator",
|
|
10
|
-
guardian: "guardian"
|
|
11
|
-
}.freeze
|
|
12
|
-
|
|
13
|
-
DataModel.define(
|
|
14
|
-
self,
|
|
15
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map.merge(
|
|
16
|
-
shusseki_no: "metadata.jp.ShussekiNo",
|
|
17
|
-
public_flg: "metadata.jp.PublicFlg"
|
|
18
|
-
).freeze,
|
|
19
|
-
converters: superclass.converters.merge(
|
|
20
|
-
boolean: [*superclass.converters[:boolean], :public_flg].freeze,
|
|
21
|
-
enum: { role: ROLES.values.freeze }.freeze,
|
|
22
|
-
integer: [:shusseki_no].freeze
|
|
23
|
-
).freeze
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
# NOTE: 児童生徒の場合primaryはfalse固定
|
|
27
|
-
# MEMO: 保護者の場合もそうでは?
|
|
28
|
-
def initialize(role:, shusseki_no: nil, public_flg: nil, primary: (role == ROLES[:student] ? false : nil),
|
|
29
|
-
**other_fields)
|
|
30
|
-
super(role: role, primary: primary, **other_fields)
|
|
31
|
-
@shusseki_no = shusseki_no
|
|
32
|
-
@public_flg = public_flg
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def guardian?
|
|
36
|
-
role == ROLES[:guardian]
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class Organization < ::Meibo::Organization
|
|
6
|
-
TYPES = {
|
|
7
|
-
district: "district",
|
|
8
|
-
school: "school"
|
|
9
|
-
}.freeze
|
|
10
|
-
|
|
11
|
-
DataModel.define(
|
|
12
|
-
self,
|
|
13
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
14
|
-
converters: superclass.converters.merge(
|
|
15
|
-
enum: { type: TYPES.values.freeze }
|
|
16
|
-
).freeze
|
|
17
|
-
)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class OrganizationSet < ::Meibo::OrganizationSet
|
|
6
|
-
def check_semantically_consistent
|
|
7
|
-
super
|
|
8
|
-
|
|
9
|
-
each do |organization|
|
|
10
|
-
next unless organization.parent_sourced_id
|
|
11
|
-
|
|
12
|
-
raise InvalidDataTypeError if organization.district?
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class RoleJpM0 < ::Meibo::Role
|
|
6
|
-
# NOTE: roleは固定
|
|
7
|
-
# - 児童生徒の場合student
|
|
8
|
-
# - 教職員の場合teacher
|
|
9
|
-
# - 保護者の場合guardian
|
|
10
|
-
# MEMO: enrollments.csvの方ではadministratorとguardianも許可されているがズレてないか
|
|
11
|
-
ROLES = {
|
|
12
|
-
teacher: "teacher",
|
|
13
|
-
student: "student",
|
|
14
|
-
guardian: "guardian"
|
|
15
|
-
}.freeze
|
|
16
|
-
|
|
17
|
-
DataModel.define(
|
|
18
|
-
self,
|
|
19
|
-
attribute_name_to_header_field_map: superclass.attribute_name_to_header_field_map,
|
|
20
|
-
converters: superclass.converters.merge(
|
|
21
|
-
enum: superclass.converters[:enum].merge(role: ROLES.values).freeze
|
|
22
|
-
)
|
|
23
|
-
)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class User < ::Meibo::User
|
|
6
|
-
module ClassMethods
|
|
7
|
-
def define_additional_definition(klass)
|
|
8
|
-
DataModel.define(
|
|
9
|
-
klass,
|
|
10
|
-
attribute_name_to_header_field_map: klass.superclass.attribute_name_to_header_field_map.merge(
|
|
11
|
-
kana_given_name: "metadata.jp.kanaGivenName",
|
|
12
|
-
kana_family_name: "metadata.jp.kanaFamilyName",
|
|
13
|
-
kana_middle_name: "metadata.jp.kanaMiddleName",
|
|
14
|
-
home_class: "metadata.jp.homeClass"
|
|
15
|
-
).freeze,
|
|
16
|
-
converters: klass.superclass.converters.merge(
|
|
17
|
-
mext_grade_code: [:grades].freeze
|
|
18
|
-
)
|
|
19
|
-
)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
module InstanceMethods
|
|
24
|
-
# NOTE: enabled_userは必須ではないが固定
|
|
25
|
-
def initialize(enabled_user: true, kana_given_name: nil, kana_family_name: nil, kana_middle_name: nil,
|
|
26
|
-
home_class: nil, **other_fields)
|
|
27
|
-
super(enabled_user: enabled_user, **other_fields)
|
|
28
|
-
@kana_given_name = kana_given_name
|
|
29
|
-
@kana_family_name = kana_family_name
|
|
30
|
-
@kana_middle_name = kana_middle_name
|
|
31
|
-
@home_class = home_class
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def home_classroom
|
|
35
|
-
home_class && Meibo.current_roster.classes.find(home_class)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
include InstanceMethods
|
|
40
|
-
extend ClassMethods
|
|
41
|
-
|
|
42
|
-
define_additional_definition(self)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
module JapanProfile
|
|
5
|
-
class UserSet < ::Meibo::UserSet
|
|
6
|
-
def check_semantically_consistent
|
|
7
|
-
super
|
|
8
|
-
each do |user|
|
|
9
|
-
roster.classes.find(user.home_class) if user.home_class
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
class Manifest
|
|
5
|
-
class ProcessingMode
|
|
6
|
-
attr_reader :mode
|
|
7
|
-
|
|
8
|
-
def initialize(mode)
|
|
9
|
-
@mode = mode
|
|
10
|
-
freeze
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def absent?
|
|
14
|
-
@mode == "absent"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def bulk?
|
|
18
|
-
@mode == "bulk"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def delta?
|
|
22
|
-
@mode == "delta"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def ==(other)
|
|
26
|
-
case other
|
|
27
|
-
when ProcessingMode
|
|
28
|
-
@mode == other.mode
|
|
29
|
-
when String
|
|
30
|
-
to_s == other
|
|
31
|
-
else
|
|
32
|
-
false
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def to_s
|
|
37
|
-
@mode
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
data/lib/meibo/user_m0.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Meibo
|
|
4
|
-
class UserM0 < ::Meibo::User
|
|
5
|
-
DataModel.define(
|
|
6
|
-
self,
|
|
7
|
-
attribute_name_to_header_field_map: {
|
|
8
|
-
sourced_id: "sourcedId",
|
|
9
|
-
status: "status",
|
|
10
|
-
date_last_modified: "dateLastModified",
|
|
11
|
-
enabled_user: "enabledUser",
|
|
12
|
-
username: "username",
|
|
13
|
-
user_ids: "userIds",
|
|
14
|
-
given_name: "givenName",
|
|
15
|
-
family_name: "familyName",
|
|
16
|
-
middle_name: "middleName",
|
|
17
|
-
identifier: "identifier",
|
|
18
|
-
email: "email",
|
|
19
|
-
sms: "sms",
|
|
20
|
-
phone: "phone",
|
|
21
|
-
agent_sourced_ids: "agentSourcedIds",
|
|
22
|
-
grades: "grades",
|
|
23
|
-
password: "password",
|
|
24
|
-
user_master_identifier: "userMasterIdentifier",
|
|
25
|
-
resource_sourced_ids: "resourceSourcedIds",
|
|
26
|
-
preferred_given_name: "preferredGivenName",
|
|
27
|
-
preferred_middle_name: "preferredMiddleName",
|
|
28
|
-
preferred_family_name: "preferredFamilyName",
|
|
29
|
-
primary_org_sourced_id: "primaryOrgSourcedId",
|
|
30
|
-
pronouns: "pronouns"
|
|
31
|
-
}.freeze,
|
|
32
|
-
converters: superclass.converters.merge(
|
|
33
|
-
list: %i[user_ids agent_sourced_ids grades resource_sourced_ids].freeze
|
|
34
|
-
)
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
# NOTE: enabled_userは必須ではないが固定
|
|
38
|
-
def initialize(resource_sourced_ids: nil, **other_fields)
|
|
39
|
-
super(**other_fields)
|
|
40
|
-
@resource_sourced_ids = resource_sourced_ids
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def home_classroom
|
|
44
|
-
home_class && Meibo.current_roster.classes.find(home_class)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|