schild 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/schild/version.rb +1 -1
- data/lib/schild.rb +49 -31
- data/specs/schueler_spec.rb +12 -1
- data/specs/type_safe_spec.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 806113777b9bbc25eb38105d179742884490e49a
|
4
|
+
data.tar.gz: a0828e0a253cab9379e28c21e09635d1cfd74a46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 633f4aeda86b695e08e54187ef7f0fa1eb43a4d37b68ed6244104e918471d581450c9a87797edc4eb5dd8d2a49490e443a4d68ea22d4405495c3249d8d8bf7a3
|
7
|
+
data.tar.gz: f9f3ebbeb374cb3f0ebca5bd5698fb43bf3a2e55edc4eddcdbece887a4bbc333549cc4989e9786f7d1022ccf76283afbb5acf5f90112fb2c39ff1ef6969fbd5b
|
data/lib/schild/version.rb
CHANGED
data/lib/schild.rb
CHANGED
@@ -44,8 +44,9 @@ module SchildTypeSaver
|
|
44
44
|
def create_null_object(klass, column)
|
45
45
|
k = DB.schema_type_class(klass.db_schema[column][:type])
|
46
46
|
if k.class == Array
|
47
|
-
# Sequel stellt :datetime als [Time, DateTime] dar
|
48
|
-
|
47
|
+
# Sequel stellt :datetime als [Time, DateTime] dar, deswegen die Abfrage nach Array
|
48
|
+
# Schild verwendet Time Objekte, wir machen das auch
|
49
|
+
Time.new(1899)
|
49
50
|
elsif k == Integer
|
50
51
|
0
|
51
52
|
else
|
@@ -57,31 +58,31 @@ end
|
|
57
58
|
|
58
59
|
# Mixin für Notenbezeichnungen
|
59
60
|
module NotenHelfer
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
end
|
61
|
+
# Notenbezeichnung als String
|
62
|
+
def note_s(ziffer)
|
63
|
+
case ziffer
|
64
|
+
when "1", "1+", "1-"
|
65
|
+
"sehr gut"
|
66
|
+
when "2", "2+", "2-"
|
67
|
+
"gut"
|
68
|
+
when "3", "3+", "3-"
|
69
|
+
"befriedigend"
|
70
|
+
when "4", "4+", "4-"
|
71
|
+
"ausreichend"
|
72
|
+
when "5", "5+", "5-"
|
73
|
+
"mangelhaft"
|
74
|
+
when "6"
|
75
|
+
"ungenügend"
|
76
|
+
when 'NB'
|
77
|
+
"––––––"
|
78
|
+
when "E1"
|
79
|
+
"mit besonderem Erfolg teilgenommen"
|
80
|
+
when "E2"
|
81
|
+
"mit Erfolg teilgenommen"
|
82
|
+
when 'E3'
|
83
|
+
"teilgenommen"
|
84
84
|
end
|
85
|
+
end
|
85
86
|
end
|
86
87
|
|
87
88
|
# Das Schild Modul, das alle Klassen für die Datenbankanbindung bereitstellt
|
@@ -89,11 +90,6 @@ module Schild
|
|
89
90
|
# ist die Datenbank-Verbindung. Alle Daten können über diese Konstante abgerufen werden
|
90
91
|
DB = Sequel.connect(:adapter=>ENV['S_ADAPTER'], :host=>ENV['S_HOST'], :user=>ENV['S_USER'], :password=>ENV['S_PASSWORD'], :database=>ENV['S_DB'])
|
91
92
|
|
92
|
-
# Stellt eine Verbindung zu einem Schild-Server her. Sollte nur aufgerufen werden, wenn wechselnde Verbindungen nötig sind.
|
93
|
-
def self.connect
|
94
|
-
Sequel.connect(:adapter=>ENV['S_ADAPTER'], :host=>ENV['S_HOST'], :user=>ENV['S_USER'], :password=>ENV['S_PASSWORD'], :database=>ENV['S_DB'])
|
95
|
-
end
|
96
|
-
|
97
93
|
# Stellt die Schüler-Tabelle samt Assoziationen bereit.
|
98
94
|
class Schueler < Sequel::Model(:schueler)
|
99
95
|
many_to_one :fachklasse, :class => :Fachklasse, :key => :Fachklasse_ID
|
@@ -103,6 +99,7 @@ module Schild
|
|
103
99
|
one_to_one :abi_abschluss, :class => :AbiAbschluss
|
104
100
|
one_to_many :abi_abschluss_leistungen, :class => :AbiAbschlussFaecher
|
105
101
|
one_to_many :vermerke, :class => :Vermerke
|
102
|
+
one_to_one :schuelerfoto, :class => :Schuelerfotos
|
106
103
|
end
|
107
104
|
|
108
105
|
# Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
|
@@ -167,6 +164,11 @@ module Schild
|
|
167
164
|
many_to_one :Schueler
|
168
165
|
end
|
169
166
|
|
167
|
+
# Schülerfotos als jpg
|
168
|
+
class Schuelerfotos < Sequel::Model(:schuelerfotos)
|
169
|
+
one_to_one :schueler
|
170
|
+
end
|
171
|
+
|
170
172
|
# Schul-Tabelle
|
171
173
|
class Schule < Sequel::Model(:eigeneschule)
|
172
174
|
end
|
@@ -217,9 +219,21 @@ module SchildErweitert
|
|
217
219
|
self.volljaehrig == "+"
|
218
220
|
end
|
219
221
|
|
222
|
+
# gibt an, ob der Schüler zu einem Zeitpunkt *datum* volljährig war.
|
223
|
+
def volljaehrig_bei?(datum)
|
224
|
+
geb, datum = self.geburtsdatum.to_date, datum.to_date
|
225
|
+
(datum.year - geb.year - ((datum.month > geb.month || (datum.month == geb.month && datum.day >= geb.day)) ? 0 : 1)) >= 18
|
226
|
+
end
|
227
|
+
|
228
|
+
# fragt ab, ob in Schild ein Foto als hinterlegt eingetragen ist.
|
220
229
|
def foto_vorhanden?
|
221
230
|
self.foto_vorhanden == "+"
|
222
231
|
end
|
232
|
+
|
233
|
+
# gibt, wenn vorhanden, ein Foto als jpg-String zurück, ansonsten nil.
|
234
|
+
def foto
|
235
|
+
self.foto_vorhanden? ? self.schuelerfoto.foto : nil
|
236
|
+
end
|
223
237
|
end
|
224
238
|
|
225
239
|
# Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
|
@@ -386,6 +400,10 @@ module SchildErweitert
|
|
386
400
|
include SchildTypeSaver
|
387
401
|
end
|
388
402
|
|
403
|
+
class Schuelerfotos < Schild::Schuelerfotos
|
404
|
+
include SchildTypeSaver
|
405
|
+
end
|
406
|
+
|
389
407
|
# Schul-Tabelle mit vereinfachtem Zugriff auf Datenfelder.
|
390
408
|
class Schule < Schild::Schule
|
391
409
|
include SchildTypeSaver
|
data/specs/schueler_spec.rb
CHANGED
@@ -24,7 +24,7 @@ describe Schueler do
|
|
24
24
|
it 'gibt Konferenzdatum zurück (Lernabschnitte)' do
|
25
25
|
# offenbar keine in der Testdatenbank eingetragen
|
26
26
|
# deshalb Default-Objekt anfordern
|
27
|
-
@sm.halbjahr(2013,1).konferenzdatum.must_be_instance_of
|
27
|
+
@sm.halbjahr(2013,1).konferenzdatum.must_be_instance_of Time
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'gibt berufsbezogene Fächer aus den angegebenen Lernabschnitten zurück' do
|
@@ -117,6 +117,12 @@ describe Schueler do
|
|
117
117
|
end
|
118
118
|
|
119
119
|
#schuelerabifaecher kann wegen mangelnder daten nicht getestet werden
|
120
|
+
|
121
|
+
# in der Testdatenbank sind leider keine Schülerfotos
|
122
|
+
it 'gibt das Schülerfoto als jpg zurück' do
|
123
|
+
skip
|
124
|
+
@sm.foto.must_be_instance_of String
|
125
|
+
end
|
120
126
|
end
|
121
127
|
|
122
128
|
describe 'gibt die korrekte Anzahl von Schülern über Klasse zurück' do
|
@@ -138,6 +144,11 @@ describe Schueler do
|
|
138
144
|
@sm.volljaehrig?.must_equal true
|
139
145
|
end
|
140
146
|
|
147
|
+
it 'gibt an, ob Schüler im Vergelich zu *datum* volljährig ist' do
|
148
|
+
@sm.volljaehrig_bei?(@sm.halbjahr(2013,2).zeugnis_datum).must_equal false
|
149
|
+
Schueler[24].volljaehrig_bei?(Time.new).must_equal true
|
150
|
+
end
|
151
|
+
|
141
152
|
it 'gibt zurück, ob ein Foto vorhanden ist' do
|
142
153
|
@sm.foto_vorhanden?.must_equal false
|
143
154
|
end
|
data/specs/type_safe_spec.rb
CHANGED
@@ -7,8 +7,8 @@ describe Schueler do
|
|
7
7
|
@sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
|
8
8
|
end
|
9
9
|
|
10
|
-
it 'gibt ein
|
11
|
-
@sm.geburtsdatum.must_be_instance_of
|
10
|
+
it 'gibt ein Time-Objekt bei Daten zurück' do
|
11
|
+
@sm.geburtsdatum.must_be_instance_of Time
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'gibt String für Text zurück' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- HMT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|