meibo 0.16.0 → 0.17.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/.rubocop.yml +8 -4
- data/.rubocop_todo.yml +130 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +11 -2
- data/lib/meibo/academic_session.rb +17 -16
- data/lib/meibo/builder/academic_session_builder.rb +2 -2
- data/lib/meibo/builder/base_builder.rb +3 -2
- data/lib/meibo/builder/classroom_builder.rb +3 -3
- data/lib/meibo/builder/course_builder.rb +3 -3
- data/lib/meibo/builder/demographic_builder.rb +2 -2
- data/lib/meibo/builder/enrollment_builder.rb +3 -3
- data/lib/meibo/builder/organization_builder.rb +2 -2
- data/lib/meibo/builder/role_builder.rb +3 -3
- data/lib/meibo/builder/user_builder.rb +2 -2
- data/lib/meibo/builder/user_profile_builder.rb +3 -3
- data/lib/meibo/builder.rb +3 -2
- data/lib/meibo/classroom.rb +27 -28
- data/lib/meibo/classroom_set.rb +1 -3
- data/lib/meibo/converter.rb +29 -31
- data/lib/meibo/course.rb +15 -16
- data/lib/meibo/course_set.rb +1 -3
- data/lib/meibo/data_model.rb +6 -9
- data/lib/meibo/data_set.rb +17 -8
- data/lib/meibo/demographic.rb +30 -29
- data/lib/meibo/enrollment.rb +18 -17
- data/lib/meibo/factory_bot/academic_session.rb +3 -3
- data/lib/meibo/factory_bot/all.rb +11 -11
- data/lib/meibo/factory_bot/classroom.rb +4 -4
- data/lib/meibo/factory_bot/course.rb +4 -4
- data/lib/meibo/factory_bot/demographic.rb +3 -3
- data/lib/meibo/factory_bot/enrollment.rb +3 -3
- data/lib/meibo/factory_bot/manifest.rb +2 -2
- data/lib/meibo/factory_bot/organization.rb +15 -12
- data/lib/meibo/factory_bot/role.rb +3 -3
- data/lib/meibo/factory_bot/roster.rb +2 -2
- data/lib/meibo/factory_bot/user.rb +6 -6
- data/lib/meibo/factory_bot/user_profile.rb +7 -7
- data/lib/meibo/japan_profile/academic_session.rb +4 -2
- data/lib/meibo/japan_profile/classroom.rb +1 -1
- data/lib/meibo/japan_profile/course.rb +2 -2
- data/lib/meibo/japan_profile/enrollment.rb +9 -8
- data/lib/meibo/japan_profile/organization.rb +2 -2
- data/lib/meibo/japan_profile/role.rb +3 -3
- data/lib/meibo/japan_profile/user.rb +6 -5
- data/lib/meibo/japan_profile/user_set.rb +1 -3
- data/lib/meibo/japan_profile.rb +2 -2
- data/lib/meibo/manifest/processing_mode.rb +6 -5
- data/lib/meibo/manifest.rb +47 -41
- data/lib/meibo/organization.rb +16 -15
- data/lib/meibo/profile.rb +3 -3
- data/lib/meibo/reader.rb +11 -7
- data/lib/meibo/role.rb +28 -27
- data/lib/meibo/role_set.rb +1 -3
- data/lib/meibo/roster.rb +64 -41
- data/lib/meibo/user.rb +29 -28
- data/lib/meibo/user_profile.rb +14 -13
- data/lib/meibo/user_set.rb +1 -3
- data/lib/meibo/version.rb +1 -1
- data/lib/meibo.rb +2 -2
- data/meibo.gemspec +2 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5350e34b1f267f232e20b8551f5b34b24977191b4806d081f66934e816ef6a2
|
4
|
+
data.tar.gz: 71e84fe449b9b64a78cf53b605633eacc9e0a56ebefe80d844e36741b2a760fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40950b59e99e11e1925afbb8474d5b09b7812619348a216a55639ea960a0fa5cff4c584850395cc5180b0057f65ed02439adeae5d9570b9837037a1cfe04e038
|
7
|
+
data.tar.gz: 8fbf1f6b72c2939c0a8ac9cf39fb1094eca8838b09f8024ce4fe4b31d8845c72402d2c871e21eaccf5c4ca615e796fcd7bab41e517061e5edc437e152f5a10b9
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,12 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-rake
|
3
|
+
- rubocop-rspec
|
4
|
+
|
5
|
+
inherit_from: .rubocop_todo.yml
|
6
|
+
|
1
7
|
AllCops:
|
2
|
-
|
8
|
+
NewCops: enable
|
9
|
+
TargetRubyVersion: 2.7
|
3
10
|
|
4
11
|
Style/StringLiterals:
|
5
12
|
Enabled: true
|
@@ -8,6 +15,3 @@ Style/StringLiterals:
|
|
8
15
|
Style/StringLiteralsInInterpolation:
|
9
16
|
Enabled: true
|
10
17
|
EnforcedStyle: double_quotes
|
11
|
-
|
12
|
-
Layout/LineLength:
|
13
|
-
Max: 120
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2022-12-06 10:28:10 UTC using RuboCop version 1.36.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 19
|
10
|
+
# Configuration parameters: AllowComments.
|
11
|
+
Lint/EmptyInPattern:
|
12
|
+
Exclude:
|
13
|
+
- 'spec/meibo/reader_spec.rb'
|
14
|
+
- 'spec/meibo/roster_spec.rb'
|
15
|
+
|
16
|
+
# Offense count: 1
|
17
|
+
# This cop supports safe autocorrection (--autocorrect).
|
18
|
+
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods.
|
19
|
+
Lint/UnusedMethodArgument:
|
20
|
+
Exclude:
|
21
|
+
- 'lib/meibo/enrollment.rb'
|
22
|
+
|
23
|
+
# Offense count: 10
|
24
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes.
|
25
|
+
Metrics/AbcSize:
|
26
|
+
Max: 28
|
27
|
+
|
28
|
+
# Offense count: 11
|
29
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods, inherit_mode.
|
30
|
+
# AllowedMethods: refine
|
31
|
+
Metrics/BlockLength:
|
32
|
+
Max: 57
|
33
|
+
|
34
|
+
# Offense count: 4
|
35
|
+
# Configuration parameters: CountComments, CountAsOne.
|
36
|
+
Metrics/ClassLength:
|
37
|
+
Max: 156
|
38
|
+
|
39
|
+
# Offense count: 1
|
40
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
|
41
|
+
Metrics/CyclomaticComplexity:
|
42
|
+
Max: 10
|
43
|
+
|
44
|
+
# Offense count: 26
|
45
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
|
46
|
+
Metrics/MethodLength:
|
47
|
+
Max: 25
|
48
|
+
|
49
|
+
# Offense count: 1
|
50
|
+
# Configuration parameters: CountComments, CountAsOne.
|
51
|
+
Metrics/ModuleLength:
|
52
|
+
Max: 222
|
53
|
+
|
54
|
+
# Offense count: 16
|
55
|
+
# Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
|
56
|
+
Metrics/ParameterLists:
|
57
|
+
Max: 25
|
58
|
+
|
59
|
+
# Offense count: 1
|
60
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
|
61
|
+
Metrics/PerceivedComplexity:
|
62
|
+
Max: 11
|
63
|
+
|
64
|
+
# Offense count: 25
|
65
|
+
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
|
66
|
+
# AllowedNames: as, at, by, db, id, in, io, ip, of, on, os, pp, to
|
67
|
+
Naming/MethodParameterName:
|
68
|
+
Exclude:
|
69
|
+
- 'lib/meibo/builder.rb'
|
70
|
+
- 'lib/meibo/builder/academic_session_builder.rb'
|
71
|
+
- 'lib/meibo/builder/classroom_builder.rb'
|
72
|
+
- 'lib/meibo/builder/course_builder.rb'
|
73
|
+
- 'lib/meibo/builder/demographic_builder.rb'
|
74
|
+
- 'lib/meibo/builder/enrollment_builder.rb'
|
75
|
+
- 'lib/meibo/builder/organization_builder.rb'
|
76
|
+
- 'lib/meibo/builder/role_builder.rb'
|
77
|
+
- 'lib/meibo/builder/user_builder.rb'
|
78
|
+
- 'lib/meibo/builder/user_profile_builder.rb'
|
79
|
+
|
80
|
+
# Offense count: 5
|
81
|
+
# Configuration parameters: CountAsOne.
|
82
|
+
RSpec/ExampleLength:
|
83
|
+
Max: 213
|
84
|
+
|
85
|
+
# Offense count: 1
|
86
|
+
# Configuration parameters: Include, CustomTransform, IgnoreMethods, SpecSuffixOnly.
|
87
|
+
# Include: **/*_spec*rb*, **/spec/**/*
|
88
|
+
RSpec/FilePath:
|
89
|
+
Exclude:
|
90
|
+
- 'spec/meibo/japan_profile_user_set_spec.rb'
|
91
|
+
|
92
|
+
# Offense count: 2
|
93
|
+
RSpec/MultipleExpectations:
|
94
|
+
Max: 9
|
95
|
+
|
96
|
+
# Offense count: 4
|
97
|
+
# Configuration parameters: AllowSubject.
|
98
|
+
RSpec/MultipleMemoizedHelpers:
|
99
|
+
Max: 6
|
100
|
+
|
101
|
+
# Offense count: 1
|
102
|
+
# Configuration parameters: AllowedGroups.
|
103
|
+
RSpec/NestedGroups:
|
104
|
+
Max: 4
|
105
|
+
|
106
|
+
# Offense count: 49
|
107
|
+
# Configuration parameters: AllowedConstants.
|
108
|
+
Style/Documentation:
|
109
|
+
Enabled: false
|
110
|
+
|
111
|
+
# Offense count: 2
|
112
|
+
# This cop supports safe autocorrection (--autocorrect).
|
113
|
+
# Configuration parameters: EnforcedStyle.
|
114
|
+
# SupportedStyles: format, sprintf, percent
|
115
|
+
Style/FormatString:
|
116
|
+
Exclude:
|
117
|
+
- 'lib/meibo/converter.rb'
|
118
|
+
- 'lib/meibo/factory_bot/organization.rb'
|
119
|
+
|
120
|
+
# Offense count: 1
|
121
|
+
Style/MultilineBlockChain:
|
122
|
+
Exclude:
|
123
|
+
- 'lib/meibo/data_set.rb'
|
124
|
+
|
125
|
+
# Offense count: 12
|
126
|
+
# This cop supports safe autocorrection (--autocorrect).
|
127
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, IgnoredPatterns.
|
128
|
+
# URISchemes: http, https
|
129
|
+
Layout/LineLength:
|
130
|
+
Max: 454
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
meibo (0.
|
4
|
+
meibo (0.17.0)
|
5
|
+
csv (>= 3.1.4)
|
5
6
|
rubyzip
|
6
7
|
zeitwerk
|
7
8
|
|
@@ -15,6 +16,7 @@ GEM
|
|
15
16
|
tzinfo (~> 2.0)
|
16
17
|
ast (2.4.2)
|
17
18
|
concurrent-ruby (1.1.10)
|
19
|
+
csv (3.2.5)
|
18
20
|
debug (1.6.3)
|
19
21
|
irb (>= 1.3.6)
|
20
22
|
reline (>= 0.3.1)
|
@@ -62,14 +64,19 @@ GEM
|
|
62
64
|
unicode-display_width (>= 1.4.0, < 3.0)
|
63
65
|
rubocop-ast (1.22.0)
|
64
66
|
parser (>= 3.1.1.0)
|
67
|
+
rubocop-rake (0.6.0)
|
68
|
+
rubocop (~> 1.0)
|
69
|
+
rubocop-rspec (2.15.0)
|
70
|
+
rubocop (~> 1.33)
|
65
71
|
ruby-progressbar (1.11.0)
|
66
72
|
rubyzip (2.3.2)
|
67
73
|
tzinfo (2.0.5)
|
68
74
|
concurrent-ruby (~> 1.0)
|
69
75
|
unicode-display_width (2.3.0)
|
70
|
-
zeitwerk (2.6.
|
76
|
+
zeitwerk (2.6.6)
|
71
77
|
|
72
78
|
PLATFORMS
|
79
|
+
ruby
|
73
80
|
x86_64-linux
|
74
81
|
|
75
82
|
DEPENDENCIES
|
@@ -79,6 +86,8 @@ DEPENDENCIES
|
|
79
86
|
rake (~> 13.0)
|
80
87
|
rspec (~> 3.0)
|
81
88
|
rubocop (~> 1.21)
|
89
|
+
rubocop-rake
|
90
|
+
rubocop-rspec
|
82
91
|
|
83
92
|
BUNDLED WITH
|
84
93
|
2.3.7
|
@@ -3,36 +3,37 @@
|
|
3
3
|
module Meibo
|
4
4
|
class AcademicSession
|
5
5
|
TYPES = {
|
6
|
-
grading_period:
|
7
|
-
semester:
|
8
|
-
school_year:
|
9
|
-
term:
|
6
|
+
grading_period: "gradingPeriod",
|
7
|
+
semester: "semester",
|
8
|
+
school_year: "schoolYear",
|
9
|
+
term: "term"
|
10
10
|
}.freeze
|
11
11
|
|
12
12
|
DataModel.define(
|
13
13
|
self,
|
14
14
|
attribute_name_to_header_field_map: {
|
15
|
-
sourced_id:
|
16
|
-
status:
|
17
|
-
date_last_modified:
|
18
|
-
title:
|
19
|
-
type:
|
20
|
-
start_date:
|
21
|
-
end_date:
|
22
|
-
parent_sourced_id:
|
23
|
-
school_year:
|
15
|
+
sourced_id: "sourcedId",
|
16
|
+
status: "status",
|
17
|
+
date_last_modified: "dateLastModified",
|
18
|
+
title: "title",
|
19
|
+
type: "type",
|
20
|
+
start_date: "startDate",
|
21
|
+
end_date: "endDate",
|
22
|
+
parent_sourced_id: "parentSourcedId",
|
23
|
+
school_year: "schoolYear"
|
24
24
|
}.freeze,
|
25
25
|
converters: {
|
26
26
|
enum: { type: [*TYPES.values.freeze, ENUM_EXT_PATTERN] }.freeze,
|
27
|
-
date: [
|
27
|
+
date: %i[start_date end_date].freeze,
|
28
28
|
datetime: [:date_last_modified].freeze,
|
29
|
-
required: [
|
29
|
+
required: %i[sourced_id title type start_date end_date school_year].freeze,
|
30
30
|
status: [:status].freeze,
|
31
31
|
year: [:school_year].freeze
|
32
32
|
}.freeze
|
33
33
|
)
|
34
34
|
|
35
|
-
def initialize(sourced_id:,
|
35
|
+
def initialize(sourced_id:, school_year:, type:, start_date:, end_date:, status: nil, date_last_modified: nil,
|
36
|
+
title: nil, parent_sourced_id: nil, **extension_fields)
|
36
37
|
@sourced_id = sourced_id
|
37
38
|
@status = status
|
38
39
|
@date_last_modified = date_last_modified
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,7 +8,7 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder parent]
|
12
12
|
end
|
13
13
|
|
14
14
|
def initialize(builder:, sourced_id: SecureRandom.uuid, parent: nil, **kw)
|
@@ -1,13 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Meibo
|
2
4
|
class Builder
|
3
5
|
module BaseBuilder
|
4
6
|
def create(klass)
|
5
7
|
builder_klass = Class.new(klass)
|
6
8
|
builder_klass.prepend(self)
|
7
|
-
builder_klass.attr_reader(*
|
9
|
+
builder_klass.attr_reader(*builder_attribute_names)
|
8
10
|
builder_klass
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
13
|
-
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,10 +8,10 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder course school terms]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(builder:,
|
14
|
+
def initialize(builder:, course:, school:, terms:, sourced_id: SecureRandom.uuid, **kw)
|
15
15
|
super(
|
16
16
|
sourced_id: sourced_id,
|
17
17
|
course_sourced_id: course.sourced_id,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,10 +8,10 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder school_year organization]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(builder:, sourced_id: SecureRandom.uuid, school_year: nil,
|
14
|
+
def initialize(builder:, organization:, sourced_id: SecureRandom.uuid, school_year: nil, **kw)
|
15
15
|
super(
|
16
16
|
sourced_id: sourced_id,
|
17
17
|
school_year_sourced_id: school_year&.sourced_id,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,7 +8,7 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder user]
|
12
12
|
end
|
13
13
|
|
14
14
|
def initialize(builder:, user:, **kw)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,10 +8,10 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder classroom school user]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(builder:,
|
14
|
+
def initialize(builder:, classroom:, school:, user:, sourced_id: SecureRandom.uuid, **kw)
|
15
15
|
super(
|
16
16
|
sourced_id: sourced_id,
|
17
17
|
class_sourced_id: classroom.sourced_id,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,7 +8,7 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder parent]
|
12
12
|
end
|
13
13
|
|
14
14
|
def initialize(builder:, sourced_id: SecureRandom.uuid, parent: nil, **kw)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,10 +8,10 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder user organization user_profile]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(builder:, sourced_id: SecureRandom.uuid,
|
14
|
+
def initialize(builder:, user:, organization:, sourced_id: SecureRandom.uuid, user_profile: nil, **kw)
|
15
15
|
super(
|
16
16
|
sourced_id: sourced_id,
|
17
17
|
user_sourced_id: user.sourced_id,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,7 +8,7 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder agents primary_organization]
|
12
12
|
end
|
13
13
|
|
14
14
|
def initialize(builder:, sourced_id: SecureRandom.uuid, agents: nil, primary_organization: nil, **kw)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "securerandom"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,10 +8,10 @@ module Meibo
|
|
8
8
|
extend BaseBuilder
|
9
9
|
|
10
10
|
def self.builder_attribute_names
|
11
|
-
[
|
11
|
+
%i[builder user]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(builder:, sourced_id: SecureRandom.uuid,
|
14
|
+
def initialize(builder:, user:, sourced_id: SecureRandom.uuid, **kw)
|
15
15
|
super(sourced_id: sourced_id, user_sourced_id: user.sourced_id, **kw)
|
16
16
|
@builder = builder
|
17
17
|
@user = user
|
data/lib/meibo/builder.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "forwardable"
|
4
4
|
|
5
5
|
module Meibo
|
6
6
|
class Builder
|
@@ -8,7 +8,8 @@ module Meibo
|
|
8
8
|
|
9
9
|
attr_reader :roster, :profile
|
10
10
|
|
11
|
-
def_delegators :@roster, :academic_sessions, :classes, :courses, :demographics, :enrollments, :organizations,
|
11
|
+
def_delegators :@roster, :academic_sessions, :classes, :courses, :demographics, :enrollments, :organizations,
|
12
|
+
:roles, :users, :user_profiles
|
12
13
|
|
13
14
|
def initialize(roster:, profile: Meibo.default_profile)
|
14
15
|
@roster = roster
|
data/lib/meibo/classroom.rb
CHANGED
@@ -3,49 +3,48 @@
|
|
3
3
|
module Meibo
|
4
4
|
class Classroom
|
5
5
|
TYPES = {
|
6
|
-
homeroom:
|
7
|
-
scheduled:
|
6
|
+
homeroom: "homeroom",
|
7
|
+
scheduled: "scheduled"
|
8
8
|
}.freeze
|
9
9
|
|
10
10
|
DataModel.define(
|
11
11
|
self,
|
12
12
|
attribute_name_to_header_field_map: {
|
13
|
-
sourced_id:
|
14
|
-
status:
|
15
|
-
date_last_modified:
|
16
|
-
title:
|
17
|
-
grades:
|
18
|
-
course_sourced_id:
|
19
|
-
class_code:
|
20
|
-
class_type:
|
21
|
-
location:
|
22
|
-
school_sourced_id:
|
23
|
-
term_sourced_ids:
|
24
|
-
subjects:
|
25
|
-
subject_codes:
|
26
|
-
periods:
|
13
|
+
sourced_id: "sourcedId",
|
14
|
+
status: "status",
|
15
|
+
date_last_modified: "dateLastModified",
|
16
|
+
title: "title",
|
17
|
+
grades: "grades",
|
18
|
+
course_sourced_id: "courseSourcedId",
|
19
|
+
class_code: "classCode",
|
20
|
+
class_type: "classType",
|
21
|
+
location: "location",
|
22
|
+
school_sourced_id: "schoolSourcedId",
|
23
|
+
term_sourced_ids: "termSourcedIds",
|
24
|
+
subjects: "subjects",
|
25
|
+
subject_codes: "subjectCodes",
|
26
|
+
periods: "periods"
|
27
27
|
}.freeze,
|
28
28
|
converters: {
|
29
29
|
datetime: [:date_last_modified].freeze,
|
30
30
|
enum: {
|
31
31
|
class_type: [*TYPES.values, ENUM_EXT_PATTERN].freeze
|
32
32
|
}.freeze,
|
33
|
-
list: [
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
list: %i[
|
34
|
+
grades
|
35
|
+
term_sourced_ids
|
36
|
+
subjects
|
37
|
+
subject_codes
|
38
|
+
periods
|
39
39
|
].freeze,
|
40
|
-
required: [
|
40
|
+
required: %i[sourced_id title class_type course_sourced_id term_sourced_ids school_sourced_id].freeze,
|
41
41
|
status: [:status].freeze
|
42
42
|
}
|
43
43
|
)
|
44
44
|
|
45
|
-
def initialize(sourced_id:,
|
46
|
-
|
47
|
-
|
48
|
-
end
|
45
|
+
def initialize(sourced_id:, title:, course_sourced_id:, class_type:, school_sourced_id:, term_sourced_ids:, status: nil, date_last_modified: nil, grades: [],
|
46
|
+
class_code: nil, location: nil, subjects: [], subject_codes: [], periods: [], **extension_fields)
|
47
|
+
raise InvalidDataTypeError unless subjects.is_a?(Array) && subject_codes.is_a?(Array) && subjects.size == subject_codes.size
|
49
48
|
|
50
49
|
@sourced_id = sourced_id
|
51
50
|
@status = status
|
@@ -85,7 +84,7 @@ module Meibo
|
|
85
84
|
end
|
86
85
|
|
87
86
|
def terms
|
88
|
-
term_sourced_ids.map {|term_sourced_id| Meibo.current_roster.academic_sessions.find(term_sourced_id) }
|
87
|
+
term_sourced_ids.map { |term_sourced_id| Meibo.current_roster.academic_sessions.find(term_sourced_id) }
|
89
88
|
end
|
90
89
|
|
91
90
|
def enrollments
|
data/lib/meibo/classroom_set.rb
CHANGED
@@ -9,9 +9,7 @@ module Meibo
|
|
9
9
|
roster.organizations.find(classroom.school_sourced_id)
|
10
10
|
roster.courses.find(classroom.course_sourced_id)
|
11
11
|
|
12
|
-
if classroom.term_sourced_ids.empty?
|
13
|
-
raise DataNotFoundError, "termSourcedIdは1つ以上指定してください"
|
14
|
-
end
|
12
|
+
raise DataNotFoundError, "termSourcedIdは1つ以上指定してください" if classroom.term_sourced_ids.empty?
|
15
13
|
|
16
14
|
classroom.term_sourced_ids.each do |term_sourced_id|
|
17
15
|
roster.academic_sessions.find(term_sourced_id)
|