schild 0.7.2 → 0.7.8

Sign up to get free protection for your applications and to get access to all the features.
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