schild 0.7.2 → 0.7.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d31b885b4e2d287625fcb3aea7e662687b7cb908
4
- data.tar.gz: 51812c878ce202a4aef3603f4e3caabc333a74c5
3
+ metadata.gz: c0d91a0265e7e938de619b3664e9e9274194ca9a
4
+ data.tar.gz: aae8a07d105d176e16f196b3634acb2d9b52e630
5
5
  SHA512:
6
- metadata.gz: fb7bf3041d8242914e8bf1608e8b1534cd49bd0d02f78bbb6ed84a1de305e0e083f6af11e49b3bc4f4a83a152fc556e9aef1311f034d61af8091daa32d00fddf
7
- data.tar.gz: 015c3ec7f5af18d2cba8e4493475176bcc52924dca6b7b549dd039070b83cd34e68ab0b0ff637108a8b32519396693d82261ef67d1c2ed9215a60d8c6b53997d
6
+ metadata.gz: a3c15299a6631eb4366a24945e1e23c3e62fa7fb7de02d5cb33f8b77e789cc2ec21170aee8a1eda1b8e4cc4e4e3ffcb586d44b5cb12de2c6dd4ec12922cb168e
7
+ data.tar.gz: cb492beaaaf87cf6a89f3f0bed8ca8edaec148e591dc93bacc1dc550a5b2e6a43d2330f5788ada0b99fd189633c61569334c855d2ca55c2424790a06e93afd96
data/Rakefile CHANGED
@@ -6,5 +6,8 @@ Rake::TestTask.new do |t|
6
6
  t.libs.push "lib"
7
7
  t.test_files = FileList['specs/*_spec.rb']
8
8
  t.verbose = false
9
+ if t.respond_to?(:warning=)
10
+ t.warning = false
11
+ end
9
12
  end
10
13
 
@@ -1,3 +1,3 @@
1
1
  module Schild
2
- VERSION = "0.7.2"
2
+ VERSION = "0.7.8"
3
3
  end
data/lib/schild.rb CHANGED
@@ -4,7 +4,16 @@ require 'sequel'
4
4
  # Das Schild Modul, das alle Klassen für die Datenbankanbindung bereitstellt
5
5
  module Schild
6
6
  # ist die Datenbank-Verbindung. Alle Daten können über diese Konstante abgerufen werden
7
- DB = Sequel.connect("#{ENV['S_ADAPTER']}://#{ENV['S_HOST']}/#{ENV['S_DB']}?user=#{ENV['S_USER']}&password=#{ENV['S_PASSWORD']}&zeroDateTimeBehavior=convertToNull")
7
+
8
+ @db = Sequel.connect("#{ENV['S_ADAPTER']}://#{ENV['S_HOST']}/#{ENV['S_DB']}?user=#{ENV['S_USER']}&password=#{ENV['S_PASSWORD']}&zeroDateTimeBehavior=convertToNull")
9
+
10
+ def self.connect
11
+ @db = Sequel.connect("#{ENV['S_ADAPTER']}://#{ENV['S_HOST']}/#{ENV['S_DB']}?user=#{ENV['S_USER']}&password=#{ENV['S_PASSWORD']}&zeroDateTimeBehavior=convertToNull")
12
+ end
13
+
14
+ def self.db
15
+ @db
16
+ end
8
17
 
9
18
  # Stellt die Schüler-Tabelle samt Assoziationen bereit.
10
19
  class Schueler < Sequel::Model(:schueler)
@@ -14,8 +23,11 @@ module Schild
14
23
  one_to_many :bk_abschluss_leistungen, :class => :BKAbschlussFaecher
15
24
  one_to_one :abi_abschluss, :class => :AbiAbschluss
16
25
  one_to_many :abi_abschluss_leistungen, :class => :AbiAbschlussFaecher
26
+ one_to_one :fhr_abschluss, :class => :FHRAbschluss
27
+ one_to_many :fhr_abschluss_leistungen, :class => :FHRAbschlussFaecher
17
28
  one_to_many :vermerke, :class => :Vermerke
18
29
  one_to_one :schuelerfoto, :class => :Schuelerfotos
30
+ one_to_many :sprachenfolge, :class => :Sprachenfolge
19
31
  end
20
32
 
21
33
  # Dient als Assoziation für Schüler und deren Klassenbezeichnung etc.
@@ -33,6 +45,7 @@ module Schild
33
45
  many_to_one :schueler, :class => :Schueler, :key => :Schueler_ID
34
46
  one_to_many :noten, :class => :Noten
35
47
  many_to_one :klassenlehrer, :class => :Klassenlehrer, :primary_key=>:Kuerzel, :key=>:KlassenLehrer
48
+ many_to_one :fachklasse, :class => :Fachklasse, :key => :Fachklasse_ID
36
49
  end
37
50
 
38
51
  # Assoziation für Noten
@@ -47,6 +60,7 @@ module Schild
47
60
  one_to_one :noten
48
61
  one_to_many :abi_abschluss_leistungen
49
62
  one_to_one :sprachenfolge, :class => :Sprachenfolge, :key => :Fach_ID
63
+ one_to_many :gliederungen, :class => :Fach_Gliederung, :key => :Fach_ID
50
64
  end
51
65
 
52
66
  # Assoziation für BK-Abschluss des Schülers
@@ -70,9 +84,26 @@ module Schild
70
84
  many_to_one :fach, :class => :Faecher, :key => :Fach_ID
71
85
  end
72
86
 
87
+ # Assoziation für FHR-Abschluss des Schülers
88
+ class FHRAbschluss < Sequel::Model(:schuelerfhr)
89
+ one_to_one :schueler
90
+ end
91
+
92
+ # Assoziation für die FHR-fächer des Schülers
93
+ class FHRAbschlussFaecher < Sequel::Model(:schuelerfhrfaecher)
94
+ many_to_one :schueler
95
+ many_to_one :fach, :class => :Faecher, :key => :Fach_ID
96
+ end
97
+
73
98
  # Assoziation für die bisher erreichten Sprachniveaus
74
99
  class Sprachenfolge < Sequel::Model(:schuelersprachenfolge)
75
- one_to_one :Faecher
100
+ many_to_one :fach, :class => :Faecher, :key => :Fach_ID
101
+ end
102
+
103
+ # Assoziation für die bisher erreichten Sprachniveaus
104
+ class Fach_Gliederung < Sequel::Model(:fach_gliederungen)
105
+ many_to_one :fach, :class => :Faecher, :key => :Fach_ID
106
+ many_to_one :fachklasse, :class => :Fachklasse, :key => :Fachklasse_ID
76
107
  end
77
108
 
78
109
  # Vermerke von Schülern
@@ -119,19 +150,6 @@ module SchildErweitert
119
150
  to_s.snake_case
120
151
  end
121
152
  end
122
-
123
- module Schueler
124
- def entlassart
125
- return self.entlass_art if self.respond_to?(:entlass_art)
126
- end
127
- end
128
-
129
- module Fachklasse
130
- def dqr_niveau
131
- return self.DQR_Niveau if self.respond_to?(:DQR_Niveau)
132
- "Alte Schild-Version ohne DQR-Niveau"
133
- end
134
- end
135
153
  end
136
154
 
137
155
  # Schild hat teilweise nil in DB-Feldern. SchildTypeSaver gibt entweder einen
@@ -161,7 +179,7 @@ module SchildErweitert
161
179
  end
162
180
 
163
181
  def create_null_object(klass, column)
164
- k = Schild::DB.schema_type_class(klass.db_schema[column][:type])
182
+ k = Schild.db.schema_type_class(klass.db_schema[column][:type])
165
183
  if k.class == Array
166
184
  # Sequel stellt :datetime als [Time, DateTime] dar, deswegen die Abfrage nach Array
167
185
  # Schild verwendet Time Objekte, wir machen das auch
@@ -208,6 +226,7 @@ module SchildErweitert
208
226
 
209
227
  def self.note_aus_punkten(punkte)
210
228
  return unless punkte && punkte.to_i.between?(1,15) || punkte == "0"
229
+ return punkte if ((punkte.to_i == 0) && (punkte.size > 1))
211
230
  return if (punkte.class == String) && punkte.empty?
212
231
  @note[punkte.to_i]
213
232
  end
@@ -254,9 +273,6 @@ module SchildErweitert
254
273
  name = const_set(name, klass)
255
274
  end
256
275
 
257
- Fachklasse.include CoreExtensions::Fachklasse
258
- Schueler.include CoreExtensions::Schueler
259
-
260
276
  # Stellt die Schüler-Tabelle samt Assoziationen bereit.
261
277
  class Schueler
262
278
  # gibt das z.Zt. aktuelle Halbjahr zurück.
@@ -304,12 +320,12 @@ module SchildErweitert
304
320
 
305
321
  # fragt ab, ob in Schild ein Foto als hinterlegt eingetragen ist.
306
322
  def foto_vorhanden?
307
- self.foto_vorhanden == "+"
323
+ !!(self.schuelerfoto && self.schuelerfoto.foto)
308
324
  end
309
325
 
310
326
  # gibt, wenn vorhanden, ein Foto als jpg-String zurück, ansonsten nil.
311
327
  def foto
312
- self.foto_vorhanden? ? self.schuelerfoto.foto : nil
328
+ self.schuelerfoto.foto if self.foto_vorhanden?
313
329
  end
314
330
  end
315
331
 
@@ -392,7 +408,7 @@ module SchildErweitert
392
408
  fach.bezeichnung
393
409
  end
394
410
 
395
- # Die Fachgruppen ID des Fachs
411
+ # Die Fachgruppen-ID des Fachs
396
412
  def fachgruppe_ID
397
413
  fach.fachgruppe_id
398
414
  end
@@ -436,6 +452,37 @@ module SchildErweitert
436
452
  end
437
453
  end
438
454
 
455
+ # Assoziation für Abi-Abschlussdaten
456
+ class AbiAbschluss
457
+ # Ist der Schüler zugelassen?
458
+ def zulassung?
459
+ self.Zugelassen == "+"
460
+ end
461
+ alias_method :zugelassen?, :zulassung?
462
+
463
+ # Hat der Schüler die Abi-Prüfung bestanden?
464
+ def bestanden_abi?
465
+ self.PruefungBestanden == "+"
466
+ end
467
+ alias_method :pruefung_bestanden?, :bestanden_abi?
468
+
469
+ def latinum?
470
+ self.Latinum == "+"
471
+ end
472
+
473
+ def kl_latinum?
474
+ self.KlLatinum == "+"
475
+ end
476
+
477
+ def graecum?
478
+ self.Graecum == "+"
479
+ end
480
+
481
+ def hebraicum?
482
+ self.Hebraicum == "+"
483
+ end
484
+ end
485
+
439
486
  # Assoziation für die jeweiligen Abi-Prüfungsfächer
440
487
  class AbiAbschlussFaecher
441
488
  include NotenHelfer
@@ -445,6 +492,15 @@ module SchildErweitert
445
492
  end
446
493
  end
447
494
 
495
+ # Assoziation für die jeweiligen FHR-Prüfungsfächer
496
+ class FHRAbschlussFaecher
497
+ include NotenHelfer
498
+
499
+ def note(notenart)
500
+ note_s send(notenart)
501
+ end
502
+ end
503
+
448
504
  # Schul-Tabelle mit vereinfachtem Zugriff auf Datenfelder mittel class-Methoden
449
505
  class Schule
450
506
  # gibt die Schulnummer zurück
@@ -470,21 +526,9 @@ module SchildErweitert
470
526
 
471
527
  # Tabelle der Schuld-Benutzer zum Abgleichen der Daten
472
528
  class Nutzer
473
-
474
- # der Nutzername
475
- def name
476
- self.us_name
477
- end
478
-
479
- # der Login-Name des Nutzers
480
- def login
481
- self.us_login_name
482
- end
483
-
484
- # das Passwort des Nutzers
485
- def passwort
486
- self.us_password
487
- end
529
+ alias :name :us_name
530
+ alias :login :us_login_name
531
+ alias :passwort :us_password
488
532
  alias :password :passwort
489
533
 
490
534
  # prüft, ob das angegebene Passwort mit dem gespeicherten Passwort übereinstimmt
@@ -499,3 +543,4 @@ module SchildErweitert
499
543
  end
500
544
  end
501
545
  end
546
+
data/schild.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = %q{Schild-API}
12
12
  spec.description = %q{schild bietet eine Ruby-Schnittstelle zu SchilD-NRW-Datenbanken.}
13
13
  spec.homepage = "https://github.com/hmt/schild"
14
- spec.licenses = ["Creative Commons Namensnennung 4.0 International Lizenz.", "MIT License"]
14
+ spec.licenses = ["MIT"]
15
15
  spec.required_ruby_version = ">= 2.0"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
@@ -20,11 +20,11 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1"
23
- spec.add_development_dependency "rake", "~> 10"
23
+ spec.add_development_dependency "rake", "~> 11"
24
24
  spec.add_development_dependency "minitest", "~> 5"
25
25
  spec.add_development_dependency "minitest-rg", "~> 5"
26
26
  spec.add_development_dependency "mysql2", "~> 0.4"
27
- spec.add_development_dependency "envyable", "~> 0"
27
+ spec.add_development_dependency "envyable", "~> 1"
28
28
 
29
29
  spec.add_runtime_dependency "sequel", "~> 4"
30
30
  end
@@ -9,11 +9,4 @@ describe Fachklasse do
9
9
  @f.schueler.must_be_instance_of Array
10
10
  end
11
11
  end
12
-
13
- describe 'Legacy-Methoden funktionieren' do
14
- it 'kennt dqr_niveau' do
15
- @f.dqr_niveau.must_equal "Alte Schild-Version ohne DQR-Niveau"
16
- end
17
- end
18
-
19
12
  end
@@ -12,12 +12,6 @@ describe Schueler do
12
12
  end
13
13
  end
14
14
 
15
- describe 'Legacy-Methoden funktionieren' do
16
- it 'kennt entlass_art' do
17
- @sm.entlassart.must_equal @sm.entlass_art
18
- end
19
- end
20
-
21
15
  describe 'Associations funktionieren Erwartungsgemäß' do
22
16
  it 'geben Fachklassenbezeichnung zurück (eigeneschule_fachklassen:Fachklassen)' do
23
17
  @sm.fachklasse.Bezeichnung.must_equal "Friseur"
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.7.2
4
+ version: 0.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - HMT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-21 00:00:00.000000000 Z
11
+ date: 2016-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10'
33
+ version: '11'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10'
40
+ version: '11'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '1'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '1'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: sequel
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -132,8 +132,7 @@ files:
132
132
  - specs/type_safe_spec.rb
133
133
  homepage: https://github.com/hmt/schild
134
134
  licenses:
135
- - Creative Commons Namensnennung 4.0 International Lizenz.
136
- - MIT License
135
+ - MIT
137
136
  metadata: {}
138
137
  post_install_message:
139
138
  rdoc_options: []
@@ -151,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
150
  version: '0'
152
151
  requirements: []
153
152
  rubyforge_project:
154
- rubygems_version: 2.4.6
153
+ rubygems_version: 2.5.1
155
154
  signing_key:
156
155
  specification_version: 4
157
156
  summary: Schild-API