1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 import os
40
41 import pgdb
42
43
44
45 from universal import zk
46
47
48 import wx
49
50 import sys
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
89 """
90 Klasse zur Behandlung von Datenbankfehlermeldungen.
91
92 @keyword value: Es ist die Fehlermeldung zu übergeben.
93 @type value: Zeichenkette
94 """
96 self.value = "Datenbankfehlermeldung -> " + str( value )
97
99 return repr( self.value )
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
125 """
126 Klasse zum Datenbankzugriff auf PostgreSQL-Datenbanken. Es wird die Datenbankverbindung hergestellt und eine Transaktion gestartet.
127
128 @keyword dbName: Es ist der Datenbankname anzugeben
129 @type dbName: Zeichenkette
130 @keyword dbBenutzerName: Es ist der Datenbankbenutzername zu übergeben.
131 @type dbBenutzerName: Zeichenkette
132 @keyword dbKennwort: Es ist das Kennwort des Datenbankbenutzers zu übergeben.
133 @type dbKennwort: Zeichenkette
134 @keyword hostaddr: Es ist die IP-Adresse anzugeben, über die der PostgreSQL-Datenbankserver ansprechbar ist.
135 @type hostaddr: Zeichenkette
136
137 @raise Fehler: Fehlermeldung und Programmende, wenn die Datenbankverbindung nicht hergestellt werden kann.
138 """
139
140
141
142
143
144
145
146
147
148 - def __init__( self, dbName, dbBenutzerName, dbKennwort, hostaddr ):
149
150
151
152
153
154
155
156
157
158 self.anzSpalten = 0
159 """
160 @requires: Erst ist C{__dbAbfrage__(...)} auszuführen..
161
162 @cvar: Enthält die Anzahl der gelesenen Spalten.
163 @type: Ganzzahl
164 """
165
166 self.anzZeilen = 0
167 """
168 @requires: Erst ist C{__dbAbfrage__(...)} auszuführen..
169
170 @cvar: Enthält die Anzahl der gelesenen Zeilen (Tuples).
171 @type: Ganzzahl
172 """
173
174 self.hatWerte = False
175 """
176 @requires: Erst ist C{__dbAbfrage__(...)} auszuführen..
177
178 @cvar: Die Datenbankabfrage hat Werte zurückgegeben.
179 @type: Boolean
180 """
181
182 self.dbCursor = None
183 """
184 @cvar: Datenbankobjekt, welches den systemweit geltenden Datenbankcursor repräsentiert.
185 @type: pgdb - Cursor Object
186 """
187
188 self.__dbAbfrage__Ergebnis = None
189 """
190 @cvar: Repräsentiert das Ergebnis der SQL-Abfrage.
191 @type: pgdb - Cursor Object
192 """
193
194
195
196
197
198 try:
199
200 self.dbVerbindung = pgdb.connect( database = dbName
201 , user = dbBenutzerName
202 , password = dbKennwort
203 , host = hostaddr
204
205
206
207
208
209 )
210 """
211 @cvar: Datenbankobjekt, welches die Datenbankverbindung enthält.
212 @type: pgdb - Connection Object
213 """
214
215 except pgdb.Error, msg:
216 raise Fehler( "Die Verbindung zum Datenbankserver (PostgreSQL) konnte nicht hergestellt werden.\n\n" + str( msg ) + "\n" + "'wxvf' wird beendet." )
217
218
219
220
221
222
223
224
225
226
227
228 self.listeTabellenSprUebvarId = self.__liesTabSpFremdschluessel__( zielSpalte = 'spr.uebvar.id' )
229 """
230 @cvar: Es werden die Tabellennamen einschliesslich Spaltennamen zusammengefaßt, die aud C{spr.uebvar.id} referenzieren. Die Tabelle C{spr.uebersetzung.spr_uebvar_id} wird nicht aufgeführt !
231 @type: Python-Liste
232 """
233
234
235
236
237
238 for i in range( len( self.listeTabellenSprUebvarId ) ) :
239
240 if( self.listeTabellenSprUebvarId[i][0] == 'spr.uebersetzung' ) :
241
242 del self.listeTabellenSprUebvarId[i]
243 break
244
245
246
247
248
249
250
251
252
253
255 """
256 Methode zur Datenbankabfrage (die mittels C{sql} übergebenen SQL-Abfrage ausführen).
257
258 @param sql: Es ist die SQL-Abfrage zu übergeben.
259 @type sql: Zeichenkette
260
261 @raise Fehler: Fehlermeldung, wenn die SQL-Abfrage nicht erfolgreich war.
262 """
263
264
265
266
267 if( self.dbCursor == None ) : self.dbCursor = self.dbVerbindung.cursor()
268
269
270
271
272
273
274 self.anzSpalten = 0
275 self.anzZeilen = 0
276 try:
277
278
279
280
281 self.dbCursor.execute( sql )
282
283
284
285
286
287
288 self.hatWerte = not( self.dbCursor.description == None )
289 if( not self.hatWerte ) :
290 return
291
292
293 if( sql.find( "SAVEPOINT" ) > -1 ) : return
294
295
296
297 self.__dbAbfrage__Ergebnis = self.dbCursor.fetchall()
298
299
300
301
302
303 self.hatWerte = not( self.__dbAbfrage__Ergebnis == [] )
304 if( not self.hatWerte ) :
305 return
306
307
308 except pgdb.Error, msg:
309 raise Fehler( msg )
310
311
312
313
314
315 self.anzSpalten = len( self.dbCursor.description )
316 self.anzZeilen = self.dbCursor.rowcount
317
318
319
320
321
322
323
324
326 """
327 Methode die die Anzahl der gelesenen Spalten der C{__dbAbfrage__( ..., lfdNr )} zurückgibt.
328
329 @requires: Erst ist C{__dbAbfrage__( ..., lfdNr )} auszuführen.
330
331 @return: Es wird die Spaltenanzahl zurückgegeben.
332 @rtype: Ganzzahl
333 """
334
335
336
337
338 return self.anzSpalten
339
340
341
342
343
344
345
346
347
349 """
350 Methode die die Anzahl der gelesenen Zeilen der C{__dbAbfrage__( ..., lfdNr )} zurückgibt.
351
352 @requires: Erst ist C{__dbAbfrage__( ..., lfdNr )} auszuführen.
353
354 @return: Es wird die Zeilenanzahl zurückgegeben.
355 @rtype: Ganzzahl
356 """
357
358
359
360
361 return self.anzZeilen
362
363
364
365
366
367
368
369
371 """
372 Methode zur Rückgabe des gelesenen Wertes, der mittels C{zeilenNr, spaltenNr} angegeben wird.
373 Wenn aus der Datenbank C{NULL} gelesen wird, wird eine leere Zeichenkette zurückgegeben.
374
375 @requires: Erst ist C{__dbAbfrage__(...)} auszuführen..
376
377 @param zeilenNr: Es ist die Zeilennummer zu übergeben.
378 @type zeilenNr: Ganzzahl
379
380 @param spaltenNr: Es ist die Spaltennummer zu übergeben.
381 @type spaltenNr: Ganzzahl
382
383 @return: Es wird der gelesenen Wert zurückgegeben.
384 @rtype: Datentyp des jeweiligen Wertes
385 """
386
387
388
389
390 if( not self.__hatWerte__()
391 or zeilenNr > self.__gibAnzZeilen__()
392 or spaltenNr > self.__gibAnzSpalten__() ) :
393 return ""
394
395
396
397
398
399 if( len( self.__dbAbfrage__Ergebnis ) == 0 ) :
400 return ""
401
402 if( self.__dbAbfrage__Ergebnis[zeilenNr][spaltenNr] == None ) :
403 return ""
404
405
406
407
408
409 if( isinstance( "Zk", type( self.__dbAbfrage__Ergebnis[zeilenNr][spaltenNr] ) ) ) :
410
411 if( os.name == 'nt' ) :
412 return unicode( self.__dbAbfrage__Ergebnis[zeilenNr][spaltenNr], 'utf-8' ).encode('windows-1252')
413 else :
414 return unicode( self.__dbAbfrage__Ergebnis[zeilenNr][spaltenNr], 'utf-8' ).encode('utf-8')
415
416 else:
417
418 return self.__dbAbfrage__Ergebnis[zeilenNr][spaltenNr]
419
420
421
422
423
424
425
426
427
429 """
430 Die C{__dbAbfrage__( ..., lfdNr )} hat Werte zurückgegeben.
431
432 @requires: Erst ist C{__dbAbfrage__( ..., lfdNr )} auszuführen.
433
434 @return: Es wird C{True} zurückgegeben, wenn die C{__dbAbfrage__( ..., lfdNr )} Werte zurückgegeben hat.
435 @rtype: Boolean
436 """
437
438
439
440
441 return self.hatWerte
442
443
444
445
446
447
448
449
451 """
452 Interne Methode zur Initialisierung eines C{wx-Objektes}, welches eine Listenform hat.
453
454 @note: Das übergebene C{wx-Objekt} wird verändert !
455
456 @param sql: Es ist die SQL-Abfrage zu übergeben, die die Einträge der Liste erzeugt. In der ersten Spalte der SQL-Abfrage muß der Wert stehen, der im wxObj dargestellt wird. In den nächsten Spalten können zusätzliche (nicht sichtbare) Werte übergeben werden.
457 @type sql: Zeichenkette
458 @param eintragNull: Es ist der erste in der Liste darzustellende Eintrag anzugeben. In Form einer Liste mit zwei Einträgen wird im ersten Eintrag der Text und im zweiten Eintrag als weitere Liste (auch wenn nur ein Wert übergeben wird) die Zusatzinformationen (wx - Clientdata) übergeben
459 @type eintragNull: Liste
460 @param wxObj: Es ist das C{wx-Objekt} zu übergeben, welches Datenbankwerte aufnimmt (darstellt).
461 @type wxObj: C{wx-Objekt}
462 """
463
464
465
466
467
468 if len( eintragNull ) == 2:
469 wxObj.nimmWert( wert = eintragNull[0], clientData = eintragNull[1] )
470
471 self.__dbAbfrage__( sql )
472
473 for i in range( self.__gibAnzZeilen__() ):
474 clientData = []
475
476 for j in range( 1, self.__gibAnzSpalten__() ):
477 clientData.append( self.__gibWert__( i, j ) )
478
479 wxObj.nimmWert( wert = str( self.__gibWert__( i, 0 ) ), clientData = clientData )
480
481
482
483
484
485
486
487
488
489
491 """
492 Es wird die Liste der Tabellen- und Spaltennamen die auf C{zielSpalte} referenzieren.
493
494 @param zielSpalte: Es ist der vollständige Datenbankspaltenname anzugeben, auf den mittels Fremdschlüssel verwiesen wird.
495 @type zielSpalte: Zeichenkette
496
497 @return: Es wird die Liste C{[Tabellenname, Spaltenname]} zurückgegeben.
498 @rtype: Ganzzahl
499 """
500
501
502
503
504 self.__dbAbfrage__( """
505 --
506 -- Liste der Spaltenabhängigkeiten auslesen
507 --
508 SELECT
509 intern.gib__stsname( 'schtab', spstart ) AS schtab
510 , intern.gib__stsname( 'sp', spstart ) AS sp
511 FROM
512 intern.zeige__fremdschluessel
513 WHERE
514 spziel = '""" + zielSpalte + """'
515 ;""" )
516
517
518
519
520
521 erg = []
522 for i in range( self.__gibAnzZeilen__() ):
523
524 erg.append( [ self.__gibWert__( i, 0 )
525 , self.__gibWert__( i, 1 ) ] )
526
527
528
529
530
531 return erg
532
533
534
535
536
537
538
539
540
542 """Es wird geprüft, ob die übergebene Anmerkung in der Datenbank zu finden ist.
543
544 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
545 @type sprSprachenId: Ganzzahl
546
547 @param anmerkung: Es ist die zu suchende Anmerkung zu übergeben.
548 @type anmerkung: Zeichenkette
549
550 @return: Es wird eine Liste der C{ps_gefanm_id} zurückgegeben, in der die Anmerkung gefunden wurde. Wird die Anmerkung nicht gefunden, wird C{None} zurückgegeben.
551 @rtype: Python-Liste
552 """
553
554
555
556
557 self.__dbAbfrage__( """
558 --
559 -- Anmerkungen - es wird der jeweils letzte zugeordnete Eintrag angezeigt
560 -- (Logbuchfunktion)
561 --
562 SELECT DISTINCT
563 -- 0
564 prj.zeige__pl_psgefanm.ps_anmerkung_id
565 FROM
566 prj.zeige__pl_psgefanm_le
567 , prj.zeige__pl_psgefanm
568 LEFT OUTER JOIN spr.zeige__wgruppe ON (
569 prj.zeige__pl_psgefanm.spr_uebvar_id =
570 spr.zeige__wgruppe.spr_uebvar_id
571 AND
572 --
573 -- Sprache Auswählen
574 --
575 spr.zeige__wgruppe.spr_sprachen_id = """
576 + str( sprSprachenId ) + """ )
577 WHERE
578 --
579 -- Ausschließlich die letzten (aktuellen) Anmerkungen anzeigen, ...
580 --
581 prj.zeige__pl_psgefanm_le.prj__pl_psgefanm__id =
582 prj.zeige__pl_psgefanm.id
583 AND
584 --
585 -- ... die nicht entfernt wurden
586 --
587 prj.zeige__pl_psgefanm.logentfernt = false
588 AND
589 spr.zeige__wgruppe.wgruppe = '""" + anmerkung.encode('utf-8') + """'
590 ;""" )
591
592
593
594
595
596 if( self.__gibAnzZeilen__() == 0 ) : return None
597
598
599
600
601
602 erg = []
603 for i in range( self.__gibAnzZeilen__() ):
604
605 erg.append( self.__gibWert__( i, 0 ) )
606
607
608
609
610
611 return erg
612
613
614
615
616
617
618
619
620
621
623 """
624 Methode, die die Datenbank-Identifikationsnummern der Gefahrenszenarien zurückgibt, die innerhalb des vorgegebenen Projektes der angegebenen Protokoll-Id zugeordnet sind.
625
626 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
627 @type prjProjekteId: Ganzzahl
628
629 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
630 @type prtProtokollId: Ganzzahl(liste)
631
632 @return: Es wird C{[prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id]} zurückgegeben.
633 @rtype: Python-Liste
634 """
635
636
637
638
639 self.__dbAbfrage__( self.gibSQLSelect(
640 select = """
641 SELECT DISTINCT
642 prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id"""
643 , tabellen = [ self.gibSQLSelect__PlPrtPsGefszenario( sqlJOIN = None
644 , sqlWHERE = """
645 AND
646 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id IN( """ + str( prtProtokollId ) + """ )
647 AND
648 prj.zeige__pl_prtpsgefszenario.prj_projekte_id = """ + str( prjProjekteId ) ) ] ) )
649
650
651
652
653
654 erg = []
655 for i in range( self.__gibAnzZeilen__() ):
656
657 erg.append( self.__gibWert__( i, 0 ) )
658
659
660
661
662
663 return erg
664
665
666
667
668
669
670
671
672
673
674
675
677 """
678 Methode, die Datenbank-Identifikationsnummern der gefährdeten Personen zurückgibt.
679
680 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
681 @type prjProjekteId: Ganzzahl
682
683 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
684 @type sprSprachenId: Ganzzahl
685
686 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
687 @type psGefszenarioId: Ganzzahl
688
689 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
690 @type prtProtokollId: Ganzzahl(liste)
691
692 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
693 @type psGefszenarioId: Ganzzahl
694
695 @param sqlProjekteIdIN: Es ist C{True} anzugeben, wenn C{prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id IN(prjProjekteId)} engegeben werden soll. Bei C{False} wird C{prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id NOT IN(prjProjekteId)} verwendet.
696 @type sqlProjekteIdIN: Ganzzahl
697
698 @return: Es wird C{[prj.zeige__prtprotokoll.prt__typ__id, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__notizen, proteintrag, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__datuhrz, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__duanfrage, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__erledigt, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__intern, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_personen_id, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__teilnehmer, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__termin, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__id, prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id, prj.zeige__prtprotokoll.prt__protokoll__id]} zurückgegeben.
699 @rtype: Python-Liste
700 """
701
702
703
704
705 self.__dbAbfrage__( self.gibSQL_prjPrtProtokoll( prjProjekteId = prjProjekteId
706 , sprSprachenId = sprSprachenId
707 , prtProtokollId = prtProtokollId
708 , sqlProjekteIdIN = sqlProjekteIdIN ) )
709
710
711
712
713
714 erg = []
715 for i in range( self.__gibAnzZeilen__() ):
716
717 erg.append( [
718 self.__gibWert__( i, 0 )
719
720 , self.__gibWert__( i, 1 )
721
722 , self.__gibWert__( i, 2 )
723
724 , self.__gibWert__( i, 3 )
725
726 , self.__gibWert__( i, 4 )
727
728 , self.__gibWert__( i, 5 )
729
730 , self.__gibWert__( i, 6 )
731
732 , self.__gibWert__( i, 7 )
733
734 , self.__gibWert__( i, 8 )
735
736 , self.__gibWert__( i, 9 )
737
738 , self.__gibWert__( i, 10 )
739
740 , self.__gibWert__( i, 11 )
741
742 , self.__gibWert__( i, 12 ) ] )
743
744
745
746
747
748 return erg
749
750
751
752
753
754
755
756
757
758 - def gibListePsAbkId( self, prjProjekteId, sprSprachenId, psGefszenarioId, psAbkTyp ):
759 """
760 Methode, die Datenbank-Identifikationsnummern der gefährdeten Personene zurückgibt.
761
762 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
763 @type prjProjekteId: Ganzzahl
764
765 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
766 @type sprSprachenId: Ganzzahl
767
768 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
769 @type psGefszenarioId: Ganzzahl
770
771 @param psAbkTyp: Es ist der Typ der Abkürzung (C{ps.abk.typ}) zu übergeben.
772 @type psAbkTyp: Zeichenkette
773 """
774
775
776
777
778 self.__dbAbfrage__( self.gibSQL_prjPlPsGefabk( prjProjekteId = prjProjekteId
779 , sprSprachenId = sprSprachenId
780 , psGefszenarioId = psGefszenarioId ) )
781
782
783
784
785
786 erg = []
787 for i in range( self.__gibAnzZeilen__() ):
788 typ = self.__gibWert__( i, 0 )
789
790
791
792
793
794 if typ == psAbkTyp :
795
796 erg.append( self.__gibWert__( i, 1 ) )
797 continue
798
799
800
801
802
803 return erg
804
805
806
807
808
809
810
811
812
813
814
815 - def gibListePsPrtProtokollWerte( self, prjProjekteId, sprSprachenId, psGefszenarioId, prtTypAspekt, prtTypId = None, prtProtokollIdVorg = None ):
816 """
817 Methode, die die Datenbank-Identifikationsnummern der zugeordneten Protokolleinträge zurückgibt.
818
819 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
820 @type prjProjekteId: Ganzzahl
821
822 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
823 @type sprSprachenId: Ganzzahl
824
825 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
826 @type psGefszenarioId: Ganzzahl
827
828 @param prtTypAspekt: Es ist der Aspekt (PE, SF, TP) des Protokolleintrages (C{prt.typ.aspekte}) zu übergeben.
829 @type prtTypAspekt: Zeichenkette
830
831 @param prtTypId: Es ist die Datenbankidentifikationsnummer (C{prt.typ.id}) des Typs des aktuellen Protokolleintrages zu übergeben.
832 @type prtTypId: Ganzzahl
833
834 @param prtProtokollIdVorg: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
835 @type prtProtokollIdVorg: Ganzzahl(liste)
836
837 @return: Es wird C{[prj.zeige__pl_prtpsgefszenario.prt_protokoll_id]} zurückgegeben.
838 @rtype: Python-Liste
839 """
840
841
842
843
844 self.__dbAbfrage__( self.gibSQL_psPrtProtokoll(
845 prjProjekteId = prjProjekteId
846 , sprSprachenId = sprSprachenId
847 , prtTypAspekt = prtTypAspekt
848 , psGefszenarioId = psGefszenarioId
849 , prtTypId = prtTypId
850 , sqlINpsGefszenId = True
851 , prtProtokollIdVorg = prtProtokollIdVorg
852 , prtProtokollIdNachf = None ) )
853
854
855
856
857
858 erg = []
859 for i in range( self.__gibAnzZeilen__() ):
860
861 if( self.__gibWert__( i, 3 ) in erg ) :
862
863 continue
864
865 erg.append(
866 self.__gibWert__( i, 3 ) )
867
868
869
870
871
872 return erg
873
874
875
876
877
878
879
880
881
882
884 """
885 Methode, die Datenbank-Identifikationsnummern der gefährdeten Personene zurückgibt.
886
887 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
888 @type prjProjekteId: Ganzzahl
889
890 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
891 @type psGefszenarioId: Ganzzahl
892
893 @param strNameId: Es ist die Datenbankidentifikationsnummer (C{str.name.id}) der Strukturbezeichnung zu übergeben
894 @type strNameId: Ganzzahl
895 """
896
897
898
899
900 self.__dbAbfrage__( """
901 --
902 -- Strukturpunkte - es wird der jeweils letzte zugeordnete Eintrag angezeigt
903 -- (Logbuchfunktion)
904 --
905 SELECT
906 -- 0
907 prj.zeige__pl_psgefstrkt.str_strkt_id AS strkt_id
908 --
909 -- Kontrolle
910 --
911 --, prj.zeige__pl_psgefstrkt.logdatuhrz AS datuhrz
912 FROM
913 prj.zeige__pl_psgefstrkt_le
914 , prj.zeige__pl_psgefstrkt
915 , str.strkt
916 WHERE
917 --
918 -- Ausschließlich die letzten (aktuellen) Strukturpunkte anzeigen, ...
919 --
920 prj.zeige__pl_psgefstrkt_le.prj__pl_psgefstrkt__id =
921 prj.zeige__pl_psgefstrkt.id
922 AND
923 --
924 -- ... die nicht entfernt wurden
925 --
926 prj.zeige__pl_psgefstrkt.logentfernt = false
927 AND
928 --
929 -- Projekt auswählen
930 --
931 prj.zeige__pl_psgefstrkt.prj_projekte_id = """
932 + str( prjProjekteId ) + """
933 AND
934 --
935 -- Gefahrenszenario auswählen
936 --
937 prj.zeige__pl_psgefstrkt.ps_gefszenario_id = """
938 + str( psGefszenarioId ) + """
939 AND
940 --
941 -- Strukturnamen auswählen
942 --
943 prj.zeige__pl_psgefstrkt.str_strkt_id = str.strkt.id
944 AND
945 str.strkt.str_name_id = """ + str( strNameId ) + """
946 ;""" )
947
948
949
950
951
952
953 erg = []
954 for i in range( self.__gibAnzZeilen__() ):
955
956 erg.append( self.__gibWert__( i, 0 ) )
957
958
959
960
961
962 return erg
963
964
965
966
967
968
969
970
971
972
973
975 """Methode zur Rückgabe des C{PostgreSQL-Spaltennamens}. Der Spaltenname wird anhand der Identifikationsnummer C{wxWindowId} des Objektes zurückgegeben, welches den Inhalt der Spalte in C{wxvf} darstellt. Wenn C{keinProjekt == false}, wird die Spalte zurückgegeben, welche den projektspezifisch modifizierten Wert aufnimmt.
976
977 @param wxWindowId: Es ist die Identifikationsnummer des Objektes anzugeben, welches den Inhalt der Spalte darstellt
978 @type wxWindowId: wxPython - wx.Window - Id
979
980 @return: Es wird der Spaltenname zurückgegeben.
981 @rtype: Zeichenkette
982 """
983
984
985
986
987
988
989
990
991 if wxWindowId == -206 : return "prj.projekte.id"
992
993
994
995
996 if wxWindowId == -307 : return "prj.pp_prtprotokoll.datuhrz"
997 elif wxWindowId == -321 : return "prj.pp_prtprotokoll.duanfrage"
998 elif wxWindowId == -303 : return "prj.pp_prtprotokoll.erledigt"
999 elif wxWindowId == -301 : return "prj.pp_prtprotokoll.intern"
1000 elif ( wxWindowId == -311
1001 or wxWindowId == -312
1002 or wxWindowId == -327
1003 or wxWindowId == -328 ): return "prj.pp_prtprotokoll.prj_personen_id"
1004 elif wxWindowId == -323 : return "prj.pp_prtprotokoll.termin"
1005
1006 elif wxWindowId == -299 : return "prt.protokoll.id"
1007 elif wxWindowId == -316 : return "prj.pp_prtprotokoll.spr_uebvar_id"
1008 elif wxWindowId == -318 : return "prj.pp_prtprotokoll.notizen"
1009
1010 elif wxWindowId == -305 : return "prt.typ.id"
1011
1012
1013
1014
1015 if ( wxWindowId == -236
1016 or wxWindowId == -237
1017 or wxWindowId == -268
1018 or wxWindowId == -277
1019 or wxWindowId == -286 ): return "prj.pl_psgefabk.ps_abk_id"
1020 elif ( wxWindowId == -272
1021 or wxWindowId == -281
1022 or wxWindowId == -290 ): return "prj.pl_psgefabk.spr_uebvar_id_zus"
1023 elif ( wxWindowId == -274
1024 or wxWindowId == -283
1025 or wxWindowId == -292 ): return "prj.pl_psgefabk.notizen"
1026
1027 if wxWindowId == -249 : return "prj.pl_psgefanm.notizen"
1028 elif wxWindowId == -248 : return "prj.pl_psgefanm.spr_uebvar_id"
1029
1030 if ( wxWindowId == -255
1031 or wxWindowId == -256
1032 or wxWindowId == -260
1033 or wxWindowId == -261 ): return "prj.pl_prtpsgefszenario.prt_protokoll_id"
1034
1035 if ( wxWindowId == -231
1036 or wxWindowId == -232 ): return "ps.gefstrkt.str_strkt_id"
1037
1038 if wxWindowId == -221 : return "ps.gefszenario.id"
1039 elif wxWindowId == -243 : return "prj.pp_psgefszenario.notizen"
1040 elif wxWindowId == -241 : return "prj.pp_psgefszenario.spr_uebvar_id"
1041
1042 elif wxWindowId == -227 : return "prj.pp_psgefszenario.spr_uebvar_id_ursp"
1043
1044 elif wxWindowId == -265 : return "prj.pp_psgefszenario.spr_uebvar_id_reprgefszen"
1045
1046
1047
1048
1049 if wxWindowId == -208: return "spr.sprachen.id"
1050
1051
1052
1053
1054 return ""
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1066 """
1067 Methode, die die SQL-Abfrage zurückgibt, die die Protokolleinträge auswählt, die dem Gefahrenszenario / weiteren Gefahrenszenarien im Projekt zugeordnet sind.
1068
1069 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
1070 @type prjProjekteId: Ganzzahl
1071
1072 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
1073 @type psGefszenarioId: Ganzzahl
1074
1075 @param internFirmaId: Es ist die Datenbankidentifikationsnummer (C{intern.firma.id}) des Erstellers des aktuellen Dokumentes zu übergeben.
1076 @type internFirmaId: Ganzzahl
1077
1078 @param sqlINpsGefszenId: Wenn C{True} angegeben wird, werden die Protokolleinträge zum Gefahrenszenario ausgewählt. Sonst nicht.
1079 @type sqlINpsGefszenId: Boolean
1080 """
1081
1082
1083
1084
1085 sqlNOT = ''
1086 if( not sqlINpsGefszenId ) : sqlNOT = 'NOT '
1087
1088 sqlGefszenario = ""
1089 if( psGefszenarioId is not None ) :
1090
1091 sqlGefszenario = ("""
1092 AND
1093 prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id """ + sqlNOT + """IN( """
1094 + str( psGefszenarioId ) + """ )""")
1095
1096 return( """
1097 SELECT DISTINCT
1098 prt_protokoll_id
1099 FROM
1100 prj.zeige__pl_prtpsgefszenario
1101 , prj.zeige__pl_prtpsgefszenario_le
1102 WHERE
1103 prj.zeige__pl_prtpsgefszenario_le.prj__pl_prtpsgefszenario__id =
1104 prj.zeige__pl_prtpsgefszenario.id
1105 AND
1106 prj.zeige__pl_prtpsgefszenario.logentfernt = false
1107 AND
1108 prj.zeige__pl_prtpsgefszenario.prj_projekte_id = """
1109 + str( prjProjekteId )
1110 + sqlGefszenario + """
1111 ;""" )
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1139 """
1140 Methode, die die SQL-Abfrage zurückgibt, die Abkürzungen auswählt, die dem Gefahrenszenario im Projekt zugeordnet sind.
1141
1142 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
1143 @type prjProjekteId: Ganzzahl
1144
1145 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
1146 @type sprSprachenId: Ganzzahl
1147
1148 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
1149 @type psGefszenarioId: Ganzzahl
1150 """
1151
1152
1153
1154
1155 return("""
1156 --
1157 -- Abkürzungen - es wird der jeweils letzte zugeordnete Eintrag angezeigt
1158 -- (Logbuchfunktion)
1159 --
1160 SELECT
1161 -- 0
1162 prj.zeige__psabk.ps__abk__typ AS abk_typ
1163 , prj.zeige__pl_psgefabk.ps_abk_id AS abk_id
1164 -- 2
1165 , COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS begr
1166 , prj.zeige__pl_psgefabk.notizen
1167 -- 4
1168 , prj.zeige__pl_psgefabk.spr_uebvar_id_zus
1169 --
1170 -- Kontrolle
1171 --
1172 --, prj.zeige__pl_psgefabk.logdatuhrz AS datuhrz
1173 FROM
1174 prj.zeige__pl_psgefabk_le
1175 , prj.zeige__pl_psgefabk
1176 LEFT OUTER JOIN spr.zeige__wgruppe ON (
1177 prj.zeige__pl_psgefabk.spr_uebvar_id_zus =
1178 spr.zeige__wgruppe.spr_uebvar_id
1179 AND
1180 --
1181 -- Sprache Auswählen
1182 --
1183 spr.zeige__wgruppe.spr_sprachen_id = """
1184 + str( sprSprachenId ) + """
1185 )
1186 , prj.zeige__psabk
1187 WHERE
1188 --
1189 -- Ausschließlich die letzten (aktuellen) Abkürzungen anzeigen, ...
1190 --
1191 prj.zeige__pl_psgefabk_le.prj__pl_psgefabk__id =
1192 prj.zeige__pl_psgefabk.id
1193 AND
1194 --
1195 -- ... die nicht entfernt wurden
1196 --
1197 prj.zeige__pl_psgefabk.logentfernt = false
1198 AND
1199 --
1200 -- Projekt auswählen
1201 --
1202 prj.zeige__pl_psgefabk.prj_projekte_id = """
1203 + str( prjProjekteId ) + """
1204 AND
1205 --
1206 -- Gefahrenszenario auswählen
1207 --
1208 prj.zeige__pl_psgefabk.ps_gefszenario_id = """ + str( psGefszenarioId ) + """
1209 AND
1210 --
1211 -- Typ der Abkürzung zuordnen
1212 --
1213 prj.zeige__pl_psgefabk.ps_abk_id = prj.zeige__psabk.ps__abk__id
1214 AND
1215 prj.zeige__pl_psgefabk.prj_projekte_id =
1216 prj.zeige__psabk.prj__p_psabk__prj_projekte_id
1217 ORDER BY
1218 prj.zeige__psabk.ps__abk__typ
1219 ;""")
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233 - def gibSQL_prjPrtDoku( self, prjProjekteId, sprSprachenId, prtProtokollId, psGefszenarioId, internFirmaId ):
1234 """
1235 Methode, die die SQL-Abfrage zurückgibt, die die Dokumente auswählt, die einem Protokolleintrag, einer Sicherheitsanforderung, Terminplaneintrag oder Gefarenszenario zugeordnet sind.
1236
1237 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
1238 @type prjProjekteId: Ganzzahl
1239
1240 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
1241 @type sprSprachenId: Ganzzahl
1242
1243 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
1244 @type prtProtokollId: Ganzzahl
1245
1246 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
1247 @type psGefszenarioId: Ganzzahl
1248
1249 @param internFirmaId: Es ist die Datenbankidentifikationsnummer (C{intern.firma.id}) des Erstellers des aktuellen Dokumentes zu übergeben.
1250 @type internFirmaId: Ganzzahl
1251 """
1252
1253
1254
1255
1256 projekt = ""
1257 protokoll = ""
1258 gefszenario = ""
1259 firma = ""
1260
1261 if( prjProjekteId is not None ) :
1262 projekt = """
1263 AND
1264 --
1265 -- Projekt festlegen
1266 --
1267 prj.zeige__dokdoku.prj__pl_prtdokdoku__prj_projekte_id = """ + str( prjProjekteId ) + """
1268 """
1269
1270 if( prtProtokollId is not None ) :
1271 protokoll = """
1272 AND
1273 --
1274 -- Protokolleinträge festlegen
1275 --
1276 prj.zeige__dokdoku.prj__pl_prtdokdoku__prt_protokoll_id IN( """ + str( prtProtokollId ) + """ )
1277 """
1278
1279 if( psGefszenarioId is not None ) :
1280 gefszenario = """
1281 AND
1282 --
1283 -- Gefahrenszenarien festlegen
1284 --
1285 prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id = """ + str( psGefszenarioId ) + """
1286 """
1287
1288 if( internFirmaId is not None ) :
1289 firma = """
1290 AND
1291 --
1292 -- Firma einschränken
1293 --
1294 prj.zeige__dokdoku.dok__doku__intern_firma_id = """ + str( internFirmaId ) + """
1295 """
1296
1297
1298 return( """
1299 --
1300 -- Dokumente anzeigen
1301 --
1302 SELECT DISTINCT
1303 -- 0
1304 prj.zeige__dokdoku.dok__doku__id
1305 , prj.zeige__dokdoku.dok__doku__notizen AS dok_notizen
1306 -- 2
1307 , prj.zeige__dokdoku.prj__pl_prtdokdoku__nr
1308 , COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS titel
1309 -- 4
1310 , prj.zeige__dokdoku.prj__pl_prtdokdoku__notizen AS prj_notizen
1311 , ausgabe.prj__pl_dokausgabe__stand AS stand
1312 -- 6
1313 , ausgabe.prj__pl_dokausgabe__datum AS datum
1314 , ausgabe.prj__pl_dokausgabe__notizen AS ausg_notizen
1315 -- 8
1316 , prj.zeige__dokdoku.dok__doku__aspekt AS dok_aspekt
1317 , COALESCE( zus.wgruppe, '??' ) AS zus
1318 -- 10
1319 , prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id
1320 , prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id_zus
1321 -- 12
1322 , ausgabe.prj__pl_dokausgabe__istfrei AS istfrei
1323 , prj.zeige__dokdoku.prj__pl_prtdokdoku__prt_protokoll_id
1324 FROM
1325 prj.zeige__pl_prtpsgefszenario
1326 , prj.zeige__pl_prtpsgefszenario_le
1327 , prj.zeige__pl_prtdokdoku_le
1328 , prj.zeige__dokdoku
1329 --
1330 -- Dokumententitel
1331 --
1332 LEFT OUTER JOIN spr.zeige__wgruppe ON (
1333 prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id =
1334 spr.zeige__wgruppe.spr_uebvar_id
1335 AND
1336 --
1337 -- Sprache Auswählen
1338 --
1339 spr.zeige__wgruppe.spr_sprachen_id = """ + str( sprSprachenId ) + """
1340 )
1341 --
1342 -- Zusatzinformationen
1343 --
1344 LEFT OUTER JOIN spr.zeige__wgruppe AS zus ON (
1345 prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id_zus =
1346 zus.spr_uebvar_id
1347 AND
1348 --
1349 -- Sprache Auswählen
1350 --
1351 zus.spr_sprachen_id = """ + str( sprSprachenId ) + """
1352 )
1353 --
1354 -- Ausgaben
1355 --
1356 LEFT OUTER JOIN prj.zeige__dokdoku AS ausgabe ON (
1357 prj.zeige__dokdoku.dok__doku__id = ausgabe.dok__doku__id
1358 AND
1359 --
1360 -- Die Ausgaben wurden nicht entfernt
1361 --
1362 ausgabe.prj__pl_dokausgabe__logentfernt = false
1363
1364 AND
1365 --
1366 -- Projekte müssen übereinstimmen
1367 --
1368 prj.zeige__dokdoku.prj__pl_prtdokdoku__prj_projekte_id =
1369 ausgabe.prj__pl_prtdokdoku__prj_projekte_id
1370 )
1371 --
1372 -- Ausschließlich die letzten (aktuellen) Ausgaben anzeigen
1373 --
1374 INNER JOIN prj.zeige__pl_dokausgabe_le ON (
1375 prj.zeige__pl_dokausgabe_le.prj__pl_dokausgabe__id =
1376 ausgabe.prj__pl_dokausgabe__id
1377 )
1378 WHERE
1379 --
1380 -- Gefahrenszenarien und Protokolleinträge verbinden
1381 --
1382 prj.zeige__pl_prtpsgefszenario.id = prj.zeige__pl_prtpsgefszenario_le.prj__pl_prtpsgefszenario__id
1383 AND
1384 prj.zeige__pl_prtpsgefszenario.logentfernt = false
1385 AND
1386 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id = prj.zeige__dokdoku.prj__pl_prtdokdoku__prt_protokoll_id
1387 AND
1388 --
1389 -- Ausschließlich die letzten (aktuellen) Dokumente anzeigen, ...
1390 --
1391 prj.zeige__pl_prtdokdoku_le.prj__pl_prtdokdoku__id =
1392 prj.zeige__dokdoku.prj__pl_prtdokdoku__id
1393 AND
1394 --
1395 -- ... die nicht entfernt wurden
1396 --
1397 prj.zeige__dokdoku.prj__pl_prtdokdoku__logentfernt = false
1398 AND
1399 --
1400 -- Nulldokument nicht zeigen
1401 --
1402 prj.zeige__dokdoku.dok__doku__id > 0"""
1403 + projekt
1404 + protokoll
1405 + gefszenario
1406 + firma
1407 + """
1408
1409 UNION
1410
1411 --
1412 -- Dokumente anzeigen
1413 --
1414 SELECT DISTINCT
1415 --
1416 -- Dokumente
1417 --
1418 prj.zeige__dokdoku.dok__doku__id
1419 , prj.zeige__dokdoku.dok__doku__notizen
1420 , prj.zeige__dokdoku.prj__pl_prtdokdoku__nr
1421 , COALESCE( spr.zeige__wgruppe.wgruppe, '??' )
1422 , prj.zeige__dokdoku.prj__pl_prtdokdoku__notizen
1423 --
1424 -- Ausgaben
1425 --
1426 , NULL AS stand
1427 , CAST( NULL AS date ) AS datum
1428 , NULL AS ausg_notizen
1429 --
1430 -- Dokumente
1431 --
1432 , prj.zeige__dokdoku.dok__doku__aspekt AS dok_aspekt
1433 , COALESCE( zus.wgruppe, '??' ) AS zus
1434 , prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id
1435 , prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id_zus
1436 --
1437 -- Ausgaben
1438 --
1439 , CAST( NULL AS boolean ) AS istfrei
1440 , prj.zeige__dokdoku.prj__pl_prtdokdoku__prt_protokoll_id
1441 FROM
1442 prj.zeige__pl_prtpsgefszenario
1443 , prj.zeige__pl_prtpsgefszenario_le
1444 , prj.zeige__pl_prtdokdoku_le
1445 , prj.zeige__dokdoku
1446 --
1447 -- Dokumententitel
1448 --
1449 LEFT OUTER JOIN spr.zeige__wgruppe ON (
1450 prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id =
1451 spr.zeige__wgruppe.spr_uebvar_id
1452 AND
1453 --
1454 -- Sprache Auswählen
1455 --
1456 spr.zeige__wgruppe.spr_sprachen_id = """ + str( sprSprachenId ) + """
1457 )
1458 --
1459 -- Zusatzinformationen
1460 --
1461 LEFT OUTER JOIN spr.zeige__wgruppe AS zus ON (
1462 prj.zeige__dokdoku.prj__pl_prtdokdoku__spr_uebvar_id_zus =
1463 zus.spr_uebvar_id
1464 AND
1465 --
1466 -- Sprache Auswählen
1467 --
1468 zus.spr_sprachen_id = """ + str( sprSprachenId ) + """
1469 )
1470 WHERE
1471 --
1472 -- Gefahrenszenarien und Protokolleinträge verbinden
1473 --
1474 prj.zeige__pl_prtpsgefszenario.id = prj.zeige__pl_prtpsgefszenario_le.prj__pl_prtpsgefszenario__id
1475 AND
1476 prj.zeige__pl_prtpsgefszenario.logentfernt = false
1477 AND
1478 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id = prj.zeige__dokdoku.prj__pl_prtdokdoku__prt_protokoll_id
1479 AND
1480 --
1481 -- Ausschließlich die letzten (aktuellen) Dokumente anzeigen, ...
1482 --
1483 prj.zeige__pl_prtdokdoku_le.prj__pl_prtdokdoku__id =
1484 prj.zeige__dokdoku.prj__pl_prtdokdoku__id
1485 AND
1486 --
1487 -- ... die nicht entfernt wurden
1488 --
1489 prj.zeige__dokdoku.prj__pl_prtdokdoku__logentfernt = false
1490 AND
1491 --
1492 -- Nulldokument nicht zeigen
1493 --
1494 prj.zeige__dokdoku.dok__doku__id > 0
1495 AND
1496 --
1497 -- Dokumente, denen noch keine Ausgabe zugeordnet ist
1498 --
1499 prj.zeige__dokdoku.prj__pl_dokausgabe__id IS NULL"""
1500 + projekt
1501 + protokoll
1502 + gefszenario
1503 + firma
1504 + """;""" )
1505
1506
1507
1508
1509
1510
1511
1512
1513 - def gibSQL_prjPrtProtokoll( self, prjProjekteId, sprSprachenId, prtProtokollId = None, sqlProjekteIdIN = True ):
1514 """
1515 Methode, die die SQL-Abfrage zurückgibt, die Detailinformationen zu Protokolleinträgen, Sicherheitsanforderungen oder Terminplaneinträgen aus der Datenbank liest.
1516
1517 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
1518 @type prjProjekteId: Ganzzahl
1519
1520 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
1521 @type sprSprachenId: Ganzzahl
1522
1523 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
1524 @type prtProtokollId: Ganzzahl(liste)
1525
1526 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
1527 @type psGefszenarioId: Ganzzahl
1528
1529 @param sqlProjekteIdIN: Es ist C{True} anzugeben, wenn C{prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id IN(prjProjekteId)} engegeben werden soll. Bei C{False} wird C{prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id NOT IN(prjProjekteId)} verwendet.
1530 @type sqlProjekteIdIN: Ganzzahl
1531
1532 @return: Es wird die SQL-Abfrage zurückgegeben.
1533 @rtype: Zeichenette
1534 """
1535
1536
1537
1538
1539 NOT = ""
1540 if( not sqlProjekteIdIN ) : NOT = "NOT"
1541
1542
1543
1544
1545
1546 sqlPrtProtokollId = ''
1547 if( prtProtokollId is not None ):
1548
1549 sqlPrtProtokollId = ( """
1550 AND
1551 --
1552 -- Protokolleintrag auswählen
1553 --
1554 prj.zeige__prtprotokoll.prt__protokoll__id IN( """ + str( prtProtokollId ) + """ )""" )
1555
1556
1557
1558
1559
1560 return( """
1561 --
1562 -- Details zu den Protokolleinträgen
1563 --
1564 SELECT DISTINCT
1565 -- 0
1566 prj.zeige__prtprotokoll.prt__typ__id
1567 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__notizen
1568 -- 2
1569 , COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS proteintrag
1570 , to_char( prj.zeige__prtprotokoll.prj__pp_prtprotokoll__datuhrz, 'DD.MM.YYYY' )
1571 -- 4
1572 , to_char( prj.zeige__prtprotokoll.prj__pp_prtprotokoll__duanfrage, 'DD.MM.YYYY' )
1573 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__erledigt
1574 -- 6
1575 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__intern
1576 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_personen_id
1577 -- 8
1578 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__teilnehmer
1579 , to_char( prj.zeige__prtprotokoll.prj__pp_prtprotokoll__termin, 'DD.MM.YYYY' )
1580 -- 10
1581 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__id
1582 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id
1583 -- 12
1584 , prj.zeige__prtprotokoll.prt__protokoll__id
1585 FROM
1586 prj.zeige__prtprotokoll
1587 --
1588 -- Text der Protokolleinträge darstellen
1589 --
1590 LEFT OUTER JOIN spr.zeige__wgruppe
1591 ON (
1592 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id =
1593 spr.zeige__wgruppe.spr_uebvar_id
1594 AND
1595 --
1596 -- Sprache Auswählen
1597 --
1598 spr.zeige__wgruppe.spr_sprachen_id = """
1599 + str( sprSprachenId ) + """
1600 )
1601 WHERE
1602 --
1603 -- Projekt auswählen
1604 --
1605 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id """ + NOT + """ IN( """ + str( prjProjekteId ) + """ )"""
1606 + sqlPrtProtokollId + """
1607 ;""" )
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625 - def gibSQL_psPrtProtokoll( self, prjProjekteId, sprSprachenId, prtTypAspekt, psGefszenarioId, prtTypId = None, sqlINpsGefszenId = True, prtProtokollIdVorg = None, prtProtokollIdNachf = None ):
1626 """
1627 Methode, die die SQL-Abfrage zurückgibt, die Detailinformationen zu Protokolleinträgen, Sicherheitsanforderungen oder Terminplaneinträgen aus der Datenbank liest.
1628
1629 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
1630 @type prjProjekteId: Ganzzahl
1631
1632 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
1633 @type sprSprachenId: Ganzzahl
1634
1635 @param prtTypAspekt: Es ist der Aspekt des Protokolleintrages (C{prt.typ.aspekt}) zu übergeben.
1636 @type prtTypAspekt: Zeichenkette
1637
1638 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
1639 @type psGefszenarioId: Ganzzahl
1640
1641 @param prtTypId: Es ist die Datenbankidentifikationsnummer (C{prt.typ.id}) des Typs des aktuellen Protokolleintrages zu übergeben.
1642 @type prtTypId: Ganzzahl
1643
1644 @param sqlINpsGefszenId: Wenn C{True} angegeben wird, werden die Protokolleinträge zum Gefahrenszenario ausgewählt. Sonst nicht.
1645 @type sqlINpsGefszenId: Boolean
1646
1647 @param prtProtokollIdVorg: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
1648 @type prtProtokollIdVorg: Ganzzahl(liste)
1649
1650 @param prtProtokollIdNachf: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
1651 @type prtProtokollIdNachf: Ganzzahl(liste)
1652
1653 @return: Es wird die SQL-Abfrage zurückgegeben.
1654 @rtype: Zeichenette
1655 """
1656
1657
1658
1659
1660 sqlAND = ''
1661
1662 if( prjProjekteId is not None ) :
1663
1664 sqlAND += ( """
1665 AND
1666 --
1667 -- Projekt auswählen
1668 --
1669 prj.zeige__pl_prtpsgefszenario.prj_projekte_id = """
1670 + str( prjProjekteId ) )
1671
1672
1673
1674
1675
1676 sqlNOT = ''
1677 if( not sqlINpsGefszenId ) : sqlNOT = 'NOT '
1678
1679 if( psGefszenarioId is not None ) :
1680
1681 sqlAND += ( """
1682 AND
1683 --
1684 -- Gefahrenszenario auswählen
1685 --
1686 prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id """ + sqlNOT + """IN( """
1687 + str( psGefszenarioId ) + """ ) """ )
1688
1689
1690
1691
1692
1693 if( prtTypId is not None ) :
1694
1695 sqlAND += ( """
1696 AND
1697 --
1698 -- Typ auswählen
1699 --
1700 prj.zeige__prtprotokoll.prt__typ__id IN( """ + str( prtTypId ) + " )" )
1701
1702
1703
1704
1705
1706
1707 if( prtProtokollIdVorg is not None ) :
1708
1709 sqlAND += ( """
1710 AND
1711 --
1712 -- Vorgänger auswählen
1713 --
1714 prj.zeige__prtprotokolltabellen.prj__p_prtverbindung__prt_protokoll_id_vorg IN( """
1715 + str( prtProtokollIdVorg ) + " )" )
1716
1717 if( prtProtokollIdNachf is not None ) :
1718
1719 sqlAND += ( """
1720 AND
1721 --
1722 -- Vorgänger auswählen
1723 --
1724 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id IN( """
1725 + str( prtProtokollIdNachf ) + " )" )
1726
1727
1728
1729
1730
1731 return( """
1732 --
1733 -- Protokolleinträge - es wird der jeweils letzte zugeordnete Eintrag angezeigt
1734 -- (Logbuchfunktion)
1735 --
1736 SELECT DISTINCT
1737 -- 0
1738 prj.zeige__pl_prtpsgefszenario.id AS gefprot_id
1739 , prj.zeige__prtprotokoll.prt__typ__id AS typ_id
1740 -- 2
1741 , COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS proteintrag
1742 , prj.zeige__pl_prtpsgefszenario.prt_protokoll_id AS protokoll_id
1743 -- 4
1744 , CASE WHEN( vorgaenger.prt__typ__aspekt = prj.zeige__prtprotokoll.prt__typ__aspekt )
1745 THEN prj.zeige__prtprotokolltabellen.prj__p_prtverbindung__prt_protokoll_id_vorg
1746 END AS protokoll_id_vorg
1747 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id
1748 -- 6
1749 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__notizen
1750 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__id
1751 --
1752 -- Kontrolle
1753 --
1754 --, prj.zeige__pl_prtpsgefszenario.logdatuhrz AS datuhrz
1755 --, prj.zeige__prtprotokoll.prt__typ__aspekt AS aspekt
1756 FROM
1757 prj.zeige__pl_prtpsgefszenario_le
1758 , prj.zeige__pl_prtpsgefszenario
1759 , ( prj.zeige__prtprotokoll
1760 --
1761 -- Text der Protokolleinträge darstellen
1762 --
1763 LEFT OUTER JOIN spr.zeige__wgruppe
1764 ON (
1765 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id =
1766 spr.zeige__wgruppe.spr_uebvar_id
1767 AND
1768 --
1769 -- Sprache Auswählen
1770 --
1771 spr.zeige__wgruppe.spr_sprachen_id = """
1772 + str( sprSprachenId ) + """
1773 )
1774 --
1775 -- Vorgänger zum Protokolleintrag anzeigen
1776 --
1777 LEFT OUTER JOIN prj.zeige__prtprotokolltabellen
1778 ON (
1779 prj.zeige__prtprotokolltabellen.prt__protokoll__id =
1780 prj.zeige__prtprotokoll.prt__protokoll__id
1781 AND
1782 prj.zeige__prtprotokolltabellen.prj__p_prtverbindung__prj_projekte_id =
1783 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id
1784 ) )
1785 --
1786 -- Vorgänger-Id ausblenden, wenn >prt__typ__aspekt< nicht übereinstimmen
1787 --
1788 LEFT OUTER JOIN prj.zeige__prtprotokoll AS vorgaenger ON (
1789 vorgaenger.prt__protokoll__id =
1790 prj.zeige__prtprotokolltabellen.prj__p_prtverbindung__prt_protokoll_id_vorg
1791 AND
1792 vorgaenger.prj__pp_prtprotokoll__prj_projekte_id =
1793 prj.zeige__prtprotokolltabellen.prj__p_prtverbindung__prj_projekte_id
1794 )
1795 WHERE
1796 --
1797 -- Protokolleinträge auf letzte Einträge beschränken
1798 --
1799 prj.zeige__pl_prtpsgefszenario_le.prj__pl_prtpsgefszenario__id =
1800 prj.zeige__pl_prtpsgefszenario.id
1801 AND
1802 --
1803 -- die Detailinformationen (Gefahrenszenario, Projekt, Aspekt) zu den
1804 -- Protokolleinträgen holen
1805 --
1806 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_personen_id = 0
1807 AND
1808 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id =
1809 prj.zeige__prtprotokoll.prt__protokoll__id
1810 AND
1811 prj.zeige__pl_prtpsgefszenario.prj_projekte_id =
1812 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id
1813 AND
1814 --
1815 -- die nichtgelöschten Einträge zeigen
1816 --
1817 prj.zeige__pl_prtpsgefszenario.logentfernt = false
1818 AND
1819 --
1820 -- Aspekt auswählen
1821 --
1822 prj.zeige__prtprotokoll.prt__typ__aspekt = '""" + str( prtTypAspekt ) + "'"
1823
1824 + sqlAND + """
1825 ;""" )
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835 - def gibSQL_psPrtStrkt( self, prjProjekteId, sprSprachenId, prtProtokollId, psGefszenarioId, strNameId, gibPersonen = False ):
1836 """
1837 Methode, die die SQL-Abfrage zurückgibt, die die Strukturpunkte auswählt, die einem Protokolleintrag, einer Sicherheitsanforderung, Terminplaneintrag oder Gefarenszenario zugeordnet sind.
1838
1839 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
1840 @type prjProjekteId: Ganzzahl
1841
1842 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
1843 @type sprSprachenId: Ganzzahl
1844
1845 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
1846 @type prtProtokollId: Ganzzahl
1847
1848 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
1849 @type psGefszenarioId: Ganzzahl
1850
1851 @param strNameId: Es ist die Datenbankidentifikationsnummer (C{str.name.id}) der Strukturbezeichnung zu übergeben, die dargestellt werden soll.
1852 @type strNameId: Ganzzahl
1853
1854 @return: Es wird die SQL-Abfrage zurückgegeben.
1855 @rtype: Zeichenette
1856 """
1857
1858
1859
1860
1861 strName = ""
1862 gefszenProt = ""
1863 selectProtokoll = ""
1864 protokollGefszenario = ""
1865
1866
1867
1868
1869
1870 if( strNameId is not None ) :
1871 strName = """
1872 AND
1873 --
1874 -- -- Strukturnamen auswählen ----------------------------------
1875 --
1876 prj.zeige__strstrkt.str__name__id = """ + str( strNameId ) + """
1877 """
1878
1879
1880
1881
1882
1883 if( prtProtokollId is None
1884 and psGefszenarioId is None ) :
1885
1886 protokollGefszenario = """
1887 AND
1888 --
1889 -- -- Projekt auswählen ------------------------------------------
1890 --
1891 prj.zeige__strstrkt.prj_projekte_id = """ + str( prjProjekteId )
1892
1893
1894
1895
1896
1897 if( prtProtokollId is not None
1898 or psGefszenarioId is not None ) :
1899 gefszenProt = """
1900 --
1901 -- -- Variabler Teil --------------------------------------------------
1902 --
1903 , prj.zeige__prtprotokolltabellen
1904 """
1905
1906 protokollGefszenario = """
1907
1908 --
1909 -- -- Protokoll-Id / Gefahren-Id einschränken ------------------
1910 --
1911 AND
1912 --
1913 -- -- Strukturpunkt zuordnen ------------------------------------------
1914 --
1915 prj.zeige__prtprotokolltabellen.prj__p_prtstrstrkt__str_strkt_id =
1916 prj.zeige__strstrkt.str__strkt__id
1917 AND
1918 --
1919 -- -- Projekt zuordnen ------------------------------------------
1920 --
1921 prj.zeige__prtprotokolltabellen.prj__p_prtstrstrkt__prj_projekte_id =
1922 prj.zeige__strstrkt.prj_projekte_id
1923 AND
1924 --
1925 -- -- Protokoll auswählen / zuordnen ----------------------------------
1926 --
1927 prj.zeige__prtprotokolltabellen.prt__protokoll__id IN( """
1928
1929
1930
1931
1932
1933 if( prtProtokollId is not None ) :
1934
1935 protokollGefszenario = protokollGefszenario + str( prtProtokollId ) + """ )"""
1936
1937 if( prjProjekteId is not None ) :
1938
1939 selectProtokoll = """
1940 , prj.zeige__prtprotokolltabellen.prj__p_prtstrstrkt__id"""
1941
1942 protokollGefszenario = protokollGefszenario + """
1943 AND
1944 --
1945 -- -- Projekt auswählen ------------------------------------------
1946 --
1947 prj.zeige__strstrkt.prj_projekte_id = """ + str( prjProjekteId )
1948
1949 else :
1950
1951 selectProtokoll = """
1952 , prj.zeige__prtprotokolltabellen.prt__protokoll__id"""
1953
1954
1955
1956
1957
1958
1959 if( gibPersonen ) :
1960
1961 selectProtokoll = selectProtokoll + """
1962 -- 6
1963 , prj.zeige__strstrkt.prj__pp_strstrkt__prj_personen_id
1964 , prj.zeige__strstrkt.prj__pp_strstrkt__spr_uebvar_id"""
1965
1966
1967
1968
1969
1970 if( psGefszenarioId is not None ) :
1971 gefszenProt = gefszenProt + """
1972 , prj.zeige__pl_prtpsgefszenario"""
1973
1974 protokollGefszenario = protokollGefszenario + """
1975 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id )
1976 AND
1977 --
1978 -- -- Projekt zuordnen ------------------------------------------
1979 --
1980 prj.zeige__pl_prtpsgefszenario.prj_projekte_id =
1981 prj.zeige__strstrkt.prj_projekte_id
1982 AND
1983 --
1984 -- -- Gefahrenszenario auswählen ----------------------------------
1985 --
1986 prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id = """ + str( psGefszenarioId )
1987
1988
1989
1990
1991
1992 return( """
1993 --
1994 -- Strukturpunkte - es wird der jeweils letzte zugeordnete Eintrag angezeigt
1995 -- (Logbuchfunktion)
1996 --
1997 SELECT DISTINCT
1998 -- 0
1999 prj.zeige__strstrkt.str__strkt__id
2000 , prj.zeige__strstrkt.str__strkt__nr || ' ' || COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS strpkt
2001 -- 2
2002 , nachfok.str__strkt__id AS str_strkt_id__vorg
2003 , prj.zeige__strstrkt.str__name__id
2004 -- 4
2005 , prj.zeige__strstrkt.str__name__name_k"""
2006 + selectProtokoll + """
2007 --
2008 -- ... damit ORDER BY funktioniert
2009 --
2010 , prj.zeige__strstrkt.str__strkt__nr
2011 FROM
2012 prj.zeige__strstrkt
2013 --
2014 -- Strukturpunkt
2015 --
2016 LEFT OUTER JOIN spr.zeige__wgruppe ON (
2017 prj.zeige__strstrkt.prj__pp_strstrkt__spr_uebvar_id =
2018 spr.zeige__wgruppe.spr_uebvar_id
2019 AND
2020 --
2021 -- Sprache Auswählen
2022 --
2023 spr.zeige__wgruppe.spr_sprachen_id = """
2024 + str( sprSprachenId ) + """
2025 )
2026 --
2027 -- aktueller Strukturpunkt ist ein gültiger Nachfolger
2028 --
2029 LEFT OUTER JOIN prj.zeige__strstrkt AS nachfok
2030 ON (
2031 nachfok.prj__p_strverbindung__str_strkt_id_nachf =
2032 prj.zeige__strstrkt.str__strkt__id
2033 AND
2034 nachfok.prj_projekte_id = prj.zeige__strstrkt.prj_projekte_id
2035 )
2036
2037 """ + gefszenProt + """
2038 WHERE
2039 --
2040 -- -- Gefahrennetz nicht anzeigen ----------------------------------
2041 --
2042 prj.zeige__strstrkt.str__name__id != 2
2043 """
2044 + strName
2045 + protokollGefszenario
2046 + """
2047 ORDER BY
2048 prj.zeige__strstrkt.str__name__name_k
2049 , prj.zeige__strstrkt.str__strkt__nr;""" )
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2063 """
2064 Methode, die die Liste der Tabellenwerte für C{prj.zeige__pl_prtpsgefszenario, prj.zeige__pl_prtpsgefszenario_le} zurückgibt, die in C{gibSQLSelect(... , tabellen )} verwendet werden kann.
2065
2066 @param spalteSprUebvarId: Es ist der Spaltenname anzugeben, der mit C{spr.zeige__wgruppe.spr_uebvar_id} verknüpft wird.
2067 @type spalteSprUebvarId: Zeichenkette
2068
2069 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
2070 @type sprSprachenId: Ganzzahl
2071
2072 @param sqlAS: Es kann eine AS-Bezeichnung für C{spr.zeige__wgruppe} angegeben werden. Sie darf auch C{None} sein.
2073 @type sqlAS: Zeichenkette
2074
2075 @return: Es wird die SQL-Anweisung C{LEFT OUTER JOIN spr.zeige__wgruppe ...} zurückgegeben.
2076 @rtype: Zeichenkette
2077 """
2078
2079
2080
2081
2082 sql = """
2083 --
2084 -- Zeichenkette
2085 --
2086 LEFT OUTER JOIN spr.zeige__wgruppe"""
2087
2088
2089 sqlASintern = "spr.zeige__wgruppe"
2090
2091 if( sqlAS is not None ) :
2092
2093 sqlASintern = sqlAS
2094
2095 sql = sql + " AS " + sqlASintern
2096
2097
2098 sql = sql + """ ON (
2099 """ + sqlASintern + """.spr_uebvar_id =
2100 """ + spalteSprUebvarId + """
2101 AND
2102 --
2103 -- Sprache Auswählen
2104 --
2105 """ + sqlASintern + """.spr_sprachen_id = """ + str( sprSprachenId ) + """
2106 )"""
2107
2108
2109
2110
2111 return sql
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125 - def gibSQLSelect( self, select, tabellen, sqlWHERE = None ):
2126 """
2127 Methode, die die SQL-Abfrage zurückgibt, die ...
2128
2129 @param select: Es sind die Datenbankspalten anzugeben, die in der SQL-Select-Anweisung verwendet werden.
2130 @type select: Zeichenkette
2131
2132 @param tabellen: Es ist die Liste der Tabellen einschließlich spezifischer SQL-Anweisungen anzugeben, die in der SQL-Select-Anweisung verwendet werden. Details zu dieser Liste sind dem Quellcode zu entnehmen.
2133 @type tabellen: Python-Liste
2134
2135 @param sqlWHERE: Es kann eine WHERE-Anweisung angegeben werden. Darf auch C{None} sein.
2136 @type sqlWHERE: Zeichenkette
2137
2138 @return: Es wird die SQL-Abfrage zurückgegeben.
2139 @rtype: Zeichenette
2140 """
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165 sqlFROM = ''
2166 sqlWhereIntern = ''
2167
2168 for i in range( len( tabellen ) ) :
2169
2170
2171
2172
2173 sqlWhereIntern = sqlWhereIntern + ( """
2174 --
2175 --
2176 -- -- """ + tabellen[i][0] + """ ---------------------------------
2177 --
2178 --""" )
2179
2180
2181
2182
2183
2184 sqlFROM = sqlFROM + '\n\t'
2185 if( i > 0 ) :
2186 sqlFROM = sqlFROM + ', '
2187 sqlWhereIntern = sqlWhereIntern + '\nAND\n'
2188
2189
2190
2191
2192
2193
2194 sqlFROM = sqlFROM + tabellen[i][0]
2195
2196 if( tabellen[i][3] is not None ) :
2197 sqlFROM = sqlFROM + tabellen[i][3]
2198
2199
2200
2201
2202
2203
2204
2205 if( i > 0 ) :
2206 sqlWhereIntern = "\t" + sqlWhereIntern + "\t" + tabellen[0][1] + " =\n\t\t" + tabellen[i][1]
2207
2208
2209 if( tabellen[i][2] is not None ) :
2210
2211 sqlWhereIntern = sqlWhereIntern + "\n"
2212 if( i > 0 ) : sqlWhereIntern = sqlWhereIntern + "AND\n"
2213 sqlWhereIntern = sqlWhereIntern + "\t" + tabellen[i][2]
2214
2215 if( tabellen[i][4] is not None ) :
2216 sqlWhereIntern = sqlWhereIntern + tabellen[i][4]
2217
2218
2219
2220
2221
2222 if( sqlWHERE is not None ) : sqlWhereIntern = sqlWhereIntern + sqlWHERE
2223
2224
2225
2226
2227
2228 return( select
2229 + "\nFROM" + sqlFROM
2230 + "\nWHERE" + sqlWhereIntern
2231 + ";" )
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2246 """
2247 Methode, die die Liste der Tabellenwerte für C{prj.zeige__pl_prtpsgefszenario, prj.zeige__pl_prtpsgefszenario_le} zurückgibt, die in C{gibSQLSelect(... , tabellen )} verwendet werden kann.
2248
2249 @param sqlJOIN: Es kann eine JOIN-Anweisung angegeben werden. Darf auch C{None} sein.
2250 @type sqlJOIN: Zeichenkette
2251
2252 @param sqlWHERE: Es kann eine WHERE-Anweisung angegeben werden. Darf auch C{None} sein.
2253 @type sqlWHERE: Zeichenkette
2254
2255 @return: Es wird die Python-Liste für C{gibSQLSelect(... , tebellen )} zurückgegeben.
2256 @rtype: Python-Liste
2257 """
2258
2259
2260
2261
2262 liste = []
2263 liste.append( "prj.zeige__pl_prtpsgefszenario_le, prj.zeige__pl_prtpsgefszenario" )
2264
2265
2266
2267
2268
2269
2270 liste.append( "prj.zeige__pl_prtpsgefszenario.prj_projekte_id" )
2271
2272
2273
2274
2275
2276 liste.append( """prj.zeige__pl_prtpsgefszenario_le.prj__pl_prtpsgefszenario__id =
2277 prj.zeige__pl_prtpsgefszenario.id
2278 AND
2279 prj.zeige__pl_prtpsgefszenario.logentfernt = false""" )
2280
2281
2282
2283
2284
2285 liste.append( sqlJOIN )
2286
2287
2288
2289
2290
2291 liste.append( sqlWHERE )
2292
2293
2294
2295
2296
2297 return liste
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2316 """
2317 Methode, die die Liste der Tabellenwerte für C{prj.zeige__prtprotokolltabellen -> Strukturpunkte} zurückgibt, die in C{gibSQLSelect(... , tabellen )} verwendet werden kann.
2318
2319 @param sqlJOIN: Es kann eine JOIN-Anweisung angegeben werden. Darf auch C{None} sein.
2320 @type sqlJOIN: Zeichenkette
2321
2322 @param sqlWHERE: Es kann eine WHERE-Anweisung angegeben werden. Darf auch C{None} sein.
2323 @type sqlWHERE: Zeichenkette
2324
2325 @return: Es wird die Python-Liste für C{gibSQLSelect(... , tebellen )} zurückgegeben.
2326 @rtype: Python-Liste
2327 """
2328
2329
2330
2331
2332 liste = []
2333 liste.append( "prj.zeige__prtprotokolltabellen" )
2334
2335
2336
2337
2338
2339
2340 liste.append( "prj.zeige__prtprotokolltabellen.prj__p_prtstrstrkt__prj_projekte_id" )
2341
2342
2343
2344
2345
2346 liste.append( None )
2347
2348
2349
2350
2351
2352 liste.append( sqlJOIN )
2353
2354
2355
2356
2357
2358 liste.append( sqlWHERE )
2359
2360
2361
2362
2363
2364 return liste
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2378 """
2379 Methode, die die Liste der Tabellenwerte für C{prj.zeige__strstrkt} zurückgibt, die in C{gibSQLSelect(... , tabellen )} verwendet werden kann.
2380
2381 @param sqlJOIN: Es kann eine JOIN-Anweisung angegeben werden. Darf auch C{None} sein.
2382 @type sqlJOIN: Zeichenkette
2383
2384 @param sqlWHERE: Es kann eine WHERE-Anweisung angegeben werden. Darf auch C{None} sein.
2385 @type sqlWHERE: Zeichenkette
2386
2387 @return: Es wird die Python-Liste für C{gibSQLSelect(... , tebellen )} zurückgegeben.
2388 @rtype: Python-Liste
2389 """
2390
2391
2392
2393
2394 liste = []
2395 liste.append( "prj.zeige__strstrkt" )
2396
2397
2398
2399
2400
2401
2402 liste.append( "prj.zeige__strstrkt.prj_projekte_id" )
2403
2404
2405
2406
2407
2408 liste.append( None )
2409
2410
2411
2412
2413
2414 liste.append( sqlJOIN )
2415
2416
2417
2418
2419
2420 liste.append( sqlWHERE )
2421
2422
2423
2424
2425
2426 return liste
2427
2428
2429
2430
2431
2432
2433
2434
2436 """
2437 Methode zur Initialisierung der Auswahlliste (C{wxComboBox}), die die in der Datenbank verfügbaren Firmen aufnimmt (darstellt).
2438 Sie wird nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2439
2440 @note: Die übergebene Auswahlliste (C{wxComboBox}) wird verändert !
2441
2442 @param wxComboBox: Es ist die Auswahlliste zu übergeben, die die Firmen aufnimmt.
2443 @type wxComboBox: wxPython - ComboBox
2444 """
2445
2446
2447
2448
2449 self.__dbAbfrage__( """
2450 SELECT
2451 intern.gib__sqlSELECT( 'name
2452 , id'
2453 , ARRAY['intern.firma']
2454 , ' AND id > 0' )""" )
2455
2456 self.__initWxControlWithItems__( str( self.__gibWert__( 0, 0 ) )
2457 , [u"-- Alle Firmen --", [0]]
2458 , wxComboBox )
2459
2460 wxComboBox.SetSelection( 0 )
2461
2462
2463
2464
2465
2466
2467
2468
2469
2471 """
2472 Methode zur Initialisierung der Auswahlliste (C{wxListBox}), die die in der Datenbank verfügbaren Personen aufnimmt (darstellt).
2473 Sie wird nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2474
2475 @note: Die übergebene Auswahlliste (C{wxListBox}) wird verändert !
2476
2477 @param wxListBox: Es ist die Auswahlliste zu übergeben, die die Personen aufnimmt.
2478 @type wxListBox: wxPython - ComboBox
2479 """
2480
2481
2482
2483
2484
2485
2486 self.__dbAbfrage__( """
2487 SELECT
2488 intern.gib__sqlSELECT( 'name_n || '', '' || name_v, id'
2489 , ARRAY['prj.personen']
2490 , 'AND id > 0
2491 ORDER BY
2492 name_n
2493 , name_v' )""" )
2494
2495 self.__initWxControlWithItems__( str( self.__gibWert__( 0, 0 ) ), [], wxListBox )
2496
2497
2498
2499
2500
2501
2502
2503
2504
2506 """
2507 Methode zur Initialisierung der Auswahlliste (C{wxComboBox}), welche die in der Datenbank verfügbaren Projekte aufnimmt (darstellt).
2508 Sie wird nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2509 Es ist momentan nicht sinnvoll, die projektübergreifend gültigen Werte anzuzeigen.
2510
2511 @note: Die übergebene Auswahlliste (C{wxComboBox}) wird verändert !
2512
2513 @param wxComboBox: Es ist die Auswahlliste zu übergeben, die die Projekte aufnimmt.
2514 @type wxComboBox: wxPython - ComboBox
2515 """
2516
2517
2518
2519
2520
2521 self.__dbAbfrage__( """
2522 SELECT
2523 intern.gib__sqlSELECT( 'prjname
2524 , id'
2525 , ARRAY['prj.projekte']
2526 , 'AND id > 0 AND prjname NOT LIKE ''DBDokumentation''' )""" )
2527
2528 self.__initWxControlWithItems__( str( self.__gibWert__( 0, 0 ) )
2529
2530
2531
2532 , []
2533 , wxComboBox )
2534
2535 wxComboBox.SetSelection( 0 )
2536
2537
2538
2539
2540
2541
2542
2543
2544 - def init_prtTyp( self, wxControlWithItems, sprSprachenId, prtTypAspekt, hatAlle = False ):
2545 """
2546 Methode zur Initialisierung der Auswahlliste (C{wxControlWithItems}), welche die in der Datenbank verfügbaren Typen der Protokolleinträge / Sicherheitsanforderungen / Terminplaneinträge darstellt.
2547 Die Typen werden in Abhängigkeit vom aktuell übergebenen Aspekt (Protokolleintrag, Sicherheitsanforderung, Terminplaneintrag) ausgelesen.
2548 Sie werden nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2549
2550 @note: Die übergebene Auswahlliste (C{wxControlWithItems}) wird verändert !
2551
2552 @param wxControlWithItems: Es ist die Auswahlliste zu übergeben, die die Wertepaare aufnimmt.
2553 @type wxControlWithItems: wxPython - wxControlWithItems
2554
2555 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
2556 @type sprSprachenId: Ganzzahl
2557
2558 @param prtTypAspekt: Es ist der Aspekt (Protokolleintrag, Sicherheitsanforderung, Terminplaneintrag) anzugeben.
2559 @type prtTypAspekt: Zeichenkette
2560
2561 @param hatAlle: Es ist C{True} anzugeben, wenn der Eintrag C{-- Alle Typen der Sicherheitsanforderungen --} hinzugefügt werden soll
2562 @type hatAlle: Booean
2563 """
2564
2565
2566
2567
2568
2569 alleTxt = []
2570 if( hatAlle ) : alleTxt = [u"-- Alle Typen --", [0]]
2571
2572 self.__initWxControlWithItems__( """
2573 SELECT DISTINCT
2574 COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS typ
2575 , prt.typ.id
2576 FROM
2577 prt.typ LEFT OUTER JOIN spr.zeige__wgruppe ON (
2578 prt.typ.spr_uebvar_id = spr.zeige__wgruppe.spr_uebvar_id
2579 AND
2580 -- Sprache Auswählen
2581 spr.zeige__wgruppe.spr_sprachen_id = """ + str( sprSprachenId ) + """ )
2582 WHERE
2583 -- Aspekt des Typs auswählen
2584 prt.typ.aspekt = '""" + prtTypAspekt + """'
2585 ;"""
2586 , alleTxt
2587 , wxControlWithItems )
2588
2589 wxControlWithItems.selektiereWert( 0 )
2590
2591
2592
2593
2594
2595
2596
2597 - def init_psAbk( self, LBGefPersonen, CBHaeufig, CBGefStufe, TCASRisikoStufe, prjProjekteId, sprSprachenId ):
2598 """
2599 Methode zur Initialisierung der Auswahllisten 'Gefährdete Personen', 'Häufigkeit' und 'Gefahrenstufe'.
2600 Die Wertepaare werden in Abhängigkeit vom aktuell übergebenen Typ, Projekt und der aktuell übergebenen Sprache ausgelesen.
2601 Sie werden nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2602
2603 @note: Die übergebenen Auswahllisten werden verändert !
2604
2605 @param LBGefPersonen: Es ist die Auswahlliste zu übergeben, die die gefährdeten Personen aufnimmt.
2606 @type LBGefPersonen: wxPython - wxListBox
2607 @param CBHaeufig: Es ist die Auswahlliste zu übergeben, die die Häufigkeit aufnimmt.
2608 @type CBHaeufig: wxPython - wxComboBox
2609 @param CBGefStufe: Es ist die Auswahlliste zu übergeben, die die Gefahrenstufe aufnimmt.
2610 @type CBGefStufe: wxPython - wxComboBox
2611 @param TCASRisikoStufe: Es ist die Auswahlliste zu übergeben, die die Risikostufen aufnimmt.
2612 @type TCASRisikoStufe: TextCtrlAuswStatisch
2613 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
2614 @type prjProjekteId: Ganzzahl
2615 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
2616 @type sprSprachenId: Ganzzahl
2617 """
2618
2619
2620
2621
2622
2623
2624 self.__dbAbfrage__( """
2625 SELECT DISTINCT
2626 -- 0
2627 COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS abkuerzung
2628 , prj.zeige__psabk.ps__abk__id
2629 -- 2
2630 , prj.zeige__psabk.ps__abk__typ
2631 FROM
2632 prj.zeige__psabk LEFT OUTER JOIN spr.zeige__wgruppe ON (
2633 prj.zeige__psabk.prj__p_psabk__spr_uebvar_id = spr.zeige__wgruppe.spr_uebvar_id
2634 AND
2635 --
2636 -- Sprache Auswählen
2637 --
2638 spr.zeige__wgruppe.spr_sprachen_id = """ + str( sprSprachenId ) + """ )
2639 WHERE
2640 --
2641 -- nur die gültigen Abkürzungen zeigen
2642 --
2643 prj.zeige__psabk.ps__abk__id > 0
2644 AND
2645 --
2646 -- Projekt auswählen
2647 --
2648 prj.zeige__psabk.prj__p_psabk__prj_projekte_id = """ + str( prjProjekteId ) + """
2649 ;""" )
2650
2651
2652
2653
2654
2655
2656 clientData = [0]
2657
2658 LBGefPersonen.loescheAlles()
2659
2660 CBHaeufig.loescheAlles()
2661 CBHaeufig.Append( "---", clientData )
2662
2663 CBGefStufe.loescheAlles()
2664 CBGefStufe.Append( "---", clientData )
2665
2666 TCASRisikoStufe.loescheAlles()
2667 TCASRisikoStufe.nimmWert( wert = "---", clientData = clientData )
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679 for i in range( self.__gibAnzZeilen__() ):
2680 typ = self.__gibWert__( i, 2 )
2681 clientData = []
2682
2683
2684
2685
2686 if typ == 'GP':
2687 clientData.append( self.__gibWert__( i, 1 ) )
2688 LBGefPersonen.nimmWert( wert = self.__gibWert__( i, 0 ), clientData = clientData )
2689 continue
2690
2691
2692
2693
2694 if typ == 'RH':
2695 clientData.append( self.__gibWert__( i, 1 ) )
2696 CBHaeufig.nimmWert( wert = self.__gibWert__( i, 0 ), clientData = clientData )
2697 continue
2698
2699
2700
2701
2702 if typ == 'RG':
2703 clientData.append( self.__gibWert__( i, 1 ) )
2704 CBGefStufe.nimmWert( wert = self.__gibWert__( i, 0 ), clientData = clientData )
2705 continue
2706
2707
2708
2709
2710 if typ == 'RR':
2711 clientData.append( self.__gibWert__( i, 1 ) )
2712 TCASRisikoStufe.nimmWert( wert = self.__gibWert__( i, 0 )
2713 , clientData = clientData )
2714 continue
2715
2716
2717
2718
2719
2720
2721
2722
2723
2725 """
2726 Methode zur Initialisierung der Auswahlliste (C{wxListBox}), die die Gefahrenszenario-Id gültig im aktuell übergebenen Projekt aufnimmt (darstellt).
2727
2728 @note: Die übergebene Auswahlliste (C{wxListBox}) wird verändert !
2729
2730 @param wxListBox: Es ist die Auswahlliste zu übergeben, die die Gefahrenszenario-Id aufnimmt.
2731 @type wxListBox: wxPython - ListBox
2732 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
2733 @type prjProjekteId: Ganzzahl
2734 """
2735
2736
2737
2738
2739
2740 self.__initWxControlWithItems__( """
2741 SELECT DISTINCT
2742 prj.zeige__pp_psgefszenario.ps_gefszenario_id
2743 FROM
2744 prj.zeige__pp_psgefszenario
2745 WHERE
2746 --
2747 -- Projekt auswählen
2748 --
2749 prj.zeige__pp_psgefszenario.prj_projekte_id = """ + str( prjProjekteId ) + """
2750 AND
2751 --
2752 -- gültige Datensätze anzeigen
2753 --
2754 prj.zeige__pp_psgefszenario.ps_gefszenario_id > 0
2755 ORDER BY
2756 prj.zeige__pp_psgefszenario.ps_gefszenario_id
2757 ;"""
2758 , []
2759 , wxListBox )
2760
2761 wxListBox.SetSelection( 0 )
2762
2763
2764
2765
2766
2767
2768
2769
2770
2772 """
2773 Methode zur Initialisierung der Auswahlliste (C{wxComboBox}), welche die in der Datenbank verfügbaren Sprachen aufnimmt (darstellt).
2774 Sie wird nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2775
2776 @note: Die übergebene Auswahlliste (C{wxComboBox}) wird verändert !
2777
2778 @param wxComboBox: Es ist die Auswahlliste zu übergeben, die die Sprachen aufnimmt.
2779 @type wxComboBox: wxPython - ComboBox
2780 """
2781
2782
2783
2784
2785
2786 self.__dbAbfrage__( """
2787 SELECT
2788 intern.gib__sqlSELECT( 'sprache
2789 , id'
2790 , ARRAY['spr.sprachen']
2791 , 'AND id > 0' )""" )
2792
2793 self.__initWxControlWithItems__( str( self.__gibWert__( 0, 0 ) ), [], wxComboBox )
2794
2795 wxComboBox.SetSelection( 0 )
2796
2797
2798
2799
2800
2801
2802
2803
2804
2806 """
2807 Methode zur Initialisierung der Auswahlliste (C{wxListBox}), welche die in der Datenbank verfügbaren Übersetzungen zur gegebenenen Übersetzungsvariante C{sprUebvarId} aufnimmt (darstellt).
2808
2809 @note: Die übergebene Auswahlliste (C{wxListBox}) wird verändert !
2810
2811 @param wxListBox: Es ist die Auswahlliste zu übergeben, die die Strukturpunkte aufnimmt.
2812 @type wxListBox: wxPython - ListBox
2813
2814 @param sprUebvarId : Es ist die Id der Übersetzungsvariante C{spr.uebvar.id} zu übergeben.
2815 @type sprUebvarId : C{Ganzzahl}
2816 """
2817
2818
2819
2820
2821
2822
2823 self.__initWxControlWithItems__( """
2824 SELECT DISTINCT
2825 spr.zeige__wgruppe.wgruppe
2826 , spr_sprachen_id
2827 FROM
2828 spr.zeige__wgruppe
2829 WHERE
2830 spr.zeige__wgruppe.spr_uebvar_id = """ + str( sprUebvarId ) + """;"""
2831 , []
2832 , wxListBox )
2833
2834
2835
2836
2837
2838
2839
2840
2841
2843 """
2844 Methode zur Initialisierung der Auswahlliste (C{wxComboBox}), welche die in der Datenbank verfügbaren Strukturnamen aufnimmt (darstellt).
2845 Sie werden nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2846
2847 @note: Die übergebene Auswahlliste (C{wxComboBox}) wird verändert !
2848
2849 @param wxComboBox: Es ist die Auswahlliste zu übergeben, die die Strukturnamen aufnimmt.
2850 @type wxComboBox: wxPython - ComboBox
2851 """
2852
2853
2854
2855
2856
2857 self.__dbAbfrage__( """
2858 SELECT
2859 intern.gib__sqlSELECT( 'name
2860 , id'
2861 , ARRAY['str.name']
2862 , 'AND id > 0' )""" )
2863
2864 self.__initWxControlWithItems__( str( self.__gibWert__( 0, 0 ) ), [], wxComboBox )
2865
2866 wxComboBox.SetSelection( 0 )
2867
2868
2869
2870
2871
2872
2873
2874
2875
2877 """
2878 Methode zur Initialisierung der Auswahlliste (C{wxComboBox}), die die in der Datenbank verfügbaren Strukturbezeichnungen aufnimmt (darstellt).
2879 Sie wird nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2880
2881 @note: Die übergebene Auswahlliste (C{wxComboBox}) wird verändert !
2882
2883 @param wxComboBox: Es ist die Auswahlliste zu übergeben, die die Strukturbezeichnungen aufnimmt.
2884 @type wxComboBox: wxPython - ComboBox
2885 """
2886
2887
2888
2889
2890 self.__dbAbfrage__( """
2891 SELECT
2892 intern.gib__sqlSELECT( 'name_k || '' | '' || name
2893 , id'
2894 , ARRAY['str.name']
2895 , ' AND id > 0 AND id <> 2' )""" )
2896
2897 self.__initWxControlWithItems__( str( self.__gibWert__( 0, 0 ) )
2898 , [u"-- Alle Strukturen --", [0]]
2899 , wxComboBox )
2900
2901 wxComboBox.SetSelection( 0 )
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911 - def init_strStrkt( self, wxListBox, prjProjekteId, sprSprachenId, strNameId ):
2912 """
2913 Methode zur Initialisierung der Auswahlliste (C{wxListBox}), welche die Strukturpunkte gültig im aktuell übergebenen Projekt, dargestellt in der aktuell übergebenen Sprache zur aktuell übergebenen Struktur aufnimmt (darstellt).
2914 Sie wird nicht im Rahmen der Bearbeitung der Risikoanalyse, des Gefahrenprotokolls oder des Terminplans vom Benutzer verändert.
2915
2916 @note: Die übergebene Auswahlliste (C{wxListBox}) wird verändert !
2917
2918 @param wxListBox: Es ist die Auswahlliste zu übergeben, die die Strukturpunkte aufnimmt.
2919 @type wxListBox: wxPython - ListBox
2920
2921 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
2922 @type prjProjekteId: Ganzzahl
2923
2924 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
2925 @type sprSprachenId: Ganzzahl
2926
2927 @param strNameId: Es ist die Datenbankidentifikationsnummer (C{str.name.id}) der Strukturbezeichnung zu übergeben.
2928 @type strNameId: Ganzzahl
2929 """
2930
2931
2932
2933
2934
2935 self.__initWxControlWithItems__( """
2936 SELECT DISTINCT
2937 str__strkt__nr || ' '
2938 || COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS strukturpunkt
2939 , str__strkt__id
2940 FROM
2941 prj.zeige__strstrkt LEFT OUTER JOIN spr.zeige__wgruppe ON (
2942 prj.zeige__strstrkt.prj__pp_strstrkt__spr_uebvar_id = spr.zeige__wgruppe.spr_uebvar_id
2943 AND
2944 --
2945 -- Sprache Auswählen
2946 --
2947 spr.zeige__wgruppe.spr_sprachen_id = """ + str( sprSprachenId ) + """ )
2948 WHERE
2949 --
2950 -- Strukturnamen auswählen
2951 --
2952 str__name__id = """ + str( strNameId ) + """
2953 AND
2954 --
2955 -- Projekt auswählen
2956 --
2957 prj_projekte_id = """ + str( prjProjekteId ) + """
2958 ORDER BY
2959 str__strkt__id
2960 ;"""
2961 , []
2962 , wxListBox )
2963
2964
2965
2966
2967
2968
2969
2970
2971
2973 """
2974 Es wird C{True} zurückgegeben, wenn der Wert C{dbId}, der in C{zielSpalte} enthalten ist, in mindestens zwei Tabellen der Datenbank verwendet (referenziert) wird.
2975
2976 @param zielSpalte: Es ist der vollständige Datenbankspaltenname anzugeben, auf den mittels Fremdschlüssel verwiesen wird.
2977 @type zielSpalte: Zeichenkette
2978
2979 @param dbId: Es ist die Datenbankidentifikationsnummer anzugeben, die überprüft werden soll.
2980 @type dbId: Ganzzahl
2981
2982 @return: Es wird C{True} zurückgegeben, wenn C{dbId} in mindestens zwei Tabellen verwendet wird.
2983 @rtype: Ganzzahl
2984 """
2985
2986
2987
2988
2989 liste = None
2990
2991 if( zielSpalte == 'spr.uebvar.id' ) : liste = self.listeTabellenSprUebvarId
2992
2993 if( liste is None ) : return False
2994
2995
2996
2997
2998
2999 anzVerwendet = 0
3000 for i in range( len( liste ) ) :
3001
3002 self.__dbAbfrage__( """
3003 --
3004 -- Anzahl der Zeilen in der akt. Tabelle zählen, die >dbId< verwenden
3005 --
3006 SELECT
3007 count( """ + liste[i][1] + """ )
3008 FROM
3009 """ + liste[i][0] + """
3010 WHERE
3011 idfrei = 0
3012 AND
3013 """ + liste[i][1] + """ = """ + str( dbId ) + """
3014 ;""" )
3015
3016 anzVerwendet += self.__gibWert__( 0, 0 )
3017
3018 if( anzVerwendet > 1 ) : return True
3019
3020
3021
3022
3023
3024
3025 return False
3026
3027
3028
3029
3030
3031
3032
3033
3034
3036 """
3037 Es werden alle Änderungen in die Datenbank geschrieben, die laufende Transaktion beendet und eine neue Transaktion gestartet.
3038 """
3039
3040
3041
3042
3043 self.dbVerbindung.commit()
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3055 """
3056 Methode zum Übernehmen der Änderungen, welche seit dem Setzen eines C{PostgreSQL - Safepoints} durchgeführt wurden. Mittels C{Safepoint} können Teile einer Transaktion gespeichert oder verworfen werden.
3057
3058 @param name: Es ist der Name des C{Safepoints} anzugeben.
3059 @type name: Zeichenkette
3060 """
3061
3062
3063
3064
3065 self.__dbAbfrage__( 'RELEASE SAVEPOINT ' + name + ';' )
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077 - def schreibe__Dokumente( self, TreeCtrlErg, prjProjekteId, sprSprachenId, nimmAusgabe = False, psGefszenarioId = None ):
3078 """
3079 Übernehmen der Strukturpunkte, die den im C{TreeCtrlErg} selektierten Sicherheitsanforderungen C{prt.protokoll.id} zugeordnet sind, in das Projekt C{prjProjekteId}.
3080
3081 @param TreeCtrlErg: Es ist die Baumstruktur zu übergeben, die die selektierten Sicherheitsanforderungen enthält.
3082 @type TreeCtrlErg: TreeCtrlErg
3083
3084 @param prjProjekteId : Es ist die Projekt-Id C{prj.projekte.id} zu übergeben.
3085 @type prjProjekteId : C{Ganzzahl}
3086
3087 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
3088 @type sprSprachenId: Ganzzahl
3089
3090 @param nimmAusgabe: Es ist C{True} anzugeben, wenn die Ausgabe zum Dokument übernommen werden soll.
3091 @type nimmAusgabe: Boolean
3092
3093 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben, wenn die Dokumente von der Sicherheitsanforderung gelöst werden sollen. Sonst ist C{None} anzugeben.
3094 @type psGefszenarioId: Ganzzahl
3095 """
3096
3097
3098
3099
3100
3101 eintragListe = TreeCtrlErg.gibZweig()
3102 prtProtokollIdListe = ""
3103
3104 for i in range( len( eintragListe ) ) :
3105
3106 if( i > 0 ) : prtProtokollIdListe = prtProtokollIdListe + ', '
3107 prtProtokollIdListe = prtProtokollIdListe + str( TreeCtrlErg.gibDbId( eintragListe[i] ) )
3108
3109
3110
3111
3112
3113
3114
3115 logentfernt = False
3116 nichtTrennen = []
3117
3118 if( psGefszenarioId is not None ) :
3119
3120 logentfernt = True
3121
3122 self.__dbAbfrage__( self.gibSQLSelect(
3123 select = """
3124 SELECT DISTINCT
3125 prt_protokoll_id"""
3126 , tabellen = [ self.gibSQLSelect__PlPrtPsGefszenario( sqlJOIN = None
3127 , sqlWHERE = """
3128 AND
3129 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id IN( """ + str( prtProtokollIdListe ) + """ )
3130 AND
3131 prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id != """ + str( psGefszenarioId ) + """
3132 AND
3133 prj.zeige__pl_prtpsgefszenario.prj_projekte_id = """ + str( prjProjekteId ) ) ] ) )
3134
3135 for i in range( self.__gibAnzZeilen__() ):
3136
3137 nichtTrennen.append( self.__gibWert__( i, 0 ) )
3138
3139
3140
3141
3142
3143
3144 prjProjekteIdintern = None
3145
3146 if( logentfernt ) : prjProjekteIdintern = prjProjekteId
3147
3148 self.__dbAbfrage__( self.gibSQL_prjPrtDoku( prjProjekteId = prjProjekteIdintern
3149 , sprSprachenId = sprSprachenId
3150 , prtProtokollId = prtProtokollIdListe
3151 , psGefszenarioId = None
3152 , internFirmaId = None ) )
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184 werte = []
3185 plPrtDokdoku = []
3186 plDokAusgabe = []
3187 for i in range( self.__gibAnzZeilen__() ):
3188
3189 werte.append( [ self.__gibWert__( i, 0 )
3190 , self.__gibWert__( i, 13 ) ] )
3191
3192 plPrtDokdoku.append( [ self.__gibWert__( i, 2 )
3193 , self.__gibWert__( i, 10 )
3194 , self.__gibWert__( i, 11 )
3195 , self.__gibWert__( i, 4 ) ] )
3196
3197
3198 if( not nimmAusgabe ) : continue
3199
3200 plDokAusgabe.append( [ self.__gibWert__( i, 5 )
3201 , self.__gibWert__( i, 6 )
3202 , self.__gibWert__( i, 12 )
3203 , self.__gibWert__( i, 7 ) ] )
3204
3205
3206
3207
3208
3209 for i in range( len( werte ) ) :
3210
3211 if( werte[i][1] in nichtTrennen ) : continue
3212
3213 plDokAusgabeIntern = None
3214
3215 if( nimmAusgabe and len( plDokAusgabe[i][0] ) > 0 ) : plDokAusgabeIntern = plDokAusgabe[i]
3216
3217 self.schreibe__prjPrtDoku( prjProjekteId = prjProjekteId
3218 , prtProtokollId = werte[i][1]
3219 , dokDokuId = werte[i][0]
3220 , plPrtDokdoku = plPrtDokdoku[i]
3221 , plDokAusgabe = plDokAusgabeIntern
3222 , logentfernt = logentfernt )
3223
3224
3225
3226
3227
3228
3229
3230
3231
3233 """
3234 Methode zum Einfügen / Aktualisieren projektspezifischer Informationen in die / der Datenbanktabelle C{prj.pp_strstrkt}.
3235
3236 @param prjProjekteId : Es ist die Projekt-Id C{prj.projekte.id} zu übergeben.
3237 @type prjProjekteId : C{Ganzzahl}
3238
3239 @param strStrktId : Es ist die Struktur-Id C{str.strkt.id} zu übergeben.
3240 @type strStrktId : C{Ganzzahl}
3241
3242 @param prjPersonenId : Es ist die Personen-Id C{prj.personen.id} zu übergeben.
3243 @type prjPersonenId : C{Ganzzahl}
3244
3245 @param sprUebvarId : Es ist die Id der Übersetzungsvariante C{spr.uebvar.id} zu übergeben.
3246 @type sprUebvarId : C{Ganzzahl}
3247
3248 @param fbereignis : Es ist das Fehlerbaumereignis zu übergeben
3249 @type fbereignis : C{Zeichenkette}
3250
3251 @param notizen : Es sind die Notizen zu übergeben.
3252 @type notizen : C{Zeichenkette}
3253 """
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272 self.__dbAbfrage__( """
3273 SELECT prj.nimm__tabwerte( 'pp_strstrkt', ARRAY["""
3274
3275
3276
3277 + "'" + str( prjProjekteId ) + "'"
3278
3279
3280
3281 + ", '" + str( strStrktId ) + "'"
3282
3283
3284
3285 + ", '" + str( prjPersonenId ) + "'"
3286
3287
3288
3289 + ", '" + str( sprUebvarId ) + "']);" )
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3310 """
3311 Übernehmen der Strukturpunkte, die den im C{TreeCtrlErg} selektierten Sicherheitsanforderungen C{prt.protokoll.id} zugeordnet sind, in das Projekt C{prjProjekteId}.
3312
3313 @param TreeCtrlErg: Es ist die Baumstruktur zu übergeben, die die selektierten Sicherheitsanforderungen enthält.
3314 @type TreeCtrlErg: TreeCtrlErg
3315
3316 @param prjProjekteId : Es ist die Projekt-Id C{prj.projekte.id} zu übergeben.
3317 @type prjProjekteId : C{Ganzzahl}
3318
3319 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
3320 @type sprSprachenId: Ganzzahl
3321
3322 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben, wenn die Strukturpunkte von der Sicherheitsanforderung gelöst werden sollen. Sonst ist C{None} anzugeben.
3323 @type psGefszenarioId: Ganzzahl
3324 """
3325
3326
3327
3328
3329 siAnfEntfernen = ( psGefszenarioId is not None )
3330
3331
3332
3333
3334
3335
3336
3337 eintragListe = TreeCtrlErg.gibZweig()
3338 prtProtokollIdListe = ""
3339
3340 for i in range( len( eintragListe ) ) :
3341
3342 if( i > 0 ) : prtProtokollIdListe = prtProtokollIdListe + ', '
3343 prtProtokollIdListe = prtProtokollIdListe + str( TreeCtrlErg.gibDbId( eintragListe[i] ) )
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370 select = """
3371 SELECT DISTINCT
3372 -- 0
3373 prj.zeige__strstrkt.str__strkt__id
3374 , nachfok.str__strkt__id AS str_strkt_id__vorg
3375 -- 2
3376 , prj.zeige__prtprotokolltabellen.prt__protokoll__id
3377 , prj.zeige__strstrkt.prj__pp_strstrkt__prj_personen_id
3378 -- 4
3379 , prj.zeige__strstrkt.prj__pp_strstrkt__spr_uebvar_id"""
3380
3381 tabellen = [
3382 self.gibSQLSelect__StrStrkt(
3383 sqlJOIN = """
3384 --
3385 -- aktueller Strukturpunkt ist ein gültiger Nachfolger
3386 --
3387 LEFT OUTER JOIN prj.zeige__strstrkt AS nachfok ON (
3388 nachfok.prj__p_strverbindung__str_strkt_id_nachf =
3389 prj.zeige__strstrkt.str__strkt__id
3390 AND
3391 nachfok.prj_projekte_id = prj.zeige__strstrkt.prj_projekte_id
3392 )"""
3393 , sqlWHERE = """
3394 --
3395 -- -- Gefahrennetz nicht anzeigen ----------------------------------
3396 --
3397 prj.zeige__strstrkt.str__name__id != 2""" )
3398 , self.gibSQLSelect__PrtProtokolltabellenStrStrkt(
3399 sqlJOIN = None
3400 , sqlWHERE = """
3401 AND
3402 --
3403 -- -- Strukturpunkt zuordnen ------------------------------------------
3404 --
3405 prj.zeige__prtprotokolltabellen.prj__p_prtstrstrkt__str_strkt_id =
3406 prj.zeige__strstrkt.str__strkt__id""" ) ]
3407
3408 sqlWHERE = """
3409 AND
3410 --
3411 -- -- Protokoll auswählen / zuordnen ----------------------------------
3412 --
3413 prj.zeige__prtprotokolltabellen.prt__protokoll__id IN( """ + str( prtProtokollIdListe ) + """ )"""
3414
3415 prjProjekteIdintern = prjProjekteId
3416
3417
3418
3419
3420
3421
3422 if( siAnfEntfernen ) :
3423
3424 select = select + ( """
3425 , ( ( prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id = """
3426 + str( psGefszenarioId )
3427 + """ AND prj.zeige__prtprotokolltabellen.prt__protokoll__id NOT IN( """
3428 + str( prtProtokollIdListe )
3429 + """ ) ) OR ( prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id != """
3430 + str( psGefszenarioId )
3431 + """ ) ) AS nicht_entfernen""" )
3432
3433 tabellen.append( self.gibSQLSelect__PlPrtPsGefszenario( sqlJOIN = None
3434 , sqlWHERE = """
3435 AND
3436 --
3437 -- -- Protokollpunkt zuordnen ------------------------------------------
3438 --
3439 prj.zeige__prtprotokolltabellen.prt__protokoll__id =
3440 prj.zeige__pl_prtpsgefszenario.prt_protokoll_id
3441 AND
3442 prj.zeige__pl_prtpsgefszenario.prj_projekte_id = """ + str( prjProjekteId ) + """
3443 ORDER BY
3444 nicht_entfernen""" ) )
3445
3446 sqlWHERE = None
3447
3448 prjProjekteIdintern = 0
3449
3450
3451
3452
3453
3454
3455 self.__dbAbfrage__( self.gibSQLSelect( select = select, tabellen = tabellen, sqlWHERE = sqlWHERE ) )
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469 werte = []
3470 nichtEntfernen = []
3471
3472 for i in range( self.__gibAnzZeilen__() ):
3473
3474 werte.append( [ self.__gibWert__( i, 0 )
3475 , self.__gibWert__( i, 1 )
3476 , self.__gibWert__( i, 2 )
3477 , self.__gibWert__( i, 3 )
3478 , self.__gibWert__( i, 4 ) ] )
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489 if( siAnfEntfernen and self.__gibWert__( i, 5 ) == True ) :
3490
3491 nichtEntfernen.append( werte[i][0] )
3492 nichtEntfernen.append( werte[i][1] )
3493
3494
3495
3496
3497
3498
3499 for i in range( len( werte ) ) :
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509 if( werte[i][0] in nichtEntfernen ) : continue
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519 self.schreibe__PrjPpStrstrkt( prjProjekteId = prjProjekteIdintern
3520 , strStrktId = werte[i][0]
3521 , prjPersonenId = werte[i][3]
3522 , sprUebvarId = werte[i][4]
3523 , fbereignis = ""
3524 , notizen = "" )
3525
3526
3527
3528
3529
3530 if( siAnfEntfernen ) :
3531
3532 self.__dbAbfrage__( """
3533 SELECT intern.loesche__zeile( 'prj.pp_strstrkt'
3534 , 'prj_personen_id = """ + str( werte[i][3] ) + """
3535 AND prj_projekte_id = """ + str( prjProjekteId ) + """
3536 AND str_strkt_id = """ + str( werte[i][0] ) + """'
3537 , 'true');""" )
3538
3539
3540
3541
3542
3543
3544
3545 if( werte[i][1] != '' ):
3546
3547 self.schreibe__prjPStrverbindung( prjProjekteId = prjProjekteIdintern
3548 , strStrktIdVorg = werte[i][1]
3549 , strStrktIdNachf = werte[i][0]
3550 , fbtor = ""
3551 , notizen = "" )
3552
3553
3554
3555
3556
3557
3558 if( siAnfEntfernen ) :
3559
3560 self.__dbAbfrage__( """
3561 SELECT intern.loesche__zeile( 'prj.p_strverbindung'
3562 , 'prj_projekte_id = """ + str( prjProjekteId ) + """
3563 AND str_strkt_id_nachf = """ + str( werte[i][0] ) + """
3564 AND str_strkt_id_vorg = """ + str( werte[i][1] ) + """'
3565 , 'true');""" )
3566
3567
3568
3569
3570
3571
3572
3573 self.schreibe__psPrtStrkt( prjProjekteId = prjProjekteIdintern
3574 , prtProtokollId = werte[i][3]
3575 , strStrktId = werte[i][0]
3576 , notizen = '' )
3577
3578
3579
3580
3581
3582 if( siAnfEntfernen ) :
3583
3584 self.__dbAbfrage__( """
3585 SELECT intern.loesche__zeile( 'prj.p_prtstrstrkt'
3586 , 'prj_projekte_id = """ + str( prjProjekteId ) + """
3587 AND prt_protokoll_id = """ + str( werte[i][3] ) + """
3588 AND str_strkt_id = """ + str( werte[i][0] ) + """'
3589 , 'true');""" )
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599 - def schreibe__prjPrtDoku( self, prjProjekteId, prtProtokollId, dokDokuId, plPrtDokdoku, plDokAusgabe, logentfernt = 'false' ):
3600 """
3601 Methode zum Herstellen der projektspezifischen Verbindung zwischen Protokolleintrag und Dokument.
3602
3603 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
3604 @type prjProjekteId: Ganzzahl
3605
3606 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
3607 @type prtProtokollId: Ganzzahl
3608
3609 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
3610 @type prtProtokollId: Ganzzahl
3611
3612 @param dokDokuId: Es ist die Datenbankidentifikationsnummer (C{dok.doku.id}) des aktuellen Dokumentes zu übergeben, welches dem Protokolleintrag zugeordnet werden soll.
3613 @type dokDokuId: Ganzzahl
3614
3615 @param plPrtDokdoku: Es sind die Detailwerte zum Dokument (C{dok.doku.id}) zu übergeben: C{nr, spr_uebvar_id, spr_uebvar_id_zus, notizen}
3616 @type plPrtDokdoku: Liste
3617
3618 @param plDokAusgabe: Es sind die Detailwerte zur aktuellen Ausgabe des Dokumentes (C{dok.doku.id}) zu übergeben: C{stand, datum, istfrei, notizen}
3619 @type plDokAusgabe: Liste
3620
3621 @param logentfernt: Wird C{true} angegeben, soll die Verbindung zwischen Sicherheitsanfordeurng und Dokument gelöst werden
3622 @type logentfernt: Zeichenkette, die C{true/false} enthält
3623 """
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644 self.__dbAbfrage__( """
3645 SELECT prj.nimm__tabwerte( 'pl_prtdokdoku', ARRAY["""
3646
3647
3648
3649 + "'" + str( prjProjekteId ) + "'"
3650
3651
3652
3653 + ", '" + str( dokDokuId ) + "'"
3654
3655
3656
3657 + ", '" + str( prtProtokollId ) + "'"
3658
3659
3660
3661 + ", '" + str( plPrtDokdoku[0] ) + "'"
3662
3663
3664
3665 + ", '" + str( plPrtDokdoku[1] ) + "'"
3666
3667
3668
3669 + ", '" + str( logentfernt ) + "'"
3670
3671
3672
3673 + ", '" + str( plPrtDokdoku[2] ) + "'"
3674
3675
3676
3677 + ", '" + str( plPrtDokdoku[3] ) + "']);" )
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699 werte = []
3700 self.__dbAbfrage__( """
3701 --
3702 -- Zugeordnete Personen auslesen
3703 --
3704 SELECT DISTINCT
3705 -- 0
3706 prj__ppl_dokdoku__prj_personen_id AS prj_personen_id
3707 , prj__ppl_dokdoku__notizen AS notizen
3708 FROM
3709 prj.zeige__ppl_dokdoku_le
3710 , prj.zeige__dokdoku
3711 WHERE
3712 --
3713 -- Ausschließlich die letzten (aktuellen) Personenzuordnungen anzeigen, ...
3714 --
3715 prj.zeige__ppl_dokdoku_le.prj__ppl_dokdoku__id =
3716 prj.zeige__dokdoku.prj__ppl_dokdoku__id
3717 AND
3718 --
3719 -- ... die nicht entfernt wurden
3720 --
3721 prj.zeige__dokdoku.prj__ppl_dokdoku__logentfernt = false
3722 AND
3723 --
3724 -- Dokument festlegen
3725 --
3726 prj.zeige__dokdoku.dok__doku__id = """ + str( dokDokuId ) + """
3727 ;""" )
3728
3729 for i in range( self.__gibAnzZeilen__() ):
3730 werte.append( [ self.__gibWert__( i, 0 ), self.__gibWert__( i, 1 ) ] )
3731
3732 for i in range( len( werte ) ) :
3733 self.__dbAbfrage__( """
3734 SELECT prj.nimm__tabwerte( 'ppl_dokdoku', ARRAY["""
3735
3736
3737
3738 + "'" + str( prjProjekteId ) + "'"
3739
3740
3741
3742 + ", '" + str( dokDokuId ) + "'"
3743
3744
3745
3746 + ", '" + str( werte[i][0] ) + "'"
3747
3748
3749
3750 + ", '" + str( logentfernt ) + "'"
3751
3752
3753
3754 + ", '" + str( werte[i][1] ) + "']);" )
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780 if( plDokAusgabe is None ) : return
3781
3782 if( len( str( plDokAusgabe[2] ) ) > 0 ) :
3783
3784 self.__dbAbfrage__( """
3785 SELECT prj.nimm__tabwerte( 'pl_dokausgabe', ARRAY["""
3786
3787
3788
3789 + "'" + str( prjProjekteId ) + "'"
3790
3791
3792
3793 + ", '" + str( dokDokuId ) + "'"
3794
3795
3796
3797 + ", '" + str( logentfernt ) + "'"
3798
3799
3800
3801 + ", '" + str( plDokAusgabe[0] ) + "'"
3802
3803
3804
3805 + ", '" + str( plDokAusgabe[1] ) + "'"
3806
3807
3808
3809 + ", '" + str( plDokAusgabe[2] ) + "'"
3810
3811
3812
3813 + ", '" + str( plDokAusgabe[3] ) + "']);" )
3814
3815
3816
3817
3818
3819
3820
3821
3823 """
3824 Methode zum Herstellen der projektspezifischen Verbindung zwischen Protokolleintrag und Dokument.
3825
3826 @note: Die übergebene Auswahlliste (C{SiAnfStrktDok}) wird verändert !
3827
3828 @param listeWerte: Es sind die C{prt.protokoll.id} zu übergeben.
3829 @type listeWerte: Python - Liste
3830
3831 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
3832 @type prjProjekteId: Ganzzahl
3833
3834 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
3835 @type psGefszenarioId: Ganzzahl
3836
3837 @param logentfernt: Wird C{true} angegeben, soll die Verbindung zwischen Sicherheitsanfordeurng und Dokument gelöst werden
3838 @type logentfernt: Zeichenkette, die C{true/false} enthält
3839 """
3840
3841
3842
3843
3844
3845
3846 prtProtokollIdZugeordnet = []
3847
3848 if( logentfernt == 'false' ) :
3849
3850 self.__dbAbfrage__( self.gibSQL_prjPlPrtPsGefszenario( prjProjekteId = prjProjekteId
3851 , psGefszenarioId = psGefszenarioId ) )
3852
3853 for i in range( self.__gibAnzZeilen__() ):
3854
3855 prtProtokollIdZugeordnet.append( self.__gibWert__( i, 0 ) )
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875 for i in range( len( listeWerte ) ) :
3876
3877
3878
3879
3880
3881 if( listeWerte[i] in prtProtokollIdZugeordnet ) :
3882
3883 continue
3884
3885 self.__dbAbfrage__( """
3886 SELECT prj.nimm__tabwerte( 'pl_prtpsgefszenario', ARRAY["""
3887
3888
3889
3890 + "'" + str( prjProjekteId ) + "'"
3891
3892
3893
3894 + ", '" + str( psGefszenarioId ) + "'"
3895
3896
3897
3898 + ", '" + str( listeWerte[i] ) + "'"
3899
3900
3901
3902 + ", '" + zk.gibZk( "" ) + "'"
3903
3904
3905
3906 + ", '" + logentfernt + "']);" )
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917 - def schreibePrtProtokoll( self, wxCheckBoxIntern, wxCheckBoxErledigt, wxmskCtrlDatumPE, LBSpWTALBetPers, listeWerte, wxmskCtrlAntwDatum, wxmskCtrlTermin, LBSpWTALAntwPers, fallunterscheidung, prjProjekteId, sprSprachenId, prtProtokollId ):
3918 """
3919 Methode zum Einfügen / Aktualisieren der projektspezifischen Informationen in die Datenbanktabellen C{prt.protokoll / prj.pp_prtprotokoll}.
3920
3921 @param wxCheckBoxIntern: CheckBox zur Markierung 'Intern'
3922 @type wxCheckBoxIntern: wxPython - CheckBox
3923
3924 @param wxCheckBoxErledigt: CheckBox zur Markierung 'Erledigt'
3925 @type wxCheckBoxErledigt: wxPython - CheckBox
3926
3927 @param wxmskCtrlDatumPE: Datum-Eingabefeld, zur Spezifikation des Datums des Protokolleintrages
3928 @type wxmskCtrlDatumPE: wxPython - wxmskCtrl
3929
3930 @param LBSpWTALBetPers: Auswahlliste, die die beteiligten Personen aufnimmt
3931 @type LBSpWTALBetPers: ListBoxSpWTitelAL
3932
3933 @param listeWerte: Es sind C{[prj.pp_prtprotokoll.id, notizen]} zu übergeben
3934 @type listeWerte: Python-Liste
3935
3936 @param wxmskCtrlAntwDatum: Datum-Eingabefeld, zur Spezifikation des Datums der Antwort
3937 @type wxmskCtrlAntwDatum: wxPython - wxmskCtrl
3938
3939 @param wxmskCtrlTermin: Datum-Eingabefeld, zur Spezifikation des Termins
3940 @type wxmskCtrlTermin: wxPython - wxmskCtrl
3941
3942 @param LBSpWTALAntwPers: Auswahlliste, die die angesprochenen Personen aufnimmt
3943 @type LBSpWTALAntwPers: ListBoxSpWTitelAL
3944
3945 @param fallunterscheidung: Es ist zu unterscheiden, ob ein projektspezifischer Protokolleintrag C{fallunterscheidung == None}, beteiligte Personen C{fallunterscheidung == True} oder eine Frage / Aufgabe C{fallunterscheidung == False} vorliegt.
3946 @type fallunterscheidung:
3947
3948 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
3949 @type prjProjekteId: Ganzzahl
3950
3951 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
3952 @type sprSprachenId: Ganzzahl
3953
3954 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des Protokolleintrages zu übergeben.
3955 @type prtProtokollId: Ganzzahl
3956 """
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008 werte = []
4009
4010
4011
4012
4013
4014
4015
4016 if( fallunterscheidung is None ) :
4017
4018 werte.append( [ listeWerte[0]
4019 , listeWerte[2]
4020 , wxmskCtrlDatumPE.gibWert()
4021 , None
4022 , wxCheckBoxErledigt.gibWert()
4023 , wxCheckBoxIntern.gibWert()
4024 , 0
4025 , prjProjekteId
4026 , prtProtokollId
4027 , listeWerte[1]
4028 , None
4029 , None] )
4030
4031
4032
4033
4034
4035
4036
4037
4038 if( LBSpWTALBetPers.ListBox__li.gibClientData() == None ):
4039 tmp = 0
4040 else :
4041 tmp = len( LBSpWTALBetPers.ListBox__li.gibClientData() )
4042
4043 if( fallunterscheidung == True ) :
4044
4045 for i in range( tmp ):
4046 if( i < len( LBSpWTALBetPers.ListBox__li.clientData ) ) :
4047
4048 werte.append( [ LBSpWTALBetPers.ListBox__li.clientData[i]
4049 , None
4050 , None
4051 , None
4052 , None
4053 , None
4054 , LBSpWTALBetPers.ListBox__li.gibClientData(i)[0]
4055 , prjProjekteId
4056 , prtProtokollId
4057 , None
4058 , 'true'
4059 , None] )
4060 else :
4061
4062 werte.append( [ None
4063 , None
4064 , None
4065 , None
4066 , None
4067 , None
4068 , LBSpWTALBetPers.ListBox__li.gibClientData(i)[0]
4069 , prjProjekteId
4070 , prtProtokollId
4071 , None
4072 , 'true'
4073 , None] )
4074
4075 for i in range( tmp, len( LBSpWTALBetPers.ListBox__li.clientData ) ):
4076 werte.append( [ LBSpWTALBetPers.ListBox__li.clientData[i]
4077 , None
4078 , None
4079 , None
4080 , None
4081 , None
4082 , None
4083 , prjProjekteId
4084 , prtProtokollId
4085 , None
4086 , 'true'
4087 , None] )
4088
4089
4090
4091
4092
4093 if( LBSpWTALAntwPers.ListBox__li.gibClientData() == None ):
4094 tmp = 0
4095 else :
4096 tmp = len( LBSpWTALAntwPers.ListBox__li.gibClientData() )
4097
4098 if( fallunterscheidung == False ) :
4099
4100 for i in range( tmp ):
4101 if( i < len( LBSpWTALAntwPers.ListBox__li.clientData ) ) :
4102
4103 werte.append( [ LBSpWTALAntwPers.ListBox__li.clientData[i]
4104 , None
4105 , None
4106 , wxmskCtrlAntwDatum.gibWert()
4107 , None
4108 , None
4109 , LBSpWTALAntwPers.ListBox__li.gibClientData(i)
4110 , prjProjekteId
4111 , prtProtokollId
4112 , None
4113 , 'false'
4114 , wxmskCtrlTermin.gibWert()] )
4115 else :
4116
4117 werte.append( [ None
4118 , None
4119 , None
4120 , wxmskCtrlAntwDatum.gibWert()
4121 , None
4122 , None
4123 , LBSpWTALAntwPers.ListBox__li.gibClientData(i)
4124 , prjProjekteId
4125 , prtProtokollId
4126 , None
4127 , 'false'
4128 , wxmskCtrlTermin.gibWert()] )
4129
4130
4131 for i in range( tmp, len( LBSpWTALAntwPers.ListBox__li.clientData ) ):
4132 if( i < len( LBSpWTALAntwPers.ListBox__li.clientData ) ) :
4133 werte.append( [ LBSpWTALAntwPers.ListBox__li.clientData[i]
4134 , None
4135 , None
4136 , wxmskCtrlAntwDatum.gibWert()
4137 , None
4138 , None
4139 , None
4140 , prjProjekteId
4141 , prtProtokollId
4142 , None
4143 , 'false'
4144 , wxmskCtrlTermin.gibWert()] )
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161 for i in range( len( werte ) ) :
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174 if( werte[i][6] == None ) :
4175
4176 self.__dbAbfrage__( """
4177 SELECT intern.loesche__zeile( 'prj.pp_prtprotokoll'
4178 , 'prj.pp_prtprotokoll.id = """ + str( werte[i][0] ) + """'
4179 , 'true');""" )
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208 else :
4209 sql = "SELECT intern.nimm__zeile( 'prj.pp_prtprotokoll', ARRAY["
4210
4211
4212
4213 if( werte[i][0] != None ) : sql = sql + "'id', "
4214
4215
4216
4217 if( werte[i][1] != None ) : sql = sql + "'notizen', "
4218
4219
4220
4221 if( werte[i][2] != None ) : sql = sql + "'datuhrz', "
4222
4223
4224
4225 if( werte[i][3] != None ) : sql = sql + "'duanfrage', "
4226
4227
4228
4229 if( werte[i][4] != None ) : sql = sql + "'erledigt', "
4230
4231
4232
4233 if( werte[i][5] != None ) : sql = sql + "'intern', "
4234
4235
4236
4237 if( werte[i][6] != None ) : sql = sql + "'prj_personen_id', "
4238
4239
4240
4241 sql = sql + "'prj_projekte_id', "
4242
4243
4244
4245 sql = sql + "'prt_protokoll_id', "
4246
4247
4248
4249 if( werte[i][9] != None ) : sql = sql + "'spr_uebvar_id', "
4250
4251
4252
4253 if( werte[i][10] != None ) : sql = sql + "'teilnehmer', "
4254
4255
4256 if( werte[i][11] != None ) : sql = sql + "'termin', "
4257
4258 sql = sql + "], ARRAY['"
4259
4260
4261
4262
4263 if( werte[i][0] != None ) : sql = sql + str( werte[i][0] ) + """', '"""
4264
4265
4266
4267 if( werte[i][1] != None ) : sql = sql + str( werte[i][1] ) + """', '"""
4268
4269
4270
4271 if( werte[i][2] != None ) : sql = sql + zk.gibDatum( werte[i][2] ) + """', '"""
4272
4273
4274
4275 if( werte[i][3] != None ) : sql = sql + zk.gibDatum( werte[i][3] ) + """', '"""
4276
4277
4278
4279 if( werte[i][4] != None ) : sql = sql + str( werte[i][4] ) + """', '"""
4280
4281
4282
4283 if( werte[i][5] != None ) : sql = sql + str( werte[i][5] ) + """', '"""
4284
4285
4286
4287 if( werte[i][6] != None ) : sql = sql + str( werte[i][6] ) + """', '"""
4288
4289
4290
4291 sql = sql + str( werte[i][7] ) + """', '"""
4292
4293
4294
4295 sql = sql + str( werte[i][8] ) + """', '"""
4296
4297
4298
4299 if( werte[i][9] != None ) : sql = sql + str( werte[i][9] ) + """', '"""
4300
4301
4302
4303 if( werte[i][10] != None ) : sql = sql + str( werte[i][10] ) + """', '"""
4304
4305
4306 if( werte[i][11] != None ) : sql = sql + zk.gibDatum( werte[i][11] ) + """', '"""
4307
4308 sql = sql + "']);"
4309 sql = sql.replace( ", ]", "]" ).replace( ", ''", "" )
4310
4311 self.__dbAbfrage__( sql )
4312
4313
4314
4315
4316
4317
4318
4319
4320
4322 """
4323 Methode zum Herstellen der projektspezifischen Verbindung zwischen den Protokolleinträgen.
4324
4325 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
4326 @type prjProjekteId: Ganzzahl
4327
4328 @param prtProtokollIdVorg: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des Vorgängers anzugeben.
4329 @type prtProtokollIdVorg: Ganzzahl
4330
4331 @param prtProtokollIdNachf: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des Nachfolgers anzugeben.
4332 @type prtProtokollIdNachf: Ganzzahl
4333
4334 @param trennen: Es ist C{True} anzugeben, wenn die Protokolleinträge voneinander getrennt werden sollen.
4335 @type trennen: Boolean
4336 """
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353 if( trennen ):
4354
4355 self.__dbAbfrage__( """
4356 SELECT intern.loesche__zeile( 'prj.p_prtverbindung'
4357 , 'prj_projekte_id = """ + str( prjProjekteId ) + """
4358 AND prt_protokoll_id_nachf = """ + str( prtProtokollIdNachf ) + """
4359 AND prt_protokoll_id_vorg = """ + str( prtProtokollIdVorg ) + """'
4360 , 'true' );""" )
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377 else :
4378
4379 self.__dbAbfrage__( """
4380 SELECT prj.nimm__tabwerte( 'p_prtverbindung', ARRAY["""
4381
4382
4383
4384 + "'" + str( prjProjekteId ) + "'"
4385
4386
4387
4388 + ", '" + str( prtProtokollIdNachf ) + "'"
4389
4390
4391
4392 + ", '" + str( prtProtokollIdVorg ) + "']);" )
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4407 """
4408 Methode zum Herstellen bzw. Aufheben der projektspezifischen Verbindung zwischen den Protokolleinträgen.
4409
4410 @param TreeCtrlErg: Es ist die Baumstruktur zu übergeben, die die Protokolleinträge enthält, die zugeordnet bzw. entfernt werden soll.
4411 @type TreeCtrlErg: TreeCtrlErg
4412
4413 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
4414 @type prjProjekteId: Ganzzahl
4415
4416 @param prtProtokollIdVorg: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des Vorgängers des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben, wenn die Protokolleinträge in C{TreeCtrlErg} dem Protokolleintrag C{prtProtokollIdVorg} zugeordnet werden sollen. Es ist C{None} zu übergeben, wenn die Protokolleinträge in C{TreeCtrlErg} von ihrem Vorgänger im C{TreeCtrlErg} getrennt werden sollen.
4417 @type prtProtokollIdVorg: Ganzzahl
4418
4419 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
4420 @type sprSprachenId: Ganzzahl
4421
4422 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
4423 @type psGefszenarioId: Ganzzahl
4424 """
4425
4426
4427
4428
4429 eintragListe = TreeCtrlErg.gibZweig()
4430
4431
4432
4433
4434
4435
4436
4437
4438 if( prtProtokollIdVorg is None ) :
4439
4440
4441
4442
4443 if( len( eintragListe ) == 1
4444 and ( TreeCtrlErg.GetItemParent( eintragListe[0] ) == TreeCtrlErg.GetRootItem() ) ) :
4445
4446 return
4447
4448
4449
4450
4451 if( len( eintragListe ) == 1 ) :
4452
4453 prt_protokoll_id_vorg = TreeCtrlErg.gibDbId( TreeCtrlErg.GetItemParent( eintragListe[0] ) )
4454
4455 else :
4456
4457 prt_protokoll_id_vorg = TreeCtrlErg.gibDbId( eintragListe[0] )
4458 del eintragListe[0]
4459
4460
4461
4462
4463
4464
4465
4466 prtProtokollIdListe = ""
4467
4468 for i in range( len( eintragListe ) ) :
4469
4470 if( i > 0 ) : prtProtokollIdListe = prtProtokollIdListe + ', '
4471 prtProtokollIdListe = prtProtokollIdListe + str( TreeCtrlErg.gibDbId( eintragListe[i] ) )
4472
4473
4474 self.__dbAbfrage__( self.gibSQL_psPrtProtokoll( prjProjekteId = prjProjekteId
4475 , sprSprachenId = sprSprachenId
4476 , prtTypAspekt = 'SF'
4477 , psGefszenarioId = psGefszenarioId
4478 , prtTypId = None
4479 , sqlINpsGefszenId = False
4480 , prtProtokollIdVorg = prt_protokoll_id_vorg
4481 , prtProtokollIdNachf = prtProtokollIdListe ) )
4482
4483 prtProtokollIdNichtTrennen = []
4484
4485 for i in range( self.__gibAnzZeilen__() ) : prtProtokollIdNichtTrennen.append( self.__gibWert__( i, 3 ) )
4486
4487
4488
4489
4490
4491 for i in range( len( eintragListe ) ) :
4492
4493
4494
4495
4496
4497
4498 if( TreeCtrlErg.gibDbId( eintragListe[i] ) in prtProtokollIdNichtTrennen ) :
4499
4500 continue
4501
4502
4503 self.schreibe__prjPPrtVerbindung( prjProjekteId = 0
4504 , prtProtokollIdVorg = prt_protokoll_id_vorg
4505 , prtProtokollIdNachf = TreeCtrlErg.gibDbId( eintragListe[i] ) )
4506
4507
4508
4509
4510
4511 self.__dbAbfrage__( """
4512 SELECT intern.loesche__zeile( 'prj.p_prtverbindung'
4513 , 'prj_projekte_id = """ + str( prjProjekteId ) + """
4514 AND prt_protokoll_id_nachf = """ + str( TreeCtrlErg.gibDbId( eintragListe[i] ) ) + """
4515 AND prt_protokoll_id_vorg = """ + str( prt_protokoll_id_vorg ) + """'
4516 , 'true');""" )
4517
4518
4519
4520
4521
4522 return
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539 for i in range( len( eintragListe ) ) :
4540
4541
4542
4543
4544 if( TreeCtrlErg.gibClientData( eintragListe[i] )[0] == True ) :
4545
4546 continue
4547
4548
4549 self.schreibe__prjPPrtVerbindung( prjProjekteId = prjProjekteId
4550 , prtProtokollIdVorg = prtProtokollIdVorg
4551 , prtProtokollIdNachf = TreeCtrlErg.gibDbId( eintragListe[i] ) )
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4564 """
4565 Methode zum Herstellen/Trennen der projektspezifischen Verbindung zwischen den Protokolleinträgen in C{listeWerte} und dem Projekt.
4566
4567 @param listeWerte: Es ist die Liste der Werte zu übergeben, die den Protokolleinträgen zugeordnet sind, die dem Projekt zugeordnet bzw. aus dem Projekt entfernt werden sollen. Es ist zu übergeben [[prt.protokoll.id, prt.protokoll.id, spr.uebvar.id, notizen], [...], ...]
4568 @type listeWerte: TreeCtrlErg
4569
4570 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
4571 @type prjProjekteId: Ganzzahl
4572
4573 @param psGefszenarioId: Wenn die Protokolleinträge in C{listeWerte} vom Projekt getrennt werden sollen, ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben. Wenn weitere Gefahrenszenarien im Projekt den jeweiligen Protokolleintrag verwenden, wird er nicht vom Projekt getrennt. Sollen die Protokolleinträge dem Projekt zugeordnet werden, ist C{None} zu übergeben.
4574 @type psGefszenarioId: Ganzzahl
4575 """
4576
4577
4578
4579
4580
4581
4582 if( psGefszenarioId is not None ) :
4583
4584
4585
4586
4587
4588 self.__dbAbfrage__( self.gibSQL_prjPlPrtPsGefszenario( prjProjekteId
4589 , psGefszenarioId
4590 , sqlINpsGefszenId = False ) )
4591
4592 prtProtokollIdNichtTrennen = []
4593
4594 for i in range( self.__gibAnzZeilen__() ):
4595
4596 prtProtokollIdNichtTrennen.append( self.__gibWert__( i, 0 ) )
4597
4598
4599
4600
4601
4602 for i in range( len( listeWerte ) ) :
4603
4604
4605
4606
4607
4608
4609 if( listeWerte[i][0] in prtProtokollIdNichtTrennen ) : continue
4610
4611
4612
4613
4614
4615
4616 self.__dbAbfrage__( """
4617 SELECT prj.nimm__tabwerte( 'pp_prtprotokoll', ARRAY["""
4618
4619
4620
4621 + "'" + str( prjProjekteId ) + "'"
4622
4623
4624
4625 + ", '" + str( listeWerte[i][0] ) + "'"
4626
4627
4628
4629 + ", '" + str( listeWerte[i][2] ) + "'"
4630
4631
4632
4633
4634
4635 + ", to_char( clock_timestamp(), 'YYYY-MM-DD HH24:MI:SS'), 'true', 'false'"
4636
4637
4638
4639 + ", '" + str( listeWerte[i][3] ) + "']);" )
4640
4641
4642
4643
4644 self.__dbAbfrage__( """
4645 SELECT intern.loesche__zeile( 'prj.pp_prtprotokoll'
4646 , 'prj_projekte_id = """ + str( prjProjekteId ) + """
4647 AND prt_protokoll = """
4648 + str( listeWerte[i][0] ) + """'
4649 , 'true');""" )
4650
4651
4652
4653
4654
4655 return
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670 prtProtokollIdZugeordnet = []
4671
4672 self.__dbAbfrage__( self.gibSQL_prjPlPrtPsGefszenario( prjProjekteId = prjProjekteId ) )
4673
4674 for i in range( self.__gibAnzZeilen__() ):
4675
4676 prtProtokollIdZugeordnet.append( self.__gibWert__( i, 0 ) )
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696 for i in range( len( listeWerte ) ) :
4697
4698
4699
4700
4701
4702 if( listeWerte[i][0] in prtProtokollIdZugeordnet ) :
4703
4704 continue
4705
4706 self.__dbAbfrage__( """
4707 SELECT prj.nimm__tabwerte( 'pp_prtprotokoll', ARRAY["""
4708
4709
4710
4711 + "'" + str( prjProjekteId ) + "'"
4712
4713
4714
4715 + ", '" + str( listeWerte[i][0] ) + "'"
4716
4717
4718
4719 + ", '" + str( listeWerte[i][2] ) + "'"
4720
4721
4722
4723
4724
4725 + ", to_char( clock_timestamp(), 'YYYY-MM-DD HH24:MI:SS'), 'true', 'false'"
4726
4727
4728
4729 + ", '" + str( listeWerte[i][3] ) + "']);" )
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4742 """
4743 Methode zum Aktualisieren eines projektspezifischen Protokolleintrages C{prj.pp_prtprotokoll} mittels C{UPDATE}.
4744
4745 @param sprUebvarId: Es ist die Datenbankidentifikationsnummer (C{spr.uebvar.id}) der Übersetzungsvariante zu übergeben, die in C{prj.pp_prtprotokoll} übernommen werden soll.
4746 @type sprUebvarId: Ganzzahl
4747
4748 @param whereId: Es sind als Liste C{prj_projekte_id, prt.protokoll_id, spr_uebvar_id} zu übergeben, die in der C{WHERE} Bedingung für C{UPDATE} verwendet werden.
4749 @type whereId: Python-Liste
4750 """
4751
4752
4753
4754
4755 self.__dbAbfrage__( """
4756 UPDATE prj.pp_prtprotokoll SET spr_uebvar_id = """ + str( sprUebvarId ) + """
4757 WHERE prj_projekte_id = """ + str( whereId[0] ) + """
4758 AND prt_protokoll_id = """ + str( whereId[1] ) + """
4759 AND spr_uebvar_id = """ + str( whereId[2] ) + """;""" )
4760
4761
4762
4763
4764
4765
4766
4767
4769 """
4770 Methode zum Einlesen der personenbezogenen Protokolleinträgen.
4771
4772 @param listeWerte: Es sind C{[teilnehmer, termin, duanfrage, notizen]} zu übergeben
4773 @type listeWerte: Python Liste
4774
4775 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
4776 @type prjProjekteId: Ganzzahl
4777
4778 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) anzugeben.
4779 @type prtProtokollId: Ganzzahl
4780
4781 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) anzugeben.
4782 @type prtProtokollId: Ganzzahl
4783
4784 @param prjPersonenId : Es ist die Personen-Id C{prj.personen.id} zu übergeben.
4785 @type prjPersonenId : C{Ganzzahl}
4786 """
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805 self.__dbAbfrage__( """
4806 SELECT prj.nimm__tabwerte( 'pp_prtprotokoll_pers', ARRAY["""
4807
4808
4809
4810 + "'" + str( prjProjekteId ) + "'"
4811
4812
4813
4814 + ", '" + str( prtProtokollId ) + "'"
4815
4816
4817
4818 + ", '" + str( listeWerte[0] ) + "'"
4819
4820
4821
4822 + ", '" + str( prjPersonenId ) + "'"
4823
4824
4825
4826
4827 + ", " + listeWerte[1]
4828
4829
4830
4831
4832 + ", " + listeWerte[2]
4833
4834
4835
4836 + ", '" + str( listeWerte[3] ) + "']);" )
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4848 """
4849 Methode zum Übernehmen der projektspezifischen Abkürzungen bezogen auf das Gefahrenszenario.
4850
4851 @param listeWerte: Es sind C{[ps_abk_id, spr_uebvar_id_zus, notizen]} zu übergeben
4852 @type listeWerte: Python Liste
4853
4854 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
4855 @type prjProjekteId: Ganzzahl
4856
4857 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
4858 @type psGefszenarioId: Ganzzahl
4859
4860 @param logentfernt: Wird C{true} angegeben, soll die Verbindung zwischen Sicherheitsanfordeurng und Dokument gelöst werden
4861 @type logentfernt: Zeichenkette, die C{true/false} enthält
4862 """
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881 self.__dbAbfrage__( """
4882 SELECT prj.nimm__tabwerte( 'pl_psgefabk', ARRAY["""
4883
4884
4885
4886 + "'" + str( prjProjekteId ) + "'"
4887
4888
4889
4890 + ", '" + str( psGefszenarioId ) + "'"
4891
4892
4893
4894 + ", '" + logentfernt + "'"
4895
4896
4897
4898 + ", '" + str( listeWerte[0] ) + "'"
4899
4900
4901
4902 + ", '" + str( listeWerte[1] ) + "'"
4903
4904
4905
4906 + ", '" + unicode( listeWerte[2] ) + "']);" )
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4918 """
4919 Methode zum Aktualisieren der projektspezifischen Anmerkungen in der Datenbanktabelle C{prj.pl_psgefanm}.
4920
4921 @param listeWerte: Es sind C{[ps_anmerkung_id, spr_uebvar_id, notizen} zu übergeben
4922 @type listeWerte: Python Liste
4923
4924 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id > 0}) des Projektes zu übergeben.
4925 @type prjProjekteId: Ganzzahl
4926
4927 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
4928 @type psGefszenarioId: Ganzzahl
4929
4930 @param logentfernt: Wird C{true} angegeben, soll die Verbindung zwischen Anmerkung und Gefahrenszenario gelöst werden
4931 @type logentfernt: Zeichenkette, die C{true/false} enthält
4932 """
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958 self.__dbAbfrage__( """
4959 SELECT prj.nimm__tabwerte( 'pl_psgefanm', ARRAY["""
4960
4961
4962
4963 + "'" + str( prjProjekteId ) + "'"
4964
4965
4966
4967 + ", '" + str( psGefszenarioId ) + "'"
4968
4969
4970
4971 + ", '" + logentfernt + "'"
4972
4973
4974
4975 + ", '" + str( listeWerte[0] ) + "'"
4976
4977
4978
4979 + ", '" + str( listeWerte[1] ) + "'"
4980
4981
4982
4983 + ", '" + listeWerte[2].encode('utf-8') + "']);" )
4984
4985
4986
4987
4988
4989
4990
4991
4992
4994 """
4995 Methode zum Einfügen / Aktualisieren der (projektspezifischen) Informationen in die Datenbanktabellen C{prj.pl_psgefstrkt}.
4996
4997 @param listeWerte: Es sind C{[str_strkt_id, notizen]} zu übergeben
4998 @type listeWerte: Python Liste
4999
5000 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
5001 @type prjProjekteId: Ganzzahl
5002
5003 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
5004 @type psGefszenarioId: Ganzzahl
5005
5006 @param logentfernt: Wird C{true} angegeben, soll die Verbindung zwischen Sicherheitsanfordeurng und Dokument gelöst werden
5007 @type logentfernt: Zeichenkette, die C{true/false} enthält
5008 """
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033 self.__dbAbfrage__( """
5034 SELECT prj.nimm__tabwerte( 'pl_psgefstrkt', ARRAY["""
5035
5036
5037
5038 + "'" + str( prjProjekteId ) + "'"
5039
5040
5041
5042 + ", '" + str( psGefszenarioId ) + "'"
5043
5044
5045
5046 + ", '" + str( listeWerte[0] ) + "'"
5047
5048
5049
5050 + ", '" + listeWerte[1].encode('utf-8') + "'"
5051
5052
5053
5054 + ", '" + logentfernt + "']);" )
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5066 """
5067 Methode zum Einfügen / Aktualisieren der (projektspezifischen) Informationen in die Datenbanktabellen C{ps.gefszenario / prj.pp_psgefszenario}.
5068
5069
5070 @param listeGefszen: Es ist das GUI-Element zu übergeben, welches das Gefahrenszenario einschließlich interner Notizen repräsentiert.
5071 @type listeGefszen: TextCtrlSpWTitel
5072
5073 @param spr_uebvar_id_reprgefszen: Es ist das GUI-Element zu übergeben, welches das repräsentative Gefahrenszenario repräsentiert.
5074 @type spr_uebvar_id_reprgefszen: TextCtrlErg
5075
5076 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
5077 @type prjProjekteId: Ganzzahl
5078
5079 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
5080 @type sprSprachenId: Ganzzahl
5081
5082 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
5083 @type psGefszenarioId: Ganzzahl
5084 """
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108 self.__dbAbfrage__( """
5109 SELECT intern.nimm__zeile( 'prj.pp_psgefszenario', ARRAY[
5110 'id'
5111 , 'notizen'
5112 , 'prj_personen_id'
5113 , 'prj_projekte_id'
5114 , 'ps_gefszenario_id'
5115 , 'spr_uebvar_id'
5116 , 'spr_uebvar_id_reprgefszen'
5117 , 'spr_uebvar_id_ursp'
5118 ], ARRAY['"""
5119 + str( listeGefszen[2] ) + """', '"""
5120 + listeGefszen[1].encode('utf-8') + """', '"""
5121 + '0' + """', '"""
5122 + str( prjProjekteId ) + """', '"""
5123 + str( psGefszenarioId ) + """', '"""
5124 + str( listeGefszen[0] ) + """', '"""
5125 + str( spr_uebvar_id_reprgefszen ) + """', '"""
5126
5127
5128
5129 + str( listeGefszen[3] ) + """']);""" )
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141 - def schreibe__psPrtStrkt( self, prjProjekteId, prtProtokollId, strStrktId, notizen, prjPPrtStrstrktId = None ):
5142 """
5143 Methode zum Herstellen der projektspezifischen Verbindung zwischen Protokolleintrag und Strukturpunkt.
5144
5145 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
5146 @type prjProjekteId: Ganzzahl
5147
5148 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
5149 @type prtProtokollId: Ganzzahl
5150
5151 @param strStrktId : Es ist die Struktur-Id C{str.strkt.id} zu übergeben.
5152 @type strStrktId : C{Ganzzahl}
5153
5154 @param notizen -- Noch nicht implementiert -- : Es sind die Notizen zu übergeben.
5155 @type notizen : C{Zeichenkette}
5156
5157 @param prjPPrtStrstrktId: Wenn der Protokolleintrag vom Strukturpunkt getrennt werden soll, ist die Datenbankidentifikationsnummer (C{prj.p_prtstrstrkt.id}) der Verbindung übergeben.
5158 @type prjPPrtStrstrktId: Ganzzahl
5159 """
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174 if( prjPPrtStrstrktId is not None ):
5175
5176 self.__dbAbfrage__( """
5177 SELECT intern.loesche__zeile( 'prj.p_prtstrstrkt', 'prj.p_prtstrstrkt.id = """
5178 + str( prjPPrtStrstrktId )
5179 + """', 'true' );""" )
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197 else :
5198
5199
5200
5201
5202 self.__dbAbfrage__( """
5203 SELECT prj.nimm__tabwerte( 'p_prtstrstrkt', ARRAY["""
5204
5205
5206
5207 + "'" + str( prjProjekteId ) + "'"
5208
5209
5210
5211 + ", '" + str( prtProtokollId ) + "'"
5212
5213
5214
5215 + ", '" + str( strStrktId ) + "']);" )
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5230 """
5231 Methode zum Einfügen / Aktualisieren projektspezifischer Informationen in die / der Datenbanktabelle C{prj.pp_strstrkt}.
5232
5233 @param prjProjekteId : Es ist die Projekt-Id C{prj.projekte.id} zu übergeben.
5234 @type prjProjekteId : C{Ganzzahl}
5235
5236 @param strStrktIdVorg : Es ist die Struktur-Id C{str.strkt.id} des ersten (linken) Strukturpunktes zu übergeben.
5237 @type strStrktIdVorg : C{Ganzzahl}
5238
5239 @param strStrktIdNachf : Es ist die Struktur-Id C{str.strkt.id} des nachfolgenden (mit dem linken verbndenen) Strukturpunkt zu übergeben.
5240 @type strStrktIdNachf : C{Ganzzahl}
5241
5242 @param fbtor : -- Noch nicht implementiert -- : Es ist das Fehlerbaumtor zu übergeben
5243 @type fbtor : C{Zeichenkette}
5244
5245 @param notizen : -- Noch nicht implementiert -- : Es sind die Notizen zu übergeben.
5246 @type notizen : C{Zeichenkette}
5247 """
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262 self.__dbAbfrage__( """
5263 SELECT * FROM prj.nimm__tabwerte( 'p_strverbindung', ARRAY["""
5264
5265
5266
5267 + "'" + str( prjProjekteId ) + "'"
5268
5269
5270
5271 + ", '" + str( strStrktIdVorg ) + "'"
5272
5273
5274
5275 + ", '" + str( strStrktIdNachf ) + "']);" )
5276
5277
5278
5279
5280
5281
5282
5283
5284
5286 """
5287 Methode zum Einfügen / Aktualisieren der Informationen in die / der Datenbanktabelle C{prt.protokoll}.
5288
5289 @param prtTypId : Es ist die Projekt-Id C{prt.typ.id} zu übergeben.
5290 @type prtTypId : C{Ganzzahl}
5291
5292 @param notizen : Es sind die Notizen zu übergeben.
5293 @type notizen : C{Zeichenkette}
5294 """
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311 self.__dbAbfrage__( """
5312 SELECT intern.nimm__zeile( 'prt.protokoll', ARRAY[ 'id', 'prt_typ_id', 'notizen' ], ARRAY[ """
5313
5314
5315
5316 + "CAST( intern.gib__naechsteid( 'prt.protokoll' ) AS varchar )"
5317
5318
5319
5320 + ", '" + str( prtTypId ) + "'"
5321
5322
5323
5324 + ", '" + notizen.encode('utf-8') + "']);" )
5325
5326
5327
5328
5329
5330 return self.__gibWert__( 0, 0 )
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5342 """
5343 Methode zum Schreiben von Wortgruppen.
5344
5345
5346 @param sprUebvarId : Es ist die Datenbankidentifikationsnummer (C{spr.uebvar.id}) der Übersetzungsvariante zu übergeben, der die aktuelle C{wortgruppe} als Übersetzung hinzugefügt werden soll.
5347 @type sprUebvarId : C{Ganzzahl}
5348
5349 @param wortgruppe: Es ist die Wortgruppe anzugeben.
5350 @type wortgruppe: Zeichenkette
5351
5352 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben in der die C{wortgruppe} vorliegt.
5353 @type sprSprachenId: Ganzzahl
5354
5355 @return: Es wird die C{spr.uebvar.id} der eingelesenen Wortgruppe zurückgegeben.
5356 @rtype: Ganzzahl
5357 """
5358
5359
5360
5361
5362 self.__dbAbfrage__( """
5363 --
5364 -- Wortgruppe übernehmen
5365 --
5366 SELECT spr.nimm__wgruppe( '""" + wortgruppe.encode('utf-8') + """'
5367 , '""" + str( sprSprachenId ) + """'
5368 , '""" + str( sprUebvarId ) + """' )
5369 ;""" )
5370
5371
5372
5373
5374
5375 return self.__gibWert__( 0, 0 )
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5387 """
5388 Methode zum Schreiben von Übersetzungsvarianten.
5389
5390
5391 @param ListBoxErg: Es ist die C{ListBoxErg} zu übergeben, die die zu schreibenden Übersetzungen enthält.
5392 @type ListBoxErg: ListBoxErg
5393
5394 @param sprUebvarId : Es ist die Datenbankidentifikationsnummer (C{spr.uebvar.id}) der Übersetzungsvariante zu übergeben.
5395 @type sprUebvarId : C{Ganzzahl}
5396
5397 @param istMehrfachVerw: Die Übersetzungsvariante (C{spr.uebvar.id}) wird mehrfach verwendet.
5398 @type istMehrfachVerw: Boolean
5399
5400 @return: Es wird die ggf. neu erzeugte spr.uebvar.id zurückgegeben.
5401 @rtype: Ganzzahl
5402 """
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415 spr_uebvar_id__akt = sprUebvarId
5416
5417 if( istMehrfachVerw ) :
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428 spr_uebvar_id__akt = self.schreibe__sprNimmWgruppe( sprUebvarId = 0
5429 , wortgruppe = 'beliebige Zeichenkette'
5430 , sprSprachenId = 0 )
5431
5432 else :
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442 self.schreibe__sprNimmWgruppe( sprUebvarId = spr_uebvar_id__akt
5443 , wortgruppe = 'beliebige Zeichenkette'
5444 , sprSprachenId = 0 )
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458 if( not istMehrfachVerw ) :
5459
5460 self.__dbAbfrage__( """
5461 --
5462 -- Alle Übersetzungen löschen
5463 --
5464 SELECT intern.loesche__zeile( 'spr.uebersetzung'
5465 , 'spr.uebersetzung.spr_uebvar_id = """ + str( spr_uebvar_id__akt ) + """
5466 AND spr_sprachen_id > 0'
5467 , 'true' );""" )
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477 for i in range( ListBoxErg.GetCount() ) :
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488 self.schreibe__sprNimmWgruppe( sprUebvarId = spr_uebvar_id__akt
5489 , wortgruppe = ListBoxErg.gibWert( i )
5490 , sprSprachenId = ListBoxErg.gibClientData( i )[0] )
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500 self.__dbAbfrage__( """
5501 --
5502 -- Hilfsübersetzung löschen
5503 --
5504 SELECT intern.loesche__zeile( 'spr.uebersetzung'
5505 , 'spr.uebersetzung.spr_uebvar_id = """ + str( spr_uebvar_id__akt ) + """
5506 AND spr_sprachen_id = 0'
5507 , 'true' );""" )
5508
5509
5510
5511
5512
5513
5514 return spr_uebvar_id__akt
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525 - def selektiere__prjPrtDoku( self, TreeCtrlErg, prjProjekteId, sprSprachenId, prtProtokollId, psGefszenarioId, internFirmaId ):
5526 """
5527 Methode zur arstellung der Dokumente, die einem Protokolleintrag, einer Sicherheitsanforderung, Terminplaneintrag zugeordnet sind.
5528
5529 @note: Die übergebene Baumstruktur (C{TreeCtrlErg}) wird verändert !
5530
5531 @param TreeCtrlErg: Es ist die Baumstruktur zu übergeben, die die Dokumente aufnimmt.
5532 @type TreeCtrlErg: TreeCtrlErg
5533
5534 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
5535 @type prjProjekteId: Ganzzahl
5536
5537 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
5538 @type sprSprachenId: Ganzzahl
5539
5540 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
5541 @type prtProtokollId: Ganzzahl
5542
5543 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
5544 @type psGefszenarioId: Ganzzahl
5545
5546 @param internFirmaId: Es ist die Datenbankidentifikationsnummer (C{intern.firma.id}) des Erstellers des aktuellen Dokumentes zu übergeben.
5547 @type internFirmaId: Ganzzahl
5548 """
5549
5550
5551
5552
5553 self.__dbAbfrage__( self.gibSQL_prjPrtDoku( prjProjekteId = prjProjekteId
5554 , sprSprachenId = sprSprachenId
5555 , prtProtokollId = prtProtokollId
5556 , psGefszenarioId = psGefszenarioId
5557 , internFirmaId = internFirmaId ) )
5558
5559
5560
5561
5562
5563
5564 if( self.__gibAnzZeilen__() == 0 ) : return
5565
5566
5567
5568
5569
5570
5571
5572
5573 TreeCtrlErg.nimmHauptknoten( wert = TreeCtrlErg.HK_DOK
5574 , bezHK = TreeCtrlErg.HK_DOK )
5575
5576
5577
5578
5579
5580
5581 for i in range( self.__gibAnzZeilen__() ):
5582
5583
5584
5585
5586 aspekt = 'B: '
5587 rev = '---'
5588 datum = '---'
5589 doknr = '---'
5590 if( self.__gibWert__( i, 8 ) == 'QUELLE' ) : aspekt = 'Q: '
5591 if( len( self.__gibWert__( i, 5 ) ) > 0 ) : rev = self.__gibWert__( i, 5 )
5592 if( len( str( self.__gibWert__( i, 6 ) ) ) > 0 ) : datum = self.__gibWert__( i, 6 )
5593 if( len( self.__gibWert__( i, 2 ) ) > 0 ) : doknr = self.__gibWert__( i, 2 )
5594
5595 dokinfo = ( aspekt
5596 + self.__gibWert__( i, 3 )
5597 + '\t>' + self.__gibWert__( i, 9 )
5598 + '<\t[Rev.: ' + rev
5599 + '\tDatum: ' + str( datum )
5600 + '\tDok-Nr: ' + doknr
5601 + ']' )
5602
5603
5604
5605
5606
5607 notizen = ( self.__gibWert__( i, 1 )
5608 + '\t|\t' + self.__gibWert__( i, 4 ) )
5609
5610
5611
5612
5613
5614
5615 TreeCtrlErg.nimmWert( wert = zk.gibIdWertNotizen( id = self.__gibWert__( i, 0 )
5616 , zusInfo = ""
5617 , wert = dokinfo
5618 , notizen = notizen )
5619 , wertId = None
5620 , dbId = self.__gibWert__( i, 0 )
5621 , wertIdVorgaenger = ''
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635 , clientData = [ self.__gibWert__( i, 4 )
5636 , self.__gibWert__( i, 2 )
5637 , self.__gibWert__( i, 10 )
5638 , self.__gibWert__( i, 11 )
5639 , self.__gibWert__( i, 7 )
5640 , self.__gibWert__( i, 6 )
5641 , self.__gibWert__( i, 12 )
5642 , self.__gibWert__( i, 5 )
5643 , self.__gibWert__( i, 8 )] )
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654 - def selektiere__psGefAbk( self, LBGefSpWTALPersonen, CBHaeufig, LBHaeufigBegr, CBGefStufe, LBGefStufeBegr, TCASRisikoStufe, LBRisikoStufeBegr, prjProjekteId, sprSprachenId, psGefszenarioId ):
5655 """
5656 Methode zur Auswahl der Abkürzung in der Auswahlliste (C{wxComboBox}.
5657
5658 @note: Die übergebene Auswahlliste (C{wxComboBox}) wird verändert !
5659
5660 @requires: Mittels C{initwxControlWithItems_psAbk(...)} müssen C{LBGefPersonen, CBHaeufig, CBGefStufe, TCASRisikoStufe} mit gültigen Werten gefüllt werden.
5661
5662
5663 @param LBGefSpWTALPersonen: Es ist die Auswahlliste zu übergeben, die die gefährdeten Personen aufnimmt.
5664 @type LBGefSpWTALPersonen: wxPython - ListBoxSpWTitelAL
5665 @param CBHaeufig: Es ist die Auswahlliste zu übergeben, die die Häufigkeit aufnimmt.
5666 @type CBHaeufig: wxPython - wxComboBox
5667 @param LBHaeufigBegr: Es sind die Texteingabefelder zu übergeben, die die Begründung / internen Notizen zur Häufigkeit aufnehmen.
5668 @type LBHaeufigBegr: wxPython - TextCtrlSpWTitel
5669 @param CBGefStufe: Es ist die Auswahlliste zu übergeben, die die Gefahrenstufe aufnimmt.
5670 @type CBGefStufe: wxPython - wxComboBox
5671 @param LBGefStufeBegr: Es sind die Texteingabefelder zu übergeben, die die Begründung / internen Notizen zur Gefahrenstufe aufnehmen.
5672 @type LBGefStufeBegr: wxPython - TextCtrlSpWTitel
5673 @param TCASRisikoStufe: Es ist die Auswahlliste zu übergeben, die die Risikostufen aufnimmt.
5674 @type TCASRisikoStufe: TextCtrlAuswStatisch
5675 @param LBRisikoStufeBegr: Es sind die Texteingabefelder zu übergeben, die die Bewertung / internen Notizen der Risikostufe aufnehmen.
5676 @type LBRisikoStufeBegr: wxPython - TextCtrlSpWTitel
5677
5678 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
5679 @type prjProjekteId: Ganzzahl
5680
5681 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
5682 @type sprSprachenId: Ganzzahl
5683
5684 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
5685 @type psGefszenarioId: Ganzzahl
5686 """
5687
5688
5689
5690
5691 self.__dbAbfrage__( self.gibSQL_prjPlPsGefabk( prjProjekteId = prjProjekteId
5692 , sprSprachenId = sprSprachenId
5693 , psGefszenarioId = psGefszenarioId ) )
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705 LBGefSpWTALPersonen.schiebeAlleRechts()
5706 del LBGefSpWTALPersonen.ListBox__li.clientData[:]
5707
5708 CBHaeufig.SetSelection( 0 )
5709 LBHaeufigBegr.loescheAlles()
5710
5711 CBGefStufe.SetSelection( 0 )
5712 LBGefStufeBegr.loescheAlles()
5713
5714 TCASRisikoStufe.selektiereWert( 0 )
5715 LBRisikoStufeBegr.loescheAlles()
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727 for i in range( self.__gibAnzZeilen__() ):
5728 typ = self.__gibWert__( i, 0 )
5729
5730
5731
5732
5733
5734 if typ == 'GP':
5735
5736 LBGefSpWTALPersonen.schiebeLinks( self.__gibWert__( i, 1 ) )
5737
5738
5739
5740
5741 LBGefSpWTALPersonen.ListBox__li.clientData.append( self.__gibWert__( i, 1 ) )
5742
5743 continue
5744
5745
5746
5747
5748
5749
5750
5751
5752 if typ == 'RH':
5753
5754 for k in range( CBHaeufig.GetCount() ) :
5755 if( CBHaeufig.gibClientData( selection = k, lfdNr = 0 ) == self.__gibWert__( i, 1 ) ) :
5756 break
5757
5758 CBHaeufig.SetSelection( k )
5759
5760 LBHaeufigBegr.nimmWert( wert = self.__gibWert__( i, 2 ) + '\t|\t' + self.__gibWert__( i, 3 )
5761 , clientData = [ self.__gibWert__( i, 4 )
5762
5763 , self.__gibWert__( i, 3 ) ] )
5764 LBHaeufigBegr.SetSelection( 0 )
5765
5766 continue
5767
5768
5769
5770
5771
5772
5773
5774
5775 if typ == 'RG':
5776
5777 for k in range( CBGefStufe.GetCount() ) :
5778
5779 if( CBGefStufe.gibClientData( selection = k, lfdNr = 0 ) == self.__gibWert__( i, 1 ) ):
5780 break
5781
5782 CBGefStufe.SetSelection( k )
5783
5784 LBGefStufeBegr.nimmWert( wert = self.__gibWert__( i, 2 ) + '\t|\t' + self.__gibWert__( i, 3 )
5785 , clientData = [ self.__gibWert__( i, 4 )
5786
5787 , self.__gibWert__( i, 3 ) ] )
5788 LBGefStufeBegr.SetSelection( 0 )
5789
5790 continue
5791
5792
5793
5794
5795
5796
5797
5798
5799 if typ == 'RR':
5800
5801 for k in range( TCASRisikoStufe.gibAnzahl() ) :
5802 if( TCASRisikoStufe.gibClientData( k )[0] == self.__gibWert__( i, 1 ) ):
5803 break
5804
5805 TCASRisikoStufe.selektiereWert( k )
5806
5807 LBRisikoStufeBegr.nimmWert( wert = self.__gibWert__( i, 2 ) + '\t|\t' + self.__gibWert__( i, 3 )
5808 , clientData = [ self.__gibWert__( i, 4 )
5809
5810 , self.__gibWert__( i, 3 ) ] )
5811 LBRisikoStufeBegr.SetSelection( 0 )
5812
5813 continue
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824 - def selektiere__psGefAnm( self, ListBoxGefAnm, TreeCtrlErgAnmId, ListBoxErgVorhAnmId, liesAlles, prjProjekteId, sprSprachenId, psGefszenarioId, psAnmerkungId ):
5825 """
5826 Methode zum Eintragen der Anmerkungen zum Gefahrenszenario in der Risikoanalyse bzw. im Formular zum Bearbieten der Anmerkungen.
5827
5828 @note: Die in C{ListBoxGefAnm} enthaltenen Auswahllisten werden verändert !
5829
5830 @param ListBoxGefAnm: Es ist die Auswahlliste zu übergeben, die die Anmerkungen in der Risikoanalyse aufnehnmen soll (C{ListBoxErgVorhAnmId = None, TCSpWTitel = None}).
5831 @type ListBoxGefAnm: wxPython - ListBoxGefAnm
5832
5833 @param TreeCtrlErgAnmId: Es ist die Auswahlliste zu übergeben, die die Anmerkungen-Id im Formular zum Bearbeiten der Anmerkungen aufnehnmen soll (C{ListBoxGefAnm = None, TCSpWTitel = None}).
5834 @type TreeCtrlErgAnmId: ListBoxErg
5835
5836 @param ListBoxErgVorhAnmId: Es ist die Auswahlliste zu übergeben, die die Id der vorhandenen Anmerkungen im Formular zum Bearbeiten der Anmerkungen aufnehnmen soll (C{ListBoxGefAnm = None, TCSpWTitel = None}).
5837 @type ListBoxErgVorhAnmId: ListBoxErg
5838
5839 @param liesAlles: Nur für C{ListBoxErgVorhAnmId} gültig ! Wenn C{True} angegeben ist werden alle in der Datenbank vorhandenen Anmerkungen übernommen. Wenn C{False} angegeben ist werden alle zum Gefahrenszenario C{psGefszenarioId} vorhandenen Anmerkungen übernommen.
5840 @type liesAlles: Boolean
5841
5842 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
5843 @type prjProjekteId: Ganzzahl
5844
5845 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
5846 @type sprSprachenId: Ganzzahl
5847
5848 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
5849 @type psGefszenarioId: Ganzzahl
5850
5851 @param psAnmerkungId : Es ist die Datenbankidentifikationsnummer (C{ps.anmerkung.id}) der aktuellen Anmerkung zu übergeben.
5852 @type psAnmerkungId : Ganzzahl
5853 """
5854
5855
5856
5857
5858 sql = ( """
5859 --
5860 -- Anmerkungen - es wird der jeweils letzte zugeordnete Eintrag angezeigt
5861 -- (Logbuchfunktion)
5862 --
5863 SELECT DISTINCT
5864 -- 0
5865 spr.zeige__wgruppe.wgruppe AS zk
5866 , prj.zeige__pl_psgefanm.notizen
5867 -- 2
5868 , prj.zeige__pl_psgefanm.spr_uebvar_id
5869 , prj.zeige__pl_psgefanm.ps_anmerkung_id AS anmerkung_id
5870 --
5871 -- Kontrolle
5872 --
5873 --, prj.zeige__pl_psgefanm.spr_uebvar_id AS spr_uebvar_id
5874 --, prj.zeige__pl_psgefanm.logdatuhrz AS datuhrz
5875 FROM
5876 prj.zeige__pl_psgefanm_le
5877 , prj.zeige__pl_psgefanm
5878 , spr.zeige__wgruppe
5879 WHERE
5880 --
5881 -- Zeichenketten ausgeben
5882 --
5883 prj.zeige__pl_psgefanm.spr_uebvar_id =
5884 spr.zeige__wgruppe.spr_uebvar_id
5885 AND
5886 --
5887 -- Sprache auswählen
5888 --
5889 spr.zeige__wgruppe.spr_sprachen_id = """ + str( sprSprachenId ) + """
5890 AND
5891 --
5892 -- Ausschließlich die letzten (aktuellen) Anmerkungen anzeigen, ...
5893 --
5894 prj.zeige__pl_psgefanm_le.prj__pl_psgefanm__id =
5895 prj.zeige__pl_psgefanm.id""" )
5896
5897
5898
5899
5900
5901
5902
5903 if( ListBoxGefAnm != None or TreeCtrlErgAnmId != None ) :
5904 sql = sql + ( """
5905 AND
5906 --
5907 -- ... die nicht entfernt wurden
5908 --
5909 prj.zeige__pl_psgefanm.logentfernt = false
5910 AND
5911 --
5912 -- Projekt auswählen
5913 --
5914 prj.zeige__pl_psgefanm.prj_projekte_id = """
5915 + str( prjProjekteId ) + """
5916 AND
5917 --
5918 -- Gefahrenszenario auswählen
5919 --
5920 prj.zeige__pl_psgefanm.ps_gefszenario_id = """
5921 + str( psGefszenarioId ) )
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938 sql = sql + ";"
5939
5940
5941
5942
5943
5944
5945 else :
5946
5947
5948
5949 tmp = ""
5950 if( not liesAlles ) :
5951 tmp = ( """
5952 AND
5953 --
5954 -- Gefahrenszenario auswählen
5955 --
5956 prj.zeige__pl_psgefanm.ps_gefszenario_id = """
5957 + str( psGefszenarioId ) )
5958
5959
5960
5961
5962 sql = sql + ( """
5963 AND
5964 --
5965 -- keine Null-Anmerkungen zeigen
5966 --
5967 prj.zeige__pl_psgefanm.id > 0"""
5968 + tmp
5969 + """
5970
5971 --
5972 -- alle Anmerkungen entfernen die dem Gefahrenszenario projektspezifisch zugeordnet sind
5973 --
5974 EXCEPT
5975
5976 """
5977 + sql + """
5978 AND
5979 --
5980 -- ... die nicht entfernt wurden
5981 --
5982 prj.zeige__pl_psgefanm.logentfernt = false
5983 AND
5984 --
5985 -- Projekt auswählen
5986 --
5987 prj.zeige__pl_psgefanm.prj_projekte_id = """
5988 + str( prjProjekteId ) + """
5989 AND
5990 --
5991 -- Gefahrenszenario auswählen
5992 --
5993 prj.zeige__pl_psgefanm.ps_gefszenario_id = """
5994 + str( psGefszenarioId )
5995 + ";" )
5996
5997
5998
5999
6000
6001 self.__dbAbfrage__( sql )
6002
6003
6004
6005
6006
6007
6008
6009 if( ListBoxGefAnm != None ) :
6010
6011
6012 ListBoxGefAnm.loescheAlles()
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025 elif( TreeCtrlErgAnmId != None ) :
6026 TreeCtrlErgAnmId.loescheBaum()
6027
6028
6029
6030
6031
6032
6033 else :
6034 ListBoxErgVorhAnmId.loescheAlles()
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044 if( ListBoxGefAnm != None ) :
6045
6046 for i in range( self.__gibAnzZeilen__() ):
6047
6048 ListBoxGefAnm.nimmWert( wert = zk.gibIdWertNotizen( id = self.__gibWert__( i, 3 )
6049 , zusInfo = ""
6050 , wert = self.__gibWert__( i, 0 )
6051 , notizen = self.__gibWert__( i, 1 ) )
6052 , clientData = [
6053 self.__gibWert__( i, 2 )
6054
6055 , self.__gibWert__( i, 1 )
6056
6057 , self.__gibWert__( i, 3 )
6058
6059 , self.__gibWert__( i, 0 ) ] )
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082 elif( TreeCtrlErgAnmId != None ) :
6083
6084 for i in range( self.__gibAnzZeilen__() ):
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106 TreeCtrlErgAnmId.nimmWert( wert = zk.gibIdWertNotizen( id = self.__gibWert__( i, 3 )
6107 , zusInfo = ""
6108 , wert = self.__gibWert__( i, 0 )
6109 , notizen = self.__gibWert__( i, 1 ) )
6110 , wertId = ( i + 1 )
6111
6112 , dbId = self.__gibWert__( i, 3 )
6113 , wertIdVorgaenger = None
6114 , clientData = [
6115 self.__gibWert__( i, 2 )
6116
6117 , self.__gibWert__( i, 1 )
6118
6119 , self.__gibWert__( i, 3 )
6120
6121 , self.__gibWert__( i, 0 ) ] )
6122
6123
6124
6125 TreeCtrlErgAnmId.erzeugeBaum()
6126 TreeCtrlErgAnmId.markiereWert()
6127
6128
6129
6130
6131
6132
6133 else :
6134
6135 for i in range( self.__gibAnzZeilen__() ):
6136
6137
6138
6139
6140 ListBoxErgVorhAnmId.nimmWert( wert = zk.gibIdWertNotizen( id = self.__gibWert__( i, 3 )
6141 , zusInfo = ""
6142 , wert = self.__gibWert__( i, 0 )
6143 , notizen = self.__gibWert__( i, 1 ) )
6144 , clientData = [
6145 self.__gibWert__( i, 2 )
6146
6147 , self.__gibWert__( i, 1 )
6148
6149 , self.__gibWert__( i, 3 )
6150
6151 , self.__gibWert__( i, 0 ) ] )
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169 - def selektiere__psGefProt( self, TreeCtrlErg, prjProjekteId, sprSprachenId, psGefszenarioId, aspekt, prtTypId = None, prtProtokollIdVorg = None ):
6170 """
6171 Methode zum Eintragen der Sicherheitsanforderungen und Gefahrenprotokolleinträge.
6172
6173 @note: Die übergebene Baumstruktur (C{TreeCtrlErg}) wird verändert !
6174
6175 @param TreeCtrlErg: Es ist die Baumstruktur zu übergeben, die die Gefahrenprotokolleinträge aufnimmt.
6176 @type TreeCtrlErg: TreeCtrlErg
6177
6178 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
6179 @type prjProjekteId: Ganzzahl
6180
6181 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
6182 @type sprSprachenId: Ganzzahl
6183
6184 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
6185 @type psGefszenarioId: Ganzzahl
6186
6187 @param aspekt: Es ist der Aspekt (PE, SF, TP) des Protokolleintrages (C{prt.typ.aspekte}) zu übergeben.
6188 @type aspekt: Zeichenkette
6189
6190 @param prtTypId: Es ist die Datenbankidentifikationsnummer (C{prt.typ.id}) des Typs des aktuellen Protokolleintrages zu übergeben.
6191 @type prtTypId: Ganzzahl
6192
6193 @param prtProtokollIdVorg: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
6194 @type prtProtokollIdVorg: Ganzzahl(liste)
6195 """
6196
6197
6198
6199
6200 self.__dbAbfrage__( self.gibSQL_psPrtProtokoll(
6201 prjProjekteId = prjProjekteId
6202 , sprSprachenId = sprSprachenId
6203 , prtTypAspekt = aspekt
6204 , psGefszenarioId = psGefszenarioId
6205 , prtTypId = prtTypId
6206 , sqlINpsGefszenId = True
6207 , prtProtokollIdVorg = prtProtokollIdVorg
6208 , prtProtokollIdNachf = None ) )
6209
6210
6211
6212
6213
6214 if( self.__gibAnzZeilen__() == 0 ) : return
6215
6216
6217
6218
6219
6220 TreeCtrlErg.nimmHauptknoten( wert = TreeCtrlErg.HK_PE, bezHK = TreeCtrlErg.HK_PE )
6221
6222
6223
6224
6225
6226 tmpId = []
6227 for i in range( self.__gibAnzZeilen__() ):
6228
6229 if aspekt == 'PE':
6230
6231
6232
6233
6234
6235 tmp = ( str( self.__dbAbfrage__Ergebnis[i][4] ) + '-' + str( self.__gibWert__( i, 3 ) ) )
6236
6237 if( tmp in tmpId ) :
6238
6239 continue
6240
6241
6242
6243
6244
6245 tmpId.append( tmp )
6246
6247 TreeCtrlErg.nimmWert( zk.gibIdWertNotizen( id = self.__gibWert__( i, 3 )
6248 , zusInfo = ""
6249 , wert = self.__gibWert__( i, 2 )
6250 , notizen = self.__gibWert__( i, 6 ) )
6251 , wertId = None
6252 , dbId = self.__gibWert__( i, 3 )
6253 , wertIdVorgaenger = self.__gibWert__( i, 4 )
6254 , clientData = [
6255
6256 self.__gibWert__( i, 7 )
6257
6258 , self.__gibWert__( i, 5 )
6259
6260 , self.__gibWert__( i, 6 ) ] )
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6273 """
6274 Methode zum Verschieben der Strukturpunkte aus der rechten Auswahlliste (C{ListBoxSpWTitelAL.ListBox__re} - verfügbare Strukturpunkte) in die linke Auswahlliste (C{ListBoxSpWTitelAL.ListBox__li} - verwendete Strukturpunkte).
6275
6276 @note: Die übergebenen Auswahllisten (C{ListBoxSpWTitelAL}) werden verändert !
6277
6278 @requires: Mittels C{initWxListBox_strStrkt(...)} muß C{ListBoxSpWTitelAL.ListBox__re} mit gültigen Werten gefüllt werden.
6279
6280 @param ListBoxSpWTitelAL: Es ist die Auswahlliste zu übergeben, die die Abkürzungen enthält.
6281 @type ListBoxSpWTitelAL: wxPython - ListBoxSpWTitelAL
6282 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
6283 @type prjProjekteId: Ganzzahl
6284 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
6285 @type psGefszenarioId: Ganzzahl
6286 @param strNameId: Es ist die Datenbankidentifikationsnummer (C{str.name.id}) der Strukturbezeichnung zu übergeben
6287 @type strNameId: Ganzzahl
6288 """
6289
6290
6291
6292
6293
6294 ListBoxSpWTitelAL.schiebeAlleRechts()
6295
6296
6297
6298
6299
6300 str_strkt_id = self.gibListePsGefStrktId( prjProjekteId = prjProjekteId
6301 , psGefszenarioId = psGefszenarioId
6302 , strNameId = strNameId )
6303
6304
6305
6306
6307
6308 for i in range( len( str_strkt_id ) ):
6309
6310 ListBoxSpWTitelAL.schiebeLinks( str_strkt_id[i] )
6311
6312
6313
6314
6315
6316
6317
6318
6320 """
6321 Methode zur Initialisierung der (C{wx Objekte}), welche den Ursprung, das Gefahrenszenario einschließlich Notizen und das repräsentative Gefahrenszenario gültig im aktuell übergebenen Projekt, dargestellt in der aktuell übergebenen Sprache zur aktuell gültigen Gefahrenszenario-Id aufnimmt (darstellt).
6322
6323 @note: Die übergebenen (C{wx Objekte}) werden verändert !
6324
6325 @param ListBoxGefSzen: Es sind die Texteingabefelder zu übergeben, die das Gefahrenszenario / internen Notizen zum Gefahrenszenario aufnehmen.
6326 @type ListBoxGefSzen: wxPython - TextCtrlSpWTitel
6327
6328 @param ListBoxReprGefSzen: Es ist das Texteingabefeld zu übergeben, welches den Ursprung des Gefahrenszenarios aufnimmt.
6329 @type ListBoxReprGefSzen: wxPython - TextCtrl
6330 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
6331 @type psGefszenarioId: Ganzzahl
6332 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
6333 @type prjProjekteId: Ganzzahl
6334 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
6335 @type sprSprachenId: Ganzzahl
6336 """
6337
6338
6339
6340
6341 self.__dbAbfrage__( """
6342 SELECT DISTINCT
6343 -- 0
6344 COALESCE( gefszen.wgruppe, '??' ) AS gefszen
6345 , prj.zeige__pp_psgefszenario.notizen
6346 -- 2
6347 , COALESCE( reprgefszen.wgruppe, '??' ) AS reprgefszen
6348 , prj.zeige__pp_psgefszenario.spr_uebvar_id_ursp
6349 -- 4
6350 , prj.zeige__pp_psgefszenario.spr_uebvar_id
6351 , prj.zeige__pp_psgefszenario.spr_uebvar_id_reprgefszen
6352 -- 6
6353 , prj.zeige__pp_psgefszenario.id
6354 FROM
6355 prj.zeige__pp_psgefszenario
6356 LEFT OUTER JOIN spr.zeige__wgruppe AS gefszen ON (
6357 prj.zeige__pp_psgefszenario.spr_uebvar_id = gefszen.spr_uebvar_id
6358 AND
6359 --
6360 -- Sprache Auswählen
6361 --
6362 gefszen.spr_sprachen_id = """ + str( sprSprachenId ) + """ )
6363
6364 LEFT OUTER JOIN spr.zeige__wgruppe AS reprgefszen ON (
6365 prj.zeige__pp_psgefszenario.spr_uebvar_id_reprgefszen
6366 = reprgefszen.spr_uebvar_id
6367 AND
6368 --
6369 -- Sprache Auswählen
6370 --
6371 reprgefszen.spr_sprachen_id = """ + str( sprSprachenId ) + """ )
6372
6373 LEFT OUTER JOIN spr.zeige__wgruppe AS ursp ON (
6374 prj.zeige__pp_psgefszenario.spr_uebvar_id_ursp
6375 = ursp.spr_uebvar_id
6376 AND
6377 --
6378 -- Sprache Auswählen
6379 --
6380 ursp.spr_sprachen_id = """ + str( sprSprachenId ) + """ )
6381 WHERE
6382 --
6383 -- Projekt auswählen
6384 --
6385 prj.zeige__pp_psgefszenario.prj_projekte_id = """ + str( prjProjekteId ) + """
6386 AND
6387 --
6388 -- Gefahrenszenario auswählen
6389 --
6390 prj.zeige__pp_psgefszenario.ps_gefszenario_id = """
6391 + str( psGefszenarioId ) + """
6392 ;""" )
6393
6394
6395
6396
6397
6398 ListBoxGefSzen.loescheAlles()
6399 ListBoxGefSzen.nimmWert( wert = self.__gibWert__( 0, 0 ) + '\t|\t' + self.__gibWert__( 0, 1 )
6400 , clientData = [ self.__gibWert__( 0, 4 )
6401
6402 , self.__gibWert__( 0, 1 )
6403
6404 , self.__gibWert__( 0, 6 )
6405
6406 , self.__gibWert__( 0, 3 ) ] )
6407 ListBoxGefSzen.SetSelection( 0 )
6408
6409
6410
6411
6412
6413
6414 ListBoxReprGefSzen.loescheAlles()
6415 ListBoxReprGefSzen.nimmWert(
6416 wert = self.__gibWert__( 0, 2 )
6417 , clientData = [ self.__gibWert__( 0, 5 ) ] )
6418 ListBoxReprGefSzen.SetSelection( 0 )
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6430 """
6431 Methode zur Darstellung der Sicherheitsanforderungen.
6432
6433 @note: Das übergebene Baumstrukturobjekt (C{TreeCtrlErg}) wird verändert !
6434
6435 @param TreeCtrlErg: Es ist das Baumstrukturobjekt zu übergeben, welches die Sicherheitsanforderungen aufnimmt.
6436 @type TreeCtrlErg: TreeCtrlErg
6437
6438 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
6439 @type prjProjekteId: Ganzzahl
6440
6441 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
6442 @type sprSprachenId: Ganzzahl
6443
6444 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
6445 @type psGefszenarioId: Ganzzahl
6446
6447 @param prtTypId: Es ist die Datenbankidentifikationsnummer (C{prt.typ.id}) des Typs der Sicherheitsanforderung zu übergeben, die dargestellt werden soll.
6448 @type prtTypId: Ganzzahl
6449 """
6450
6451
6452
6453
6454 prtTyp = ""
6455
6456 vorgSEL = ""
6457 vorgLEFTJOIN = ""
6458 vorgORDERBY = ""
6459
6460 gefszenario = ""
6461 gefszenarioProjekt = ""
6462
6463
6464
6465
6466
6467 if( prtTypId is not None ) :
6468
6469 prtTyp = """
6470 AND
6471 --
6472 -- Typ der Sicherheitsanforderung einschränken
6473 --
6474 prj.zeige__prtprotokoll.prt__typ__id = """ + str( prtTypId ) + """
6475 """
6476
6477
6478
6479
6480 else :
6481
6482 vorgSEL = """
6483 -- (5)
6484 , COALESCE( prj.zeige__prtprotokolltabellen.prj__p_prtverbindung__prt_protokoll_id_vorg, 0 ) AS prt_prot_id_vorg"""
6485
6486 vorgLEFTJOIN = """
6487
6488 --
6489 -- Vorgänger zum Protokolleintrag anzeigen
6490 --
6491 LEFT OUTER JOIN prj.zeige__prtprotokolltabellen
6492 ON (
6493 prj.zeige__prtprotokolltabellen.prt__protokoll__id =
6494 prj.zeige__prtprotokoll.prt__protokoll__id
6495 AND
6496 prj.zeige__prtprotokolltabellen.prj__p_prtverbindung__prj_projekte_id =
6497 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id
6498 )"""
6499
6500 vorgORDERBY = """
6501 prt_prot_id_vorg
6502 ,"""
6503
6504
6505
6506
6507
6508
6509 if( psGefszenarioId is None ) :
6510
6511 gefszenarioProjekt = """
6512 AND
6513 --
6514 -- Projekt einschränken
6515 --
6516 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id = """ + str( prjProjekteId )
6517
6518
6519
6520
6521
6522 else :
6523
6524 gefszenario = """
6525 --
6526 -- Gefahrenszenrio einschränken
6527 --
6528 , prj.zeige__pl_prtpsgefszenario
6529 , prj.zeige__pl_prtpsgefszenario_le"""
6530
6531 gefszenarioProjekt = """
6532 AND
6533 --
6534 -- Gefahrenszenario einschränken
6535 --
6536 prj.zeige__prtprotokoll.prt__protokoll__id = prj.zeige__pl_prtpsgefszenario.prt_protokoll_id
6537 AND
6538 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id =
6539 prj.zeige__pl_prtpsgefszenario.prj_projekte_id
6540 AND
6541 prj.zeige__pl_prtpsgefszenario_le.prj__pl_prtpsgefszenario__id =
6542 prj.zeige__pl_prtpsgefszenario.id
6543 AND
6544 prj.zeige__pl_prtpsgefszenario.logentfernt = false
6545 AND
6546 prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id = """ + str( psGefszenarioId )
6547
6548
6549
6550
6551
6552 if( prjProjekteId is not None ) :
6553
6554 gefszenarioProjekt = gefszenarioProjekt + """
6555 AND
6556 --
6557 -- Projekt einschränken
6558 --
6559 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_projekte_id = """ + str( prjProjekteId )
6560
6561
6562
6563
6564 sql = ( """
6565 --
6566 -- Wenn die Protokolleinträge projektübergreifend angezeigt werden, treten Protokolleinträge auf, die gleichzeitig
6567 -- einen Vorgänger UND keinen Vorgänger besitzen (da in den Projekten entsprechend definiert)
6568 -- Die Bereinigung erfolgt nach dem Auslesen mittels Python-Routine
6569 --
6570 SELECT DISTINCT
6571 -- 0
6572 prj.zeige__prtprotokoll.prt__protokoll__id
6573 , COALESCE( spr.zeige__wgruppe.wgruppe, '??' ) AS psanf
6574 -- 2
6575 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__notizen
6576 , prj.zeige__prtprotokoll.prt__typ__id
6577 -- 4
6578 , prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id"""
6579 + vorgSEL + """
6580 FROM
6581 prj.zeige__prtprotokoll
6582 --
6583 -- Sicherheitsanforderung
6584 --
6585 LEFT OUTER JOIN spr.zeige__wgruppe ON (
6586 prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id =
6587 spr.zeige__wgruppe.spr_uebvar_id
6588 AND
6589 --
6590 -- Sprache Auswählen
6591 --
6592 spr.zeige__wgruppe.spr_sprachen_id = """
6593 + str( sprSprachenId ) + """
6594 )"""
6595 + vorgLEFTJOIN
6596 + gefszenario + """
6597 WHERE
6598 --
6599 -- Aspekt der Protokolleinträge auf 'Sicherheitsanforderung' einschränken
6600 --
6601 prj.zeige__prtprotokoll.prt__typ__aspekt = 'SF'"""
6602 + prtTyp
6603 + gefszenarioProjekt
6604 + """
6605 ORDER BY"""
6606 + vorgORDERBY + """
6607 prj.zeige__prtprotokoll.prt__protokoll__id
6608 ;""" )
6609
6610
6611
6612
6613
6614 self.__dbAbfrage__( sql )
6615
6616
6617
6618
6619
6620 TreeCtrlErg.loescheBaum()
6621
6622
6623
6624
6625
6626 if( self.__gibAnzZeilen__() == 0 ) : return
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638 posInWerte = []
6639
6640
6641
6642
6643
6644 werte = []
6645
6646 for i in range( self.__gibAnzZeilen__() ):
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662 istTechnSiAnf = ( self.__gibWert__( i, 3 ) in [20, 21] )
6663
6664
6665
6666
6667 if( ( prtTypId is None and self.__gibWert__( i, 5 ) == 0 )
6668 or prtTypId is not None ) :
6669
6670 posInWerte.append( self.__gibWert__( i, 0 ) )
6671
6672 werte.append([ None
6673 , self.__gibWert__( i, 1 )
6674 , self.__gibWert__( i, 2 )
6675 , istTechnSiAnf
6676 , self.__gibWert__( i, 4 )
6677 , self.__gibWert__( i, 3 ) ])
6678
6679 endeKeinVorg = i
6680
6681
6682
6683
6684
6685 else :
6686
6687
6688
6689
6690 tmpLfdNrVorgaenger = posInWerte.index( self.__gibWert__( i, 5 ) )
6691
6692
6693
6694
6695 if( self.__gibWert__( i, 0 ) in posInWerte
6696 and posInWerte.index( self.__gibWert__( i, 0 ) ) <= endeKeinVorg ) :
6697
6698 tmpPosInWerte = posInWerte.index( self.__gibWert__( i, 0 ) )
6699
6700 werte[tmpPosInWerte] = [ tmpLfdNrVorgaenger
6701 , self.__gibWert__( i, 1 )
6702 , self.__gibWert__( i, 2 )
6703 , istTechnSiAnf
6704 , self.__gibWert__( i, 4 )
6705 , self.__gibWert__( i, 3 ) ]
6706
6707 else :
6708
6709 posInWerte.append( self.__gibWert__( i, 0 ) )
6710
6711 werte.append([ tmpLfdNrVorgaenger
6712 , self.__gibWert__( i, 1 )
6713 , self.__gibWert__( i, 2 )
6714 , istTechnSiAnf
6715 , self.__gibWert__( i, 4 )
6716 , self.__gibWert__( i, 3 ) ])
6717
6718
6719
6720
6721
6722
6723 for i in range( len( posInWerte ) ):
6724
6725
6726
6727
6728 wertIdVorg = None
6729 if( werte[i][0] is not None ) :
6730 wertIdVorg = werte[i][0] + 1
6731
6732
6733
6734
6735 if( werte[i][3] ) : txtTechnSiAnf = " [T]"
6736 else : txtTechnSiAnf = " [O]"
6737
6738
6739
6740
6741 TreeCtrlErg.nimmWert( wert = zk.gibIdWertNotizen( id = posInWerte[i]
6742 , zusInfo = txtTechnSiAnf
6743 , wert = werte[i][1]
6744 , notizen = werte[i][2] )
6745 , wertId = ( i + 1 )
6746 , dbId = posInWerte[i]
6747 , wertIdVorgaenger = wertIdVorg
6748 , clientData = [ werte[i][3]
6749 , werte[i][4]
6750 , werte[i][2]
6751 , werte[i][5] ]
6752 )
6753
6754
6755
6756
6757
6758
6759 TreeCtrlErg.erzeugeBaum()
6760 TreeCtrlErg.markiereWert()
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6772 """
6773 Methode zur Selektion der Person(en) in der Auswahlliste (C{wxListBox}), welche im aktuell übergebenen Projekt für den aktuell übergebenen Strukturpunkt (links) verantwortlich ist.
6774
6775 @note: Die übergebene Auswahlliste (C{wxListBox}) wird verändert !
6776
6777 @param wxListBox: Es ist die Auswahlliste zu übergeben, die die Personen enthält.
6778 @type wxListBox: wxPython - ListBox
6779 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
6780 @type prjProjekteId: Ganzzahl
6781 @param strStrktId_li: Es ist die Datenbankidentifikationsnummer (C{str.strkt.id}) des Strukturpunktes (links) zu übergeben, dessen zugeordnete verantwortliche Person(en) selektiert werden soll(en).
6782 @type strStrktId_li: Ganzzahl
6783 """
6784
6785
6786
6787
6788 if prjProjekteId == 0:
6789 return
6790
6791
6792
6793
6794
6795 self.__dbAbfrage__( """
6796 SELECT DISTINCT
6797 prj__pp_strstrkt__prj_personen_id
6798 FROM
6799 prj.zeige__strstrkt
6800 WHERE
6801 --
6802 -- Strukturpunkt (links) auswählen
6803 --
6804 str__strkt__id = """ + str( strStrktId_li ) + """
6805 AND
6806 --
6807 -- Projekt auswählen (bezogen auf den Strukturpunkt)
6808 --
6809 prj_projekte_id = """ + str( prjProjekteId ) + """
6810 ;""" )
6811
6812 prjPersonenId = []
6813
6814 for i in range( self.__gibAnzZeilen__() ) :
6815 prjPersonenId.append( self.__gibWert__( i, 0 ) )
6816
6817 self.WxListBoxSelektieren( wxListBox, prjPersonenId )
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828 - def selektiere__prtProtokoll( self, wxCheckBoxIntern, wxCheckBoxErledigt, TCASTypPE, wxmskCtrlDatumPE, LBSpWTALBetPers, wxmskCtrlAntwDatum, wxmskCtrlTermin, LBSpWTALAntwPers, prjProjekteId, sprSprachenId, prtProtokollId ):
6829 """
6830 Methode zur Initialisierung aller Eingabefelder des Gefahrenprotokolls.
6831
6832 @note: Die übergebenen Eingabefelder werden verändert !
6833
6834 @param wxCheckBoxIntern: CheckBox zur Markierung 'Intern'
6835 @type wxCheckBoxIntern: wxPython - CheckBox
6836
6837 @param wxCheckBoxErledigt: CheckBox zur Markierung 'Erledigt'
6838 @type wxCheckBoxErledigt: wxPython - CheckBox
6839
6840 @param TCASTypPE: ComboBox aus der der Typ des Protokolleintrages entnehmbar ist
6841 @type TCASTypPE: wxPython - ComboBox
6842
6843 @param wxmskCtrlDatumPE: Datum-Eingabefeld, zur Spezifikation des Datums des Protokolleintrages
6844 @type wxmskCtrlDatumPE: wxPython - wxmskCtrl
6845
6846 @param LBSpWTALBetPers: Auswahlliste, die die beteiligten Personen aufnimmt
6847 @type LBSpWTALBetPers: ListBoxSpWTitelAL
6848
6849 @param wxmskCtrlAntwDatum: Datum-Eingabefeld, zur Spezifikation des Datums der Antwort
6850 @type wxmskCtrlAntwDatum: wxPython - wxmskCtrl
6851
6852 @param wxmskCtrlTermin: Datum-Eingabefeld, zur Spezifikation des Termins
6853 @type wxmskCtrlTermin: wxPython - wxmskCtrl
6854
6855 @param LBSpWTALAntwPers: Auswahlliste, die die angesprochenen Personen aufnimmt
6856 @type LBSpWTALAntwPers: ListBoxSpWTitelAL
6857
6858 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
6859 @type prjProjekteId: Ganzzahl
6860
6861 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
6862 @type sprSprachenId: Ganzzahl
6863
6864 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des Protokolleintrages zu übergeben.
6865 @type prtProtokollId: Ganzzahl
6866 """
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894 self.__dbAbfrage__( self.gibSQL_prjPrtProtokoll( prjProjekteId = prjProjekteId
6895 , sprSprachenId = sprSprachenId
6896 , prtProtokollId = prtProtokollId ) )
6897
6898
6899
6900
6901
6902 wxCheckBoxIntern.loescheAlles()
6903 wxCheckBoxErledigt.loescheAlles()
6904
6905 TCASTypPE.selektiereWert( 0 )
6906
6907 wxmskCtrlDatumPE.loescheAlles()
6908
6909 LBSpWTALBetPers.schiebeAlleRechts()
6910 del LBSpWTALBetPers.ListBox__li.clientData[:]
6911
6912 wxmskCtrlAntwDatum.loescheAlles()
6913 wxmskCtrlTermin.loescheAlles()
6914
6915 LBSpWTALAntwPers.schiebeAlleRechts()
6916 del LBSpWTALAntwPers.ListBox__li.clientData[:]
6917
6918
6919
6920
6921
6922 for i in range( self.__gibAnzZeilen__() ):
6923 prj_personen_id = self.__gibWert__( i, 7 )
6924
6925
6926
6927
6928 if prj_personen_id == 0 :
6929
6930
6931
6932
6933 wxCheckBoxIntern.nimmWert( wert = ( str( self.__gibWert__( i, 6 ) ) == 't' ) )
6934
6935
6936
6937
6938 wxCheckBoxErledigt.nimmWert( wert = ( str( self.__gibWert__( i, 5 ) ) == 't' ) )
6939
6940
6941
6942
6943 for k in range( TCASTypPE.gibAnzahl() ) :
6944 if( TCASTypPE.gibClientData( k )[0] == self.__gibWert__( i, 0 ) ) : break
6945
6946 TCASTypPE.selektiereWert( k )
6947
6948
6949
6950
6951 wxmskCtrlDatumPE.nimmWert( wert = self.__gibWert__( i, 3 ) )
6952
6953
6954
6955
6956
6957 else :
6958
6959
6960
6961 if str( self.__gibWert__( i, 8 ) ) == 't' :
6962 LBSpWTALBetPers.schiebeLinks( self.__gibWert__( i, 7 ) )
6963 LBSpWTALBetPers.ListBox__li.clientData.append( self.__gibWert__( i, 10 ) )
6964
6965
6966
6967
6968
6969
6970 else :
6971 wxmskCtrlAntwDatum.nimmWert( wert = self.__gibWert__( i, 4 ) )
6972
6973 wxmskCtrlTermin.nimmWert( wert = self.__gibWert__( i, 9 ) )
6974
6975 LBSpWTALAntwPers.schiebeLinks( self.__gibWert__( i, 7 ) )
6976 LBSpWTALAntwPers.ListBox__li.clientData.append( self.__gibWert__( i, 10 ) )
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986 - def selektiere__psPrtStrkt( self, TreeCtrlErg, prjProjekteId, sprSprachenId, prtProtokollId, psGefszenarioId, strNameId ):
6987 """
6988 Methode zur Darstellung der Strukturpunkte, die einem Protokolleintrag, einer Sicherheitsanforderung, Terminplaneintrag oder Gefarenszenario zugeordnet sind.
6989
6990 @note: Die übergebene Baumstruktur (C{TreeCtrlErg}) wird verändert !
6991
6992 @param TreeCtrlErg: Es ist die Baumstruktur zu übergeben, die die Strukturpunkte aufnimmt.
6993 @type TreeCtrlErg: TreeCtrlErg
6994
6995 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
6996 @type prjProjekteId: Ganzzahl
6997
6998 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
6999 @type sprSprachenId: Ganzzahl
7000
7001 @param prtProtokollId: Es ist die Datenbankidentifikationsnummer (C{prt.protokoll.id}) des aktuellen Protokolleintrages (Sicherheitsanforderung, Terminplaneintrag) zu übergeben.
7002 @type prtProtokollId: Ganzzahl
7003
7004 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
7005 @type psGefszenarioId: Ganzzahl
7006
7007 @param strNameId: Es ist die Datenbankidentifikationsnummer (C{str.name.id}) der Strukturbezeichnung zu übergeben, die dargestellt werden soll.
7008 @type strNameId: Ganzzahl
7009 """
7010
7011
7012
7013
7014 self.__dbAbfrage__( self.gibSQL_psPrtStrkt( prjProjekteId = prjProjekteId
7015 , sprSprachenId = sprSprachenId
7016 , prtProtokollId = prtProtokollId
7017 , psGefszenarioId = psGefszenarioId
7018 , strNameId = strNameId ) )
7019
7020
7021
7022
7023
7024 if( self.__gibAnzZeilen__() == 0 ) : return
7025
7026
7027
7028
7029
7030
7031 nameHauptKnoten = ''
7032 for i in range( self.__gibAnzZeilen__() ):
7033
7034
7035
7036
7037 if( nameHauptKnoten != self.__gibWert__( i, 4 ) ) :
7038
7039 nameHauptKnoten = self.__gibWert__( i, 4 )
7040
7041 TreeCtrlErg.nimmHauptknoten( wert = nameHauptKnoten
7042 , bezHK = TreeCtrlErg.HK_STR )
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054 clientData = [ self.__gibWert__( i, 0 ) ]
7055 if( prtProtokollId is not None ) :
7056 clientData.append( self.__gibWert__( i, 5 ) )
7057 else :
7058 clientData.append( None )
7059
7060 TreeCtrlErg.nimmWert( wert = self.__gibWert__( i, 1 )
7061 , wertId = None
7062 , dbId = self.__gibWert__( i, 0 )
7063 , wertIdVorgaenger = self.__gibWert__( i, 2 )
7064 , clientData = clientData )
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075 - def selektiere__psRisikomatrix( self, CBHaeufig, LBHaeufigBegr, CBGefStufe, LBGefStufeBegr, TCASRisikostufe, LBRisikoStufeBegr, psGefszenarioId, prjProjekteId, sprSprachenId, istCBHaeufigAenderung ):
7076 """
7077 Methode zum Setzen der (C{wx Objekte}), welche die Häufigkeit, die Auswirkung und das Risiko repräsentieren.
7078
7079 @note: Die übergebenen (C{wx Objekte}) werden verändert !
7080
7081 @param CBHaeufig: Es ist die Auswahlliste der Häufigkeiten des Gefahrenszenarios anzugeben
7082 @type CBHaeufig: ComboBoxErg
7083 @param LBHaeufigBegr: Es ist das Texteingabefeld zu übergeben, welches die Begründung der Häufigkeit und die internen Notizen aufnimmt.
7084 @type LBHaeufigBegr: TextCtrlErg
7085
7086 @param CBGefStufe: Es ist die Auswahlliste der Gefahrenstufen des Gefahrenszenarios anzugeben
7087 @type CBGefStufe: ComboBoxErg
7088 @param LBGefStufeBegr: Es ist das Texteingabefeld zu übergeben, welches die Begründung der Gefahrenstufen und die internen Notizen aufnimmt.
7089 @type LBGefStufeBegr: TextCtrlErg
7090
7091 @param TCASRisikostufe: Es ist das statische Textfeld mit Auswahlliste der Risikostufen anzugeben
7092 @type TCASRisikostufe: TextCtrlAuswStatisch
7093 @param LBRisikoStufeBegr: Es ist das Texteingabefeld zu übergeben, welches die Erläuterung der Risikostufe und die internen Notizen aufnimmt.
7094 @type LBRisikoStufeBegr: TextCtrlErg
7095 @param psGefszenarioId: Es ist die Datenbankidentifikationsnummer (C{ps.gefszenario.id}) des aktuellen Gefahrenszenarios zu übergeben.
7096 @type psGefszenarioId: Ganzzahl
7097 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
7098 @type prjProjekteId: Ganzzahl
7099 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
7100 @type sprSprachenId: Ganzzahl
7101
7102 @param istCBHaeufigAenderung: C{True} - Die Häufigkeit wurde geändert
7103 @type istCBHaeufigAenderung: Boolean
7104 """
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115 werte = [[ 0, None, zk.gibZk( "" ), 0, zk.gibZk( "" ), zk.gibZk( "" ), 0 ]
7116 , [ 0, None, zk.gibZk( "" ), 0, zk.gibZk( "" ), zk.gibZk( "" ), 0 ]]
7117
7118 if( istCBHaeufigAenderung ) : werte[0][0] = CBHaeufig.gibClientData()
7119 else : werte[0][0] = CBGefStufe.gibClientData()
7120
7121 abkId = str( werte[0][0] )
7122
7123
7124
7125
7126
7127 if( CBHaeufig.gibClientData() != 0 and CBGefStufe.gibClientData() != 0 ) :
7128
7129
7130
7131
7132 self.__dbAbfrage__( """
7133 --
7134 -- Risikobewertung durchführen
7135 --
7136 SELECT DISTINCT
7137 ps__abk__id_rstufe
7138 FROM
7139 ps.zeige__risikomatrix_en50126
7140 WHERE
7141 --
7142 -- Häufigkeit und Gefahrenstufe einschränken
7143 --
7144 ps__abk__id_hfg = """ + str( CBHaeufig.gibClientData() ) + """
7145 AND
7146 ps__abk__id_gstufe = """ + str( CBGefStufe.gibClientData() ) + """
7147 ;""" )
7148
7149 if( self.__hatWerte__() ) :
7150 werte[1][0] = self.__gibWert__( 0, 0 )
7151 abkId = abkId + ", " + str( werte[1][0] )
7152
7153
7154
7155
7156
7157 self.__dbAbfrage__( """
7158 --
7159 -- Begründung / Notizen auslesen
7160 --
7161 SELECT
7162 -- 0
7163 ps_abk_id
7164 , true AS istgefszen
7165 -- 2
7166 , notizen
7167 , spr_uebvar_id_zus
7168 -- 4
7169 , COALESCE( begr.wgruppe, '??' ) AS begr
7170 FROM
7171 prj.zeige__pl_psgefabk
7172 LEFT OUTER JOIN spr.zeige__wgruppe AS begr ON (
7173 spr_uebvar_id_zus = begr.spr_uebvar_id
7174 AND
7175 --
7176 -- Sprache Auswählen
7177 --
7178 begr.spr_sprachen_id = """ + str( sprSprachenId ) + """
7179 )
7180 WHERE
7181 --
7182 -- Projekt einschränken
7183 --
7184 prj_projekte_id = """ + str( prjProjekteId ) + """
7185 AND
7186 --
7187 -- Gefahrenszenario einschränken
7188 --
7189 ps_gefszenario_id = """ + str( psGefszenarioId ) + """
7190 AND
7191 --
7192 -- Abkürzung
7193 --
7194 ps_abk_id IN( """ + abkId + """ )
7195 ;""" )
7196
7197
7198
7199
7200
7201
7202
7203 for i in range( self.__gibAnzZeilen__() ) :
7204 if( self.__gibWert__( i, 0 ) == werte[0][0] ) : akt = 0
7205 else : akt = 1
7206
7207 if( werte[akt][1] == None or self.__gibWert__( i, 1 ) == True ) :
7208 werte[akt][1] = self.__gibWert__( i, 1 )
7209 werte[akt][2] = zk.gibZk( self.__gibWert__( i, 2 ) )
7210 werte[akt][3] = self.__gibWert__( i, 3 )
7211 werte[akt][4] = zk.gibZk( self.__gibWert__( i, 4 ) )
7212
7213
7214
7215
7216
7217 if( istCBHaeufigAenderung ) :
7218
7219 LBHaeufigBegr.loescheAlles()
7220 LBHaeufigBegr.nimmWert( wert = werte[0][4] + '\t|\t' + werte[0][2]
7221 , clientData = [ werte[0][3]
7222
7223 , werte[0][2] ] )
7224
7225
7226
7227 LBHaeufigBegr.SetSelection( 0 )
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242 if( not istCBHaeufigAenderung ) :
7243
7244 LBGefStufeBegr.loescheAlles()
7245 LBGefStufeBegr.nimmWert( wert = werte[0][4] + '\t|\t' + werte[0][2]
7246 , clientData = [ werte[0][3]
7247
7248 , werte[0][2] ] )
7249
7250
7251
7252 LBGefStufeBegr.SetSelection( 0 )
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268 tmpZk = TCASRisikostufe.gibWert()
7269
7270 for k in range( TCASRisikostufe.gibAnzahl() ) :
7271 if TCASRisikostufe.gibClientData( k )[0] == werte[1][0]: break
7272
7273 TCASRisikostufe.selektiereWert( k )
7274
7275 LBRisikoStufeBegr.loescheAlles()
7276 LBRisikoStufeBegr.nimmWert( wert = werte[1][4] + '\t|\t' + werte[1][2]
7277 , clientData = [ werte[1][3]
7278
7279 , werte[1][2] ] )
7280
7281
7282
7283 LBRisikoStufeBegr.SetSelection( 0 )
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7295 """
7296 Methode zum Eintragen der Zeichenkette in das Texteingabefeld (C{TextCtrlErg / TextCtrlErg}), welche der aktuelle übergebenen C{sprUebvarId} in der gewählten Sprache (C{sprSprachenId}) zugeordnet ist.
7297
7298 @note: Das übergebene Texteingabefeld (C{TextCtrlErg / TextCtrlErg}) wird verändert !
7299
7300 @param txtCtrlErg: Es ist das Texteingabefeld (C{TextCtrlErg / TextCtrlErg}) zu übergeben.
7301 @type txtCtrlErg: TextCtrlErg / TextCtrlErg
7302 @param sprUebvarId: Es ist die Datenbankidentifikationsnummer (C{spr.uebvar.id}) der Übersetzungsvariante zu übergeben.
7303 @type sprUebvarId: Ganzzahl
7304 @param sprSprachenId: Es ist die Datenbankidentifikationsnummer (C{spr.sprachen.id}) der Sprache zu übergeben.
7305 @type sprSprachenId: Ganzzahl
7306 """
7307
7308
7309
7310
7311 self.__dbAbfrage__( """
7312 SELECT COALESCE( (
7313 SELECT DISTINCT
7314 spr.zeige__wgruppe.wgruppe
7315 FROM
7316 spr.zeige__wgruppe
7317 WHERE
7318 -- Übersetzungsvariante angeben
7319 spr.zeige__wgruppe.spr_uebvar_id = """ + str( sprUebvarId ) + """
7320 AND
7321 -- Sprache Auswählen
7322 spr.zeige__wgruppe.spr_sprachen_id = """ + str( sprSprachenId ) + """
7323 ), '??' ) AS zk
7324 ;""" )
7325
7326
7327
7328
7329
7330 txtCtrlErg.nimmWert( self.__gibWert__( 0, 0 ) )
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7342 """
7343 Methode zur Selektion der Strukturpunkte in der Auswahlliste (C{wxListBox}), welche die im aktuell übergebenen Projekt, in der aktuell übergebenen Struktur (rechts) zum aktuell übergebenen Strukturpunkt (links) (darstellt).
7344 Personen werden nur dann selektiert, wenn ein Projekt (C{prjProjekteId > 0}) angegeben wurde.
7345
7346 @note: Die übergebene Auswahlliste (C{wxListBox}) wird verändert !
7347
7348 @param wxListBox: Es ist die Auswahlliste zu übergeben, die die Strukturpunkte (rechts) enthält.
7349 @type wxListBox: wxPython - ListBox
7350 @param prjProjekteId: Es ist die Datenbankidentifikationsnummer (C{prj.projekte.id}) des Projektes zu übergeben.
7351 @type prjProjekteId: Ganzzahl
7352 @param strStrktId_li: Es ist die Datenbankidentifikationsnummer (C{str.strkt.id}) des Strukturpunktes (links) zu übergeben, dessen zugeordneten Strukturpunkte (rechts) selektiert werden sollen.
7353 @type strStrktId_li: Ganzzahl
7354 @param strNameId_re: Es ist die Datenbankidentifikationsnummer (C{str.name.id}) der Strukturbezeichnung (rechts) zu übergeben, die die zugeordneten Strukturpunkte enthält.
7355 @type strNameId_re: Ganzzahl
7356 """
7357
7358
7359
7360
7361
7362 self.__dbAbfrage__( """
7363 SELECT DISTINCT
7364 prj__p_strverbindung__str_strkt_id_nachf
7365 FROM
7366 prj.zeige__strstrkt
7367 , str.strkt
7368 WHERE
7369 --
7370 -- Strukturpunkt (links) auswählen
7371 --
7372 str__strkt__id = """ + str( strStrktId_li ) + """
7373 AND
7374 --
7375 -- Strukturnamen (rechts) auswählen
7376 --
7377 prj__p_strverbindung__str_strkt_id_nachf = str.strkt.id
7378 AND
7379 str.strkt.str_name_id = """ + str( strNameId_re ) + """
7380 AND
7381 --
7382 -- Projekt auswählen
7383 --
7384 prj_projekte_id = """ + str( prjProjekteId ) + """
7385 AND
7386 prj__ppu_strstrkt__prj_projekte_id = prj__pu_strverbindung__prj_projekte_id
7387 ;""" )
7388
7389 strStrktIdNachf = []
7390
7391 for i in range( self.__gibAnzZeilen__() ) :
7392 strStrktIdNachf.append( self.__gibWert__( i, 0 ) )
7393
7394 self.WxListBoxSelektieren( wxListBox, strStrktIdNachf )
7395
7396
7397
7398
7399
7400
7401
7402
7403
7405 """
7406 Methode zum setzen eines C{PostgreSQL - Safepoints}. Mittels C{Safepoint} können Teile einer Transaktion gespeichert oder verworfen werden.
7407
7408 @param name: Es ist der Name des C{Safepoints} anzugeben. Anhand des Namens können die Datenbankoperationen, welche nach dem Setzen des C{Safepoints} durchgeführt wurden übernommen oder verworfen werden.
7409 @type name: Zeichenkette
7410 """
7411
7412
7413
7414
7415 self.dbCursor = self.dbVerbindung.cursor()
7416
7417
7418
7419
7420 self.__dbAbfrage__( 'SAVEPOINT ' + name + ';' )
7421
7422
7423
7424
7425 self.dbCursor = self.dbVerbindung.cursor()
7426
7427
7428
7429
7430
7431
7432
7433
7435 """
7436 Es werden alle Änderungen verworfen (der alte Datenbankzustand hergestellt), die laufende Transaktion beendet und eine neue Transaktion gestartet.
7437 """
7438
7439
7440
7441
7442 self.dbVerbindung.rollback()
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7454 """
7455 Methode zum Verwerfen der Änderungen, welche seit dem Setzen eines C{PostgreSQL - Safepoints} durchgeführt wurden. Mittels C{Safepoint} können Teile einer Transaktion gespeichert oder verworfen werden.
7456
7457 @param name: Es ist der Name des C{Safepoints} anzugeben.
7458 @type name: Zeichenkette
7459 """
7460
7461
7462
7463
7464 self.dbCursor = self.dbVerbindung.cursor()
7465
7466
7467
7468
7469 self.__dbAbfrage__( 'ROLLBACK TO SAVEPOINT ' + name + ';' )
7470
7471
7472
7473
7474 self.dbCursor = self.dbVerbindung.cursor()
7475
7476
7477
7478
7479
7480
7481
7483 """
7484 Methode, die alle Selektionen in der übergebenen C{wxListBox} zurücksetzt.
7485
7486 @note: Das übergebene C{wx-ListBox-Objekt} wird verändert ! Bisher gesetzte Selektionen werden zurückgesetzt.
7487
7488 @param wxListBox: Es ist das C{wx-ListBox-Objekt} zu übergeben.
7489 @type wxListBox: C{wx-ListBox-Objekt}
7490 """
7491
7492
7493
7494
7495 tmp = wxListBox.GetSelections()
7496
7497 for i in range( len( tmp ) ) :
7498 wxListBox.Deselect( tmp[i] )
7499
7500
7501
7502
7503
7504
7505
7507 """
7508 Interne Methode zur Selektion mehrerer Einträge eines C{wx-ListBox-Objektes}. Als Selektionskriterium wird der erste Eintrag im zugeordneten C{clienData-Objekt} verwendet.
7509
7510 @note: Das übergebene C{wx-ListBox-Objekt} wird verändert ! Bisher gesetzte Selektionen werden zurückgesetzt.
7511
7512 @param wxListBox: Es ist das C{wx-ListBox-Objekt} zu übergeben, welches die Einträge (einschl. gültigem C{clienData-Objekt}) enthält.
7513 @type wxListBox: C{wx-ListBox-Objekt}
7514 @param listeId: Es ist eine Liste mit Ganzzahlwerten zu übergeben, welche die Selektionskriterien enthält.
7515 @type listeId: C{Liste}
7516 """
7517
7518
7519
7520
7521 self.WxListBoxDeselektieren( wxListBox )
7522
7523
7524
7525
7526 for i in range( wxListBox.GetCount() ):
7527 if listeId.count( wxListBox.GetClientData( i )[0] ) > 0 :
7528 wxListBox.SetSelection( i )
7529