gaku_sample 0.0.1
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 +7 -0
- data/db/sample/gaku/achievements.rb +12 -0
- data/db/sample/gaku/changes/student_changes.rb +35 -0
- data/db/sample/gaku/class_groups.rb +22 -0
- data/db/sample/gaku/course_groups.rb +7 -0
- data/db/sample/gaku/courses.rb +9 -0
- data/db/sample/gaku/disposals/address_and_contact_disposals.rb +26 -0
- data/db/sample/gaku/disposals/attachment_disposals.rb +9 -0
- data/db/sample/gaku/disposals/course_group_disposals.rb +8 -0
- data/db/sample/gaku/disposals/exam_disposals.rb +8 -0
- data/db/sample/gaku/disposals/student_disposals.rb +10 -0
- data/db/sample/gaku/disposals/teacher_disposals.rb +8 -0
- data/db/sample/gaku/exams.rb +14 -0
- data/db/sample/gaku/extracurricular_activities.rb +7 -0
- data/db/sample/gaku/grading_widget.rb +31 -0
- data/db/sample/gaku/images/120x120.jpg +0 -0
- data/db/sample/gaku/roles.rb +9 -0
- data/db/sample/gaku/specialties.rb +10 -0
- data/db/sample/gaku/students.rb +22 -0
- data/db/sample/gaku/syllabuses.rb +130 -0
- data/db/sample/gaku/teachers.rb +31 -0
- data/db/sample/gaku/users.rb +59 -0
- data/lib/gaku_sample.rb +10 -0
- data/lib/sample_counters.rb +23 -0
- data/lib/shared_sample_data.rb +108 -0
- data/lib/tasks/sample.rake +73 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b1794cb88a013519c12d7678daf65b24bd04a518
|
4
|
+
data.tar.gz: 4a7db83bb0521993d66ab4a4b480a8c78ef27d14
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 033adb52b869b58bfeea404bf7401a8d542e36ec37f0c58984b17180c908ce0a7a6a909555724f85ac966dff2592e0fa3e51b1ce18da6ccb0b024bbfa5a6a5c4
|
7
|
+
data.tar.gz: c214499d62dd813cbbe8e43b67c40ff85d379494e7001ad6748cfc8a5e431b2c8378f92aec03911553382a16ac2182e49da709f82e8434134735e428afc7279e
|
@@ -0,0 +1,12 @@
|
|
1
|
+
els = %w(
|
2
|
+
JuniorRuby SeniorRuby RubyGuru
|
3
|
+
JuniorJavascript SeniorJavascript JavascriptGuru
|
4
|
+
JuniorClojure SeniorClojure ClojureGuru
|
5
|
+
JuniorScala SeniorScala ScalaGuru
|
6
|
+
)
|
7
|
+
|
8
|
+
say "Creating #{els.size} achievements ...".yellow
|
9
|
+
|
10
|
+
els.each do |el|
|
11
|
+
Gaku::Achievement.where(name: el).first_or_create!
|
12
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'shared_sample_data'
|
3
|
+
|
4
|
+
say "Creating #{@count[:changes]} student changes ...".yellow
|
5
|
+
|
6
|
+
commute_method_type = Gaku::CommuteMethodType.where(name: 'Changed CommuteMethodType').first_or_create!
|
7
|
+
scholarship_status = Gaku::ScholarshipStatus.where(name: 'Changed Scholarship Status').first_or_create!
|
8
|
+
enrollment_status = Gaku::EnrollmentStatus.where(code: 'changed_enrollment_status').first_or_create!
|
9
|
+
|
10
|
+
counter = 0
|
11
|
+
|
12
|
+
batch_create(@count[:changes]) do
|
13
|
+
counter += 1
|
14
|
+
random_student = random_person.merge(
|
15
|
+
commute_method_type: @commute_method_type,
|
16
|
+
enrollment_status_code: @enrollment_status,
|
17
|
+
scholarship_status: @scholarship_status,
|
18
|
+
student_id_number: "number_#{counter}",
|
19
|
+
student_foreign_id_number: "foreign_number_#{counter}",
|
20
|
+
)
|
21
|
+
|
22
|
+
student = Gaku::Student.where(random_student).first_or_create!
|
23
|
+
student.name = Faker::Name.first_name
|
24
|
+
student.middle_name = Faker::Name.first_name
|
25
|
+
student.surname = Faker::Name.last_name
|
26
|
+
student.enrollment_status_code = enrollment_status.code
|
27
|
+
student.commute_method_type = commute_method_type
|
28
|
+
student.scholarship_status = scholarship_status
|
29
|
+
student.student_id_number = "number_#{counter+100}"
|
30
|
+
student.student_foreign_id_number = "foreign_number_#{counter+100}"
|
31
|
+
student.save!
|
32
|
+
|
33
|
+
student.soft_delete
|
34
|
+
student.destroy
|
35
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class_groups = [
|
4
|
+
{ name: 'Ms. Moore 3rd Grade', grade: 3 },
|
5
|
+
{ name: 'Advanced', grade: 5 },
|
6
|
+
{ name: 'Mr. Nagae', grade: 7 },
|
7
|
+
{ name: 'A組', grade: 1 },
|
8
|
+
{ name: 'A組', grade: 2 },
|
9
|
+
{ name: 'さくら組', grade: 0 },
|
10
|
+
{ name: 'マルチメディア専攻', grade: 1 },
|
11
|
+
{ name: 'Mr.Kalkov', grade: 7 },
|
12
|
+
{ name: 'Mr.Kagetsuki', grade: 7 },
|
13
|
+
{ name: 'Mr.Tapalilov', grade: 7 },
|
14
|
+
{ name: 'Mr.Georgiev', grade: 7 },
|
15
|
+
{ name: 'Mrs.Kostova', grade: 7 }
|
16
|
+
]
|
17
|
+
|
18
|
+
say "Creating #{class_groups.size} class groups ...".yellow
|
19
|
+
|
20
|
+
class_groups.each do |class_group|
|
21
|
+
Gaku::ClassGroup.where(class_group).first_or_create!
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'shared_sample_data'
|
3
|
+
|
4
|
+
say "Creating #{@count[:disposals]} teachers with addresses and contacts ...".yellow
|
5
|
+
|
6
|
+
batch_create(@count[:disposals]) do
|
7
|
+
teacher = Gaku::Teacher.where(random_person).first_or_create!
|
8
|
+
teacher.addresses.where(random_address.merge(deleted: true)).first_or_create!
|
9
|
+
teacher.contacts.where(random_home_phone.merge(deleted: true)).first_or_create!
|
10
|
+
end
|
11
|
+
|
12
|
+
say "Creating #{@count[:disposals]} students with addresses and contacts ...".yellow
|
13
|
+
|
14
|
+
batch_create(@count[:disposals]) do
|
15
|
+
student = Gaku::Student.where(random_person).first_or_create!
|
16
|
+
student.addresses.where(random_address.merge(deleted: true)).first_or_create!
|
17
|
+
student.contacts.where(random_home_phone.merge(deleted: true)).first_or_create!
|
18
|
+
end
|
19
|
+
|
20
|
+
say "Creating #{@count[:disposals]} guardians with addresses and contacts ...".yellow
|
21
|
+
|
22
|
+
batch_create(@count[:disposals]) do
|
23
|
+
guardian = Gaku::Guardian.where(random_person).first_or_create!
|
24
|
+
guardian.addresses.where(random_address.merge(deleted: true)).first_or_create!
|
25
|
+
guardian.contacts.where(random_home_phone.merge(deleted: true)).first_or_create!
|
26
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'shared_sample_data'
|
2
|
+
|
3
|
+
say "Creating #{@count[:disposals]} exam attachment disposals ...".yellow
|
4
|
+
|
5
|
+
batch_create(@count[:disposals]) do
|
6
|
+
exam = Gaku::Exam.where(name: "#{Faker::Education.major} Exam").first_or_create!
|
7
|
+
exam_portion = exam.exam_portions.where(name: "#{Faker::Education.major} ExamPortion", max_score: 100).first_or_create!
|
8
|
+
Gaku::Attachment.create!(name: 'Attachment Name', attachable: exam_portion, asset: File.open(File.join(File.dirname(__FILE__), '..', 'images', '120x120.jpg')), deleted: true)
|
9
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'shared_sample_data'
|
3
|
+
|
4
|
+
say "Creating #{@count[:disposals]} students and guardians ...".yellow
|
5
|
+
|
6
|
+
batch_create(@count[:disposals]) do
|
7
|
+
student = Gaku::Student.where(random_person.merge(deleted: true)).first_or_create!
|
8
|
+
guardian = Gaku::Guardian.where(random_person.merge(deleted: true)).first_or_create!
|
9
|
+
student.guardians << guardian
|
10
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
names = [
|
4
|
+
'Summer Program Entry',
|
5
|
+
'Regular Program Entry',
|
6
|
+
'International Program Exams',
|
7
|
+
'National Information Engineer Certification'
|
8
|
+
]
|
9
|
+
|
10
|
+
say "Creating #{names.size} exams ...".yellow
|
11
|
+
|
12
|
+
names.each do |name|
|
13
|
+
Gaku::Exam.where(name: name).first_or_create!
|
14
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'shared_sample_data'
|
3
|
+
|
4
|
+
say 'Creating grading widget data ...'.yellow
|
5
|
+
|
6
|
+
syllabus = Gaku::Syllabus.where(name: 'Ruby', code: 'rb').first_or_create!
|
7
|
+
course = Gaku::Course.where(code: 'Fall 2011').first_or_create!
|
8
|
+
enrollment_status_code = Gaku::EnrollmentStatus.where(code: 'admitted').first.try(:code)
|
9
|
+
|
10
|
+
student = Gaku::Student.where(@john_doe).first_or_create!
|
11
|
+
|
12
|
+
exam1 = Gaku::Exam.where(name: 'Midterm', use_weighting: true, weight: 4).first_or_create!
|
13
|
+
exam1_portion1 = exam1.exam_portions.create(name: 'Multiple Choice', max_score: 100)
|
14
|
+
exam1_portion2 = exam1.exam_portions.create(name: 'Practical', max_score: 200)
|
15
|
+
|
16
|
+
exam2 = Gaku::Exam.where(name: 'Final', use_weighting: true, weight: 6).first_or_create!
|
17
|
+
exam2_portion1 = exam2.exam_portions.where(name: 'Question and Answer', max_score: 200).first_or_create!
|
18
|
+
exam2_portion2 = exam2.exam_portions.where(name: 'Practical', max_score: 300).first_or_create!
|
19
|
+
|
20
|
+
exams = [exam1, exam2]
|
21
|
+
|
22
|
+
unless syllabus.exams.count > 0
|
23
|
+
syllabus.exams << exams
|
24
|
+
end
|
25
|
+
|
26
|
+
unless course.students.count > 0
|
27
|
+
course.students << student
|
28
|
+
end
|
29
|
+
|
30
|
+
syllabus.courses << course
|
31
|
+
|
Binary file
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'shared_sample_data'
|
3
|
+
|
4
|
+
say 'Creating predefined students ...'.yellow
|
5
|
+
students = [
|
6
|
+
{ name: 'Anonime', surname: 'Anonimized', birth_date: Date.new(1982,1,1), enrollment_status_code: @enrollment_status },
|
7
|
+
{ name: 'Amon', surname: 'Tobin', birth_date: Date.new(1983,1,1), enrollment_status_code: @enrollment_status },
|
8
|
+
{ name: '零', surname: '影月', enrollment_status_code: @enrollment_status },
|
9
|
+
{ name: 'サニー', surname: 'スノー', enrollment_status_code: @enrollment_status }
|
10
|
+
]
|
11
|
+
|
12
|
+
create_student_with_full_info(@john_doe)
|
13
|
+
students.each do |student|
|
14
|
+
create_student_with_full_info(student)
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
say "Creating #{@count[:students]} students ...".yellow
|
19
|
+
|
20
|
+
batch_create(@count[:students]) do
|
21
|
+
create_student_with_full_info
|
22
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
syllabuses = [
|
4
|
+
|
5
|
+
{
|
6
|
+
name: 'Introduction to Biology',
|
7
|
+
code: 'B01',
|
8
|
+
description: 'A general introduction to the world of organisms and how they function',
|
9
|
+
credits: 5
|
10
|
+
},
|
11
|
+
|
12
|
+
{
|
13
|
+
name: 'Trigonometry',
|
14
|
+
code: 'M401',
|
15
|
+
description: 'TRIANGLES!',
|
16
|
+
credits: 3
|
17
|
+
},
|
18
|
+
|
19
|
+
{
|
20
|
+
name: 'Literature',
|
21
|
+
code: 'LIT',
|
22
|
+
description: 'In this course you will read a series of short stories and essays by stuck up self-proclaimed writers.',
|
23
|
+
credits: 1
|
24
|
+
},
|
25
|
+
|
26
|
+
{
|
27
|
+
name: 'Introductory Japanese[日本語入門]',
|
28
|
+
code: 'NH1',
|
29
|
+
description: 'Learn basic moonspeak. This course covers introductions, greetings and basic questions and answers for every day life. This course also covers both sets of kana and some basic kanji.',
|
30
|
+
credits: 2
|
31
|
+
},
|
32
|
+
|
33
|
+
{
|
34
|
+
name: 'ブルガリア語入門',
|
35
|
+
code: 'BG1',
|
36
|
+
description: 'ブルガリアで日常生活が出来る様、挨拶や日常に使う質問と答えの仕方が学べます。ブルガリア語に使われるキリル文字の読み書きも出来る様になります。',
|
37
|
+
credits: 2
|
38
|
+
},
|
39
|
+
|
40
|
+
{
|
41
|
+
name: 'メカトロニクス',
|
42
|
+
code: 'MT',
|
43
|
+
description: '電子回路と電気機器とメカニカル機械を効率良く合わせてロボットの基礎や様々のデバイスや機械が作れる様になります。',
|
44
|
+
credits: 8
|
45
|
+
},
|
46
|
+
|
47
|
+
{
|
48
|
+
name: 'Атомна физика',
|
49
|
+
code: 'AF1',
|
50
|
+
description: 'Сътворете атомна бомба с лекота',
|
51
|
+
credits: 8
|
52
|
+
},
|
53
|
+
|
54
|
+
{
|
55
|
+
name: 'Нинджи наука',
|
56
|
+
code: 'NJ1',
|
57
|
+
description: 'Научете разнообразие от нинджа техники.',
|
58
|
+
credits: 3
|
59
|
+
},
|
60
|
+
|
61
|
+
{
|
62
|
+
name: 'Introduction to Ruby',
|
63
|
+
code: 'RB1',
|
64
|
+
description: 'Learn the basics of Ruby programming.',
|
65
|
+
credits: 3
|
66
|
+
},
|
67
|
+
|
68
|
+
{
|
69
|
+
name: 'Ruby Programming',
|
70
|
+
code: 'RB2',
|
71
|
+
description: 'Leverage your Ruby skills.',
|
72
|
+
credits: 3
|
73
|
+
},
|
74
|
+
|
75
|
+
{
|
76
|
+
name: 'Ruby Guru',
|
77
|
+
code: 'RB3',
|
78
|
+
description: 'Became a ruby guru.',
|
79
|
+
credits: 3
|
80
|
+
},
|
81
|
+
|
82
|
+
{
|
83
|
+
name: 'Introduction to node.js',
|
84
|
+
code: 'NJS1',
|
85
|
+
description: 'Learn the basics of node.js programming.',
|
86
|
+
credits: 3
|
87
|
+
},
|
88
|
+
|
89
|
+
{
|
90
|
+
name: 'Node.js Programming',
|
91
|
+
code: 'NJS2',
|
92
|
+
description: 'Leverage your node.js skills.',
|
93
|
+
credits: 3
|
94
|
+
},
|
95
|
+
|
96
|
+
{
|
97
|
+
name: 'Node.js Guru',
|
98
|
+
code: 'NJS3',
|
99
|
+
description: 'Became a node.js guru.',
|
100
|
+
credits: 3
|
101
|
+
},
|
102
|
+
|
103
|
+
{
|
104
|
+
name: 'Introduction to clojure',
|
105
|
+
code: 'CL1',
|
106
|
+
description: 'Learn the basics of clojure programming.',
|
107
|
+
credits: 3
|
108
|
+
},
|
109
|
+
|
110
|
+
{
|
111
|
+
name: 'Clojure Programming',
|
112
|
+
code: 'CL2',
|
113
|
+
description: 'Leverage your clojure skills.',
|
114
|
+
credits: 3
|
115
|
+
},
|
116
|
+
|
117
|
+
{
|
118
|
+
name: 'Clojure Guru',
|
119
|
+
code: 'CL3',
|
120
|
+
description: 'Became a clojure guru.',
|
121
|
+
credits: 3
|
122
|
+
}
|
123
|
+
|
124
|
+
]
|
125
|
+
|
126
|
+
say "Creating #{syllabuses.size} syllabuses ...".yellow
|
127
|
+
|
128
|
+
syllabuses.each do |syllabus|
|
129
|
+
Gaku::Syllabus.where(syllabus).first_or_create!
|
130
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rake-progressbar'
|
2
|
+
|
3
|
+
teachers = [
|
4
|
+
{ name: 'Vassil', surname: 'Kalkov' },
|
5
|
+
{ name: 'Marta', surname: 'Kostova' },
|
6
|
+
{ name: 'Georgi', surname: 'Tapalilov'},
|
7
|
+
{ name: 'Radoslav', surname: 'Georgiev'},
|
8
|
+
{ name: 'Rei', surname: 'Kagetsuki'}
|
9
|
+
]
|
10
|
+
|
11
|
+
say 'Creating predefined teachers...'.yellow
|
12
|
+
|
13
|
+
teachers.each do |teacher|
|
14
|
+
Gaku::Teacher.where(teacher).first_or_create!
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
say "Creating #{@count[:teachers]} teachers...".yellow
|
19
|
+
|
20
|
+
batch_create(@count[:teachers]) do
|
21
|
+
teacher = Gaku::Teacher.where(random_person).first_or_create!
|
22
|
+
|
23
|
+
teacher.addresses.where(random_address).first_or_create!
|
24
|
+
teacher.addresses.where(random_address).first_or_create!
|
25
|
+
|
26
|
+
teacher.contacts.where(random_mobile_phone).first_or_create!
|
27
|
+
teacher.contacts.where(random_home_phone).first_or_create!
|
28
|
+
teacher.contacts.where(random_email).first_or_create!
|
29
|
+
|
30
|
+
teacher.notes.where(random_note).first_or_create!
|
31
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
users = [
|
4
|
+
|
5
|
+
{
|
6
|
+
email: 'example@example.com',
|
7
|
+
username: 'example',
|
8
|
+
password: '123456',
|
9
|
+
password_confirmation: '123456'
|
10
|
+
},
|
11
|
+
|
12
|
+
{
|
13
|
+
email: 'admin@example.com',
|
14
|
+
username: 'admin',
|
15
|
+
password: '123456',
|
16
|
+
password_confirmation: '123456'
|
17
|
+
},
|
18
|
+
|
19
|
+
{
|
20
|
+
email: 'student@example.com',
|
21
|
+
username: 'student',
|
22
|
+
password: '123456',
|
23
|
+
password_confirmation: '123456'
|
24
|
+
},
|
25
|
+
|
26
|
+
{
|
27
|
+
email: 'guardian@example.com',
|
28
|
+
username: 'guardian',
|
29
|
+
password: '123456',
|
30
|
+
password_confirmation: '123456'
|
31
|
+
}
|
32
|
+
|
33
|
+
]
|
34
|
+
|
35
|
+
users.each do |user|
|
36
|
+
Gaku::User.where(username: user[:username]).first_or_create!(email: user[:email],
|
37
|
+
password: user[:password],
|
38
|
+
password_confirmation: user[:password_confirmation]
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
admin_user = Gaku::User.find_by_username('admin')
|
43
|
+
admin_role = Gaku::Role.find_by_name('Admin')
|
44
|
+
admin_user.roles << admin_role
|
45
|
+
|
46
|
+
student_user = Gaku::User.find_by_username('student')
|
47
|
+
student_role = Gaku::Role.find_by_name('Student')
|
48
|
+
student_user.roles << student_role
|
49
|
+
|
50
|
+
guardian_user = Gaku::User.find_by_username('guardian')
|
51
|
+
guardian_role = Gaku::Role.find_by_name('Guardian')
|
52
|
+
guardian_user.roles << guardian_role
|
53
|
+
|
54
|
+
say "Creating #{@count[:users]} users...".yellow
|
55
|
+
|
56
|
+
batch_create(@count[:teachers]) do
|
57
|
+
Gaku::User.where(username: Faker::Name.first_name, email: Faker::Internet.email).first_or_create( password: '123456', password_confirmation: '123456')
|
58
|
+
end
|
59
|
+
|
data/lib/gaku_sample.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
@full_sample_counts = {
|
2
|
+
disposals: 100,
|
3
|
+
changes: 100,
|
4
|
+
students: 500,
|
5
|
+
teachers: 80,
|
6
|
+
users: 100
|
7
|
+
}
|
8
|
+
|
9
|
+
@normal_sample_counts = {
|
10
|
+
disposals: 30,
|
11
|
+
changes: 30,
|
12
|
+
students: 50,
|
13
|
+
teachers: 50,
|
14
|
+
users: 50
|
15
|
+
}
|
16
|
+
|
17
|
+
@simple_sample_counts = {
|
18
|
+
disposals: 10,
|
19
|
+
changes: 10,
|
20
|
+
students: 10,
|
21
|
+
teachers: 10,
|
22
|
+
users: 10
|
23
|
+
}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
@country = Gaku::Country.where( name: '日本',
|
2
|
+
iso3: 'JPN',
|
3
|
+
iso: 'JP',
|
4
|
+
iso_name: 'JAPAN',
|
5
|
+
numcode: '392'
|
6
|
+
).first_or_create!
|
7
|
+
|
8
|
+
@mobile_phone = Gaku::ContactType.where(name: 'Mobile Phone').first_or_create!
|
9
|
+
@home_phone = Gaku::ContactType.where(name: 'Home Phone').first_or_create!
|
10
|
+
@email = Gaku::ContactType.where(name: 'Email').first_or_create!
|
11
|
+
@enrollment_status = Gaku::EnrollmentStatus.where(code: 'admitted').first.try(:code)
|
12
|
+
@commute_method_type = Gaku::CommuteMethodType.where(name: 'Superbike').first_or_create!
|
13
|
+
@scholarship_status = Gaku::ScholarshipStatus.where(name: 'Charity').first_or_create!
|
14
|
+
|
15
|
+
@john_doe = {
|
16
|
+
name: 'John',
|
17
|
+
surname: 'Doe',
|
18
|
+
birth_date: Date.new(1983,10,5),
|
19
|
+
enrollment_status_code: @enrollment_status
|
20
|
+
}
|
21
|
+
|
22
|
+
def batch_create(count)
|
23
|
+
ActiveRecord::Base.transaction do
|
24
|
+
bar = RakeProgressbar.new(count)
|
25
|
+
count.times do
|
26
|
+
bar.inc
|
27
|
+
yield
|
28
|
+
end
|
29
|
+
bar.finished
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def random_person
|
34
|
+
{
|
35
|
+
name: Faker::Name.first_name,
|
36
|
+
middle_name: Faker::Name.first_name,
|
37
|
+
surname: Faker::Name.last_name,
|
38
|
+
birth_date: Date.today-rand(1000)
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
def random_home_phone
|
44
|
+
{
|
45
|
+
data: Faker::PhoneNumber.phone_number,
|
46
|
+
contact_type_id: @home_phone.id
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
50
|
+
def random_mobile_phone
|
51
|
+
{
|
52
|
+
data: Faker::PhoneNumber.phone_number,
|
53
|
+
contact_type_id: @mobile_phone.id
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def random_email
|
58
|
+
{
|
59
|
+
data: Faker::Internet.email,
|
60
|
+
contact_type_id: @email.id
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
def random_note
|
65
|
+
{
|
66
|
+
title: Faker::Lorem.word,
|
67
|
+
content: Faker::Lorem.sentence
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
def random_address
|
73
|
+
{
|
74
|
+
address1: Faker::Address.street_address,
|
75
|
+
address2: Faker::Address.street_address,
|
76
|
+
title: 'Home address',
|
77
|
+
zipcode: '452-0813',
|
78
|
+
city: 'Nagoya',
|
79
|
+
country: @country
|
80
|
+
}
|
81
|
+
end
|
82
|
+
|
83
|
+
def create_student_with_full_info(predefined_student=nil)
|
84
|
+
if predefined_student
|
85
|
+
student = Gaku::Student.where(predefined_student).first_or_create!
|
86
|
+
else
|
87
|
+
random_student = random_person.merge(enrollment_status_code: @enrollment_status)
|
88
|
+
student = Gaku::Student.where(random_student).first_or_create!
|
89
|
+
end
|
90
|
+
|
91
|
+
student.addresses.where(random_address).first_or_create!
|
92
|
+
student.contacts.where(random_email).first_or_create!
|
93
|
+
student.contacts.where(random_home_phone).first_or_create!
|
94
|
+
student.contacts.where(random_mobile_phone).first_or_create!
|
95
|
+
student.notes.where(random_note).first_or_create!
|
96
|
+
student.notes.where(random_note).first_or_create!
|
97
|
+
|
98
|
+
#guardian
|
99
|
+
guardian = Gaku::Guardian.where(random_person).first_or_create!
|
100
|
+
guardian.addresses.where(random_address).first_or_create!
|
101
|
+
guardian.contacts.where(random_email).first_or_create!
|
102
|
+
guardian.contacts.where(random_home_phone).first_or_create!
|
103
|
+
guardian.contacts.where(random_mobile_phone).first_or_create!
|
104
|
+
#guardian.notes.where(random_note).first_or_create!
|
105
|
+
#guardian.notes.where(random_note).first_or_create!
|
106
|
+
|
107
|
+
student.guardians << guardian
|
108
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#require 'ffaker'
|
2
|
+
require 'sample_counters'
|
3
|
+
require 'benchmark'
|
4
|
+
|
5
|
+
namespace :db do
|
6
|
+
desc 'Loads sample data'
|
7
|
+
task :sample do
|
8
|
+
|
9
|
+
say "Simple mode: #{@simple_sample_counts.to_json}".yellow
|
10
|
+
say "Normal mode: #{@normal_sample_counts.to_json}".yellow
|
11
|
+
say "Full mode: #{@full_sample_counts.to_json}".yellow
|
12
|
+
say "------------------------------------------------------------------------------------------------".green
|
13
|
+
|
14
|
+
mode = ENV['mode']
|
15
|
+
if mode.nil?
|
16
|
+
choose do |menu|
|
17
|
+
menu.prompt = "Please choose a mode ".yellow
|
18
|
+
|
19
|
+
menu.choice(:simple) { simple_mode }
|
20
|
+
menu.choice(:normal) { normal_mode }
|
21
|
+
menu.choice(:full) { full_mode }
|
22
|
+
end
|
23
|
+
else
|
24
|
+
resolve_mode(mode)
|
25
|
+
end
|
26
|
+
|
27
|
+
time = Benchmark.realtime do
|
28
|
+
say "Resetting database ..."
|
29
|
+
Rake::Task["db:reset"].invoke
|
30
|
+
|
31
|
+
sample_path = File.join(File.dirname(__FILE__), '..', '..', 'db', 'sample')
|
32
|
+
Rake::Task['db:load_dir'].reenable
|
33
|
+
Rake::Task['db:load_dir'].invoke(sample_path)
|
34
|
+
end
|
35
|
+
|
36
|
+
say "Time elapsed #{human_time(time)}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def human_time(time)
|
44
|
+
mm, ss = time.divmod(60)
|
45
|
+
say("%d minutes and %d seconds".green % [mm, ss])
|
46
|
+
end
|
47
|
+
|
48
|
+
def simple_mode
|
49
|
+
say "Running in simple mode ...".yellow
|
50
|
+
@count = @simple_sample_counts
|
51
|
+
end
|
52
|
+
|
53
|
+
def normal_mode
|
54
|
+
say "Running in normal mode ...".yellow
|
55
|
+
@count = @normal_sample_counts
|
56
|
+
end
|
57
|
+
|
58
|
+
def full_mode
|
59
|
+
say "Running in full mode ...".yellow
|
60
|
+
@count = @full_sample_counts
|
61
|
+
end
|
62
|
+
|
63
|
+
def resolve_mode(mode)
|
64
|
+
if mode == 'full'
|
65
|
+
full_mode
|
66
|
+
elsif mode == 'normal'
|
67
|
+
normal_mode
|
68
|
+
elsif mode == 'simple'
|
69
|
+
simple_mode
|
70
|
+
else
|
71
|
+
normal_mode
|
72
|
+
end
|
73
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gaku_sample
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rei Kagetsuki
|
8
|
+
- Vassil Kalkov
|
9
|
+
- Georgi Tapalilov
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: gaku_core
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.0.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 0.0.1
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: ffaker
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
description: Just some sample data
|
44
|
+
email: info@genshin.org
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- lib/shared_sample_data.rb
|
50
|
+
- lib/gaku_sample.rb
|
51
|
+
- lib/sample_counters.rb
|
52
|
+
- lib/tasks/sample.rake
|
53
|
+
- db/sample/gaku/users.rb
|
54
|
+
- db/sample/gaku/students.rb
|
55
|
+
- db/sample/gaku/grading_widget.rb
|
56
|
+
- db/sample/gaku/roles.rb
|
57
|
+
- db/sample/gaku/course_groups.rb
|
58
|
+
- db/sample/gaku/teachers.rb
|
59
|
+
- db/sample/gaku/changes/student_changes.rb
|
60
|
+
- db/sample/gaku/disposals/exam_disposals.rb
|
61
|
+
- db/sample/gaku/disposals/student_disposals.rb
|
62
|
+
- db/sample/gaku/disposals/course_group_disposals.rb
|
63
|
+
- db/sample/gaku/disposals/teacher_disposals.rb
|
64
|
+
- db/sample/gaku/disposals/attachment_disposals.rb
|
65
|
+
- db/sample/gaku/disposals/address_and_contact_disposals.rb
|
66
|
+
- db/sample/gaku/images/120x120.jpg
|
67
|
+
- db/sample/gaku/class_groups.rb
|
68
|
+
- db/sample/gaku/exams.rb
|
69
|
+
- db/sample/gaku/courses.rb
|
70
|
+
- db/sample/gaku/achievements.rb
|
71
|
+
- db/sample/gaku/specialties.rb
|
72
|
+
- db/sample/gaku/extracurricular_activities.rb
|
73
|
+
- db/sample/gaku/syllabuses.rb
|
74
|
+
homepage: http://github.com/Genshin/gaku
|
75
|
+
licenses: []
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.0.0
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements:
|
92
|
+
- postgres
|
93
|
+
- redis
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 2.0.3
|
96
|
+
signing_key:
|
97
|
+
specification_version: 4
|
98
|
+
summary: Sample data for use with GAKU Engine
|
99
|
+
test_files: []
|