Module datenbank
[hide private]
[frames] | no frames]

Source Code for Module datenbank

   1  # -*- coding: utf-8 -*- 
   2  # 
   3  # 
   4  #    filename:  datenbank.py 
   5  # 
   6  #    version:   see wxvf.py 
   7  # 
   8  # 
   9  # ---------------------------------------------------------------------------------------- 
  10  # 
  11  # 
  12  #    Copyright (C) 2010  Michael Bellair 
  13  # 
  14  #    This file is part of wxvf. 
  15  # 
  16  #    wxvf is free software: you can redistribute it and/or modify 
  17  #    it under the terms of the GNU General Public License as published by 
  18  #    the Free Software Foundation, either version 3 of the License, or 
  19  #    (at your option) any later version. 
  20  # 
  21  #    wxvf is distributed in the hope that it will be useful, 
  22  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
  23  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  24  #    GNU General Public License for more details. 
  25  # 
  26  #    You should have received a copy of the GNU General Public License 
  27  #    along with wxvf.  If not, see <http://www.gnu.org/licenses/>. 
  28  # 
  29  #    Michael Bellair 
  30  #    Sportplatzstrasse 11 
  31  #    01259 Dresden 
  32  # 
  33  #    E-Mail:    bellair@freenet.de 
  34  #    homepage:  http://freenet-homepage.de/bellair/vf/index.html 
  35  # 
  36  # 
  37  # ---------------------------------------------------------------------------------------- 
  38  # 
  39  import os 
  40   
  41  import pgdb                     # pyGreSQL 
  42                                  # Python Database API Specification v2.0 (PEP: 249) 
  43                                  # Details: /usr/share/pyshared/pgdb.py 
  44   
  45  from universal import zk        # Zeichenketten bearbeiten 
  46   
  47   
  48  import wx 
  49   
  50  import sys                      # Programmende >sys.exit()< 
  51   
  52   
  53   
  54   
  55  # 
  56  # 
  57  # 
  58  # ---------------------------------------------------------------------------------------- 
  59  # ---------------------------------------------------------------------------------------- 
  60  # --                                    -------------------------------------------------- 
  61  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
  62  # --                                    -------------------------------------------------- 
  63  # ---------------------------------------------------------------------------------------- 
  64  # ---------------------------------------------------------------------------------------- 
  65  # 
  66  #  
  67  #       -- siehe TODO 'datenbank.py' -- 
  68  # 
  69  # 
  70  # ---------------------------------------------------------------------------------------- 
  71  # 
  72   
  73   
  74   
  75   
  76   
  77  # 
  78  # 
  79  # 
  80  # ---------------------------------------------------------------------------------------- 
  81  # ---------------------------------------------------------------------------------------- 
  82  # --                                                            -------------------------- 
  83  # --    Fehlerbehandlung (Ausnahmen) beim Datenbankzugriff      -------------------------- 
  84  # --                                                            -------------------------- 
  85  # ---------------------------------------------------------------------------------------- 
  86  # ---------------------------------------------------------------------------------------- 
  87  # 
88 -class Fehler( Exception ):
89 """ 90 Klasse zur Behandlung von Datenbankfehlermeldungen. 91 92 @keyword value: Es ist die Fehlermeldung zu übergeben. 93 @type value: Zeichenkette 94 """
95 - def __init__( self, value ):
96 self.value = "Datenbankfehlermeldung -> " + str( value )
97
98 - def __str__( self ):
99 return repr( self.value )
100 101 102 # 103 # 104 # 105 # ---------------------------------------------------------------------------------------- 106 # ---------------------------------------------------------------------------------------- 107 # 108 # 109 # 110 111 112 # 113 # 114 # 115 # ---------------------------------------------------------------------------------------- 116 # ---------------------------------------------------------------------------------------- 117 # -- ---------------------------------- 118 # -- Datenbankzugriff auf PostgreSQL-Datenbanken ---------------------------------- 119 # -- als Haupttransaktion ---------------------------------- 120 # -- ---------------------------------- 121 # ---------------------------------------------------------------------------------------- 122 # ---------------------------------------------------------------------------------------- 123 #
124 -class Datenbank:
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 # -- Datenbankverbindung herstellen ---------------------------------- 146 # ------------------------------------------------------------------------------------ 147 #
148 - def __init__( self, dbName, dbBenutzerName, dbKennwort, hostaddr ):
149 150 # 151 # -- globale Variablen bereitstellen ---------------------------------- 152 # -- -------------------------- 153 # -- Anzahl der gelesenen Spalten / Zeilen -------------------------- 154 # -- Wurden Werte zurückgegeben ? -------------------------- 155 # -- Cursorobjekt -------------------------- 156 # -- Objekt für die Abfrageergebnisse bereitstellen -------------------------- 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 # -- Datenbankverbindung entsprechend ---------- 196 # -- Python Database API Specification v2.0 (PEP: 249) ---------- 197 # 198 try: 199 # self.dbVerbindung = pgdb.connect( database = "vf" 200 self.dbVerbindung = pgdb.connect( database = dbName 201 , user = dbBenutzerName 202 , password = dbKennwort 203 , host = hostaddr 204 205 # siehe SHOW ALL, 18.1. Setting Parameters 206 207 # , client_encoding = ("utf-8",) 208 # , unicode_results = 1 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 # -- Transaktion starten -------------------------- 221 # 222 # self.__dbAbfrage__( 'BEGIN;' ) 223 224 225 # 226 # -- Tabellen, die auf >spr.uebvar.id< referenzieren auslesen ---------- 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 # -- >spr.uebersetzung.spr_uebvar_id< entfernen -------------------------- 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 # -- Datenbankabfrage -------------------------------------------------- 252 # ------------------------------------------------------------------------------------ 253 #
254 - def __dbAbfrage__( self, sql ):
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 # -- CURSOR bereitstellen -------------------------------------------------- 266 # 267 if( self.dbCursor == None ) : self.dbCursor = self.dbVerbindung.cursor() 268 269 270 # 271 # -- Datenbank abfragen, ------------------------------------------ 272 # -- Datenbankabfrageobjekt anlegen ------------------------------------------ 273 # 274 self.anzSpalten = 0 275 self.anzZeilen = 0 276 try: 277 278 # 279 # -- SQL-Abfrage ausführen ------------------------------------------ 280 # 281 self.dbCursor.execute( sql ) 282 283 284 285 # 286 # -- für SQL-Abfragen, die keine Zeilen liefern (BEGIN, ...) ---------- 287 # 288 self.hatWerte = not( self.dbCursor.description == None ) 289 if( not self.hatWerte ) : 290 return 291 292 # -- Notlösung -------------------------------------------------- 293 if( sql.find( "SAVEPOINT" ) > -1 ) : return 294 295 296 297 self.__dbAbfrage__Ergebnis = self.dbCursor.fetchall() 298 299 300 # 301 # -- für SELECT-Abfragen, die keine Zeilen liefern ------------------ 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 # -- Zeilenanzahl, Spaltenanzahl übernehmen ---------------------------------- 314 # 315 self.anzSpalten = len( self.dbCursor.description ) 316 self.anzZeilen = self.dbCursor.rowcount
317 318 319 320 # 321 # ------------------------------------------------------------------------------------ 322 # -- Spaltenanzahl zurückgeben ------------------------------------------ 323 # ------------------------------------------------------------------------------------ 324 #
325 - def __gibAnzSpalten__( self ):
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 # -- Spaltenanzahl zurückgeben ------------------------------------------ 337 # 338 return self.anzSpalten
339 340 341 342 343 # 344 # ------------------------------------------------------------------------------------ 345 # -- Zeilenanzahl zurückgeben ------------------------------------------ 346 # ------------------------------------------------------------------------------------ 347 #
348 - def __gibAnzZeilen__( self ):
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 # -- Zeilenanzahl zurückgeben ------------------------------------------ 360 # 361 return self.anzZeilen
362 363 364 365 # 366 # ------------------------------------------------------------------------------------ 367 # -- Werte zurückgeben -------------------------------------------------- 368 # ------------------------------------------------------------------------------------ 369 #
370 - def __gibWert__( self, zeilenNr, spaltenNr ):
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 # -- keine Werte vorhanden -------------------------------------------------- 389 # 390 if( not self.__hatWerte__() 391 or zeilenNr > self.__gibAnzZeilen__() 392 or spaltenNr > self.__gibAnzSpalten__() ) : 393 return "" 394 395 396 # 397 # -- NULL vorhanden ---------------------------------------------------------- 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 # -- Werte zurückgeben -------------------------------------------------- 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 # -- Die SQL-Abfrage hat Werte zurückgegeben -------------------------- 426 # ------------------------------------------------------------------------------------ 427 #
428 - def __hatWerte__( self ):
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 # -- Zeilenanzahl zurückgeben ------------------------------------------ 440 # 441 return self.hatWerte
442 443 444 445 # 446 # ------------------------------------------------------------------------------------ 447 # -- wxControlWithItems initialisieren ---------------------------------- 448 # ------------------------------------------------------------------------------------ 449 #
450 - def __initWxControlWithItems__( self, sql, eintragNull, wxObj ):
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 # Datenbank abfragen, wxObj initialisieren 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 # -- Tabellen-, Spaltenname entsprechend Fremdschlüsseldefinition ---------- 487 # -- zurückgeben ---------- 488 # ------------------------------------------------------------------------------------ 489 #
490 - def __liesTabSpFremdschluessel__( self, zielSpalte ):
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 # -- Datenbank auslesen -------------------------------------------------- 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 # -- Abfrageergebnis zusammenstellen ---------------------------------- 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 # -- Liste zurückgeben -------------------------------------------------- 530 # 531 return erg
532 533 534 535 536 # 537 # ------------------------------------------------------------------------------------ 538 # -- Die übergebene Anmerkung suchen ---------------------------------- 539 # ------------------------------------------------------------------------------------ 540 #
541 - def finde_psGefAnm( self, sprSprachenId, anmerkung ) :
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- Anmerkung wurde nicht gefunden ------------------------------------------ 595 # 596 if( self.__gibAnzZeilen__() == 0 ) : return None 597 598 599 # 600 # -- Abfrageergebnis zusammenstellen ---------------------------------- 601 # 602 erg = [] 603 for i in range( self.__gibAnzZeilen__() ): 604 605 erg.append( self.__gibWert__( i, 0 ) ) 606 607 608 # 609 # -- Id's zurückgeben -------------------------------------------------- 610 # 611 return erg
612 613 614 615 616 617 # 618 # ------------------------------------------------------------------------------------ 619 # -- Liste der Einzelwerte zu >prj.zeige__pl_prtpsgefszenario< zurückgeben -- 620 # ------------------------------------------------------------------------------------ 621 #
622 - def gibListePrjPlPrtPsGefszenarioWerte( self, prjProjekteId, prtProtokollId ):
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- Abfrageergebnis zusammenstellen ---------------------------------- 653 # 654 erg = [] 655 for i in range( self.__gibAnzZeilen__() ): 656 657 erg.append( self.__gibWert__( i, 0 ) ) 658 659 660 # 661 # -- Id's zurückgeben -------------------------------------------------- 662 # 663 return erg
664 665 666 667 668 669 670 671 # 672 # ------------------------------------------------------------------------------------ 673 # -- Liste der Einzelwerte zum Protokolleintrag zurückgeben ------------------ 674 # ------------------------------------------------------------------------------------ 675 #
676 - def gibListePrtProtokollWerte( self, prjProjekteId, sprSprachenId, prtProtokollId = None, sqlProjekteIdIN = True ):
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 704 # 705 self.__dbAbfrage__( self.gibSQL_prjPrtProtokoll( prjProjekteId = prjProjekteId 706 , sprSprachenId = sprSprachenId 707 , prtProtokollId = prtProtokollId 708 , sqlProjekteIdIN = sqlProjekteIdIN ) ) 709 710 711 # 712 # -- Liste zusammenstellen -------------------------------------------------- 713 # 714 erg = [] 715 for i in range( self.__gibAnzZeilen__() ): 716 717 erg.append( [ # -- prj.zeige__prtprotokoll.prt__typ__id 718 self.__gibWert__( i, 0 ) 719 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__notizen 720 , self.__gibWert__( i, 1 ) 721 # -- proteintrag 722 , self.__gibWert__( i, 2 ) 723 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__datuhrz 724 , self.__gibWert__( i, 3 ) 725 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__duanfrage 726 , self.__gibWert__( i, 4 ) 727 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__erledigt 728 , self.__gibWert__( i, 5 ) 729 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__intern 730 , self.__gibWert__( i, 6 ) 731 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__prj_personen_id 732 , self.__gibWert__( i, 7 ) 733 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__teilnehmer 734 , self.__gibWert__( i, 8 ) 735 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__termin 736 , self.__gibWert__( i, 9 ) 737 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__id 738 , self.__gibWert__( i, 10 ) 739 # -- prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id 740 , self.__gibWert__( i, 11 ) 741 # -- prj.zeige__prtprotokoll.prt__protokoll__id 742 , self.__gibWert__( i, 12 ) ] ) 743 744 745 # 746 # -- Lste zurückgeben -------------------------------------------------- 747 # 748 return erg
749 750 751 752 753 # 754 # ------------------------------------------------------------------------------------ 755 # -- Liste der aktuell zugeordneten gefährdeten Personen zurückgeben -- 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 # -- SQL-Abfrage ausführen -------------------------------------------------- 777 # 778 self.__dbAbfrage__( self.gibSQL_prjPlPsGefabk( prjProjekteId = prjProjekteId 779 , sprSprachenId = sprSprachenId 780 , psGefszenarioId = psGefszenarioId ) ) 781 782 783 # 784 # -- Liste zusammenstellen -------------------------------------------------- 785 # 786 erg = [] 787 for i in range( self.__gibAnzZeilen__() ): 788 typ = self.__gibWert__( i, 0 ) 789 790 # 791 # -- gefährdete Personen -------------------------- 792 # -- (es werden mehrere Werte gesetzt) -------------------------- 793 # 794 if typ == psAbkTyp : 795 796 erg.append( self.__gibWert__( i, 1 ) ) 797 continue 798 799 800 # 801 # -- Liste zurückgeben -------------------------------------------------- 802 # 803 return erg
804 805 806 807 808 809 810 # 811 # ------------------------------------------------------------------------------------ 812 # -- Liste der aktuell zugeordneten Protokolleinträge zurückgeben -- 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 # -- Datenbankabfrage ausführen ------------------------------------------ 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 # -- Liste zusammenstellen -------------------------------------------------- 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( # -- prj.zeige__pl_prtpsgefszenario.prt_protokoll_id 866 self.__gibWert__( i, 3 ) ) 867 868 869 # 870 # -- Lste zurückgeben -------------------------------------------------- 871 # 872 return erg
873 874 875 876 877 878 # 879 # ------------------------------------------------------------------------------------ 880 # -- Liste der aktuell zugeordneten gefährdeten Personen zurückgeben -- 881 # ------------------------------------------------------------------------------------ 882 #
883 - def gibListePsGefStrktId( self, prjProjekteId, psGefszenarioId, strNameId ):
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 # -- Datenbankabfrage ausführen ------------------------------------------ 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 # -- Liste zusammenstellen -------------------------------------------------- 952 # 953 erg = [] 954 for i in range( self.__gibAnzZeilen__() ): 955 956 erg.append( self.__gibWert__( i, 0 ) ) 957 958 959 # 960 # -- Liste zurückgeben -------------------------------------------------- 961 # 962 return erg
963 964 965 966 967 # 968 # ------------------------------------------------------------------------------------ 969 # -- Spaltennamen anhand der Objekt-Id (die Objekt-Id ---------- 970 # -- ist die dem wx.Window zugeordnete Identifikationsnummer) ---------- 971 # -- unter Berücksichtigung einer Projektauswahl zurückgeben ---------- 972 # ------------------------------------------------------------------------------------ 973 #
974 - def gibSpaltenName( self, wxWindowId ):
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 # -- Spaltennamen zurückgeben ------------------------------------------ 987 # 988 # 989 # -- prj - Projekte ---------------------------------------------------------- 990 # 991 if wxWindowId == -206 : return "prj.projekte.id" 992 993 # 994 # -- prt - Protokoll / prj - Projekte ---------------------------------- 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 # -- ps - Produktsicherheit / prj - Projekte ---------------------------------- 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 # -- spr - Sprachen ---------------------------------------------------------- 1048 # 1049 if wxWindowId == -208: return "spr.sprachen.id" 1050 1051 # 1052 # -- nichtbehandelte >wxWindowId< ------------------------------------------ 1053 # 1054 return ""
1055 1056 1057 1058 1059 1060 # 1061 # ------------------------------------------------------------------------------------ 1062 # -- SQL-Abfrage zur Selektion der Strukturpunkte -------------------------- 1063 # ------------------------------------------------------------------------------------ 1064 #
1065 - def gibSQL_prjPlPrtPsGefszenario( self, prjProjekteId, psGefszenarioId = None, sqlINpsGefszenId = True ):
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 # -- SQL-Abfrage zurückgeben ------------------------------------------ 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 # -- später einführen -------------------------------------------------- 1115 # 1116 # return( self.gibSQLSelect( 1117 # select = """ 1118 #SELECT DISTINCT 1119 # prt_protokoll_id""" 1120 # , tabellen = [ self.gibSQLSelect__PlPrtPsGefszenario( sqlJOIN = None 1121 # , sqlWHERE = """ 1122 #AND 1123 # prj.zeige__pl_prtpsgefszenario.ps_gefszenario_id """ + sqlNOT + """IN( """ 1124 # + str( psGefszenarioId ) + """ ) 1125 #AND 1126 # prj.zeige__pl_prtpsgefszenario.prj_projekte_id = """ + str( prjProjekteId ) ) ] ) ) 1127 1128 1129 1130 1131 1132 1133 # 1134 # ------------------------------------------------------------------------------------ 1135 # -- SQL-Abfrage zur Selektion der Abkürzungen -------------------------- 1136 # ------------------------------------------------------------------------------------ 1137 #
1138 - def gibSQL_prjPlPsGefabk( self, prjProjekteId, sprSprachenId, psGefszenarioId ):
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 # -- SQL-Abfrage zurückgeben ------------------------------------------ 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 # -- SQL-Abfrage zur Selektion der Strukturpunkte -------------------------- 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 # -- SQL-Abfrageergebnis einschränken ---------------------------------- 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 # -- SQL-Abfrage zur Selektion der Protokolleinträge ------------------ 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 # -- NOT zusammenstellen -------------------------------------------------- 1538 # 1539 NOT = "" 1540 if( not sqlProjekteIdIN ) : NOT = "NOT" 1541 1542 1543 # 1544 # -- Auf Protokolleinträge einschränken ---------------------------------- 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 # -- SQL-Abfrage zurückgeben ------------------------------------------ 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 # -- SQL-Abfrage zur Selektion der Protokolleinträge unter ------------------ 1622 # -- Berücksichtigung des Gefahrenszenarios ------------------ 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 # -- Projekt einschränken -------------------------------------------------- 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 # -- Gefahrenszenario einschränken ------------------------------------------ 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 # -- Typ des Protokolleintrages einschränken ---------------------------------- 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 # -- Vorgänger / Nachfolger einschränken ---------------------------------- 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 # -- SQL-Abfrage zurückgeben ------------------------------------------ 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 # -- SQL-Abfrage zur Selektion der Strukturpunkte -------------------------- 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 # -- SQL-Abfrageergebnis einschränken ---------------------------------- 1860 # 1861 strName = "" 1862 gefszenProt = "" 1863 selectProtokoll = "" 1864 protokollGefszenario = "" 1865 1866 1867 # 1868 # -- Strukturnamen einschränken ------------------------------------------ 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 # -- Projekt einschränken -------------------------------------------------- 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 # -- Protokolleintrag / Gefahrenszenario einschränken ------------------ 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 # -- Protokolleintrag einschränken ------------------------------------------ 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 # -- die zugeordneten Personen sollen ausgegeben werden ------------------ 1957 # -- (zusätzlich wird >spr.uebvar.id< ausgegeben) ------------------ 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 # -- Gefahrenszenario einschränken ------------------------------------------ 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 # -- SQL-Abfrage zurückgeben ------------------------------------------ 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 # -- >LEFT OUTER JOIN spr.zeige__wgruppe ...< zurückgeben ------------------ 2057 # -- ------------------ 2058 # -- -> spr.zeige__wgruppe ------------------ 2059 # -- -------------------------- 2060 # ------------------------------------------------------------------------------------ 2061 #
2062 - def gibSQL__LEFTsprZeigeWgruppe( self, spalteSprUebvarId, sprSprachenId, sqlAS = None ):
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 # -- SQL-Anweisung zusammenstellen ------------------------------------------ 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 # -- SQL-Anweisung zurückgeben ------------------------------------------ 2110 # 2111 return sql
2112 2113 2114 2115 2116 2117 2118 # 2119 # ------------------------------------------------------------------------------------ 2120 # -- -------------------------------------------------- 2121 # -- generische SQL-Abfrage -------------------------------------------------- 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 # -- tabellen[i][0] Tabellenname(n) - es können mehrere Tabellennamen -- 2144 # -- übergeben werden (z.B. bei Logbuchtabellen) -- 2145 # -- -- 2146 # -- tabellen[i][1] Es ist die Spalte der Projekt-Identifikationsnummern -- 2147 # -- der Tabelle anzugeben (schema.tabelle.prj_projekte_id) -- 2148 # -- -- 2149 # -- tabellen[i][2] Wenn mehrere Tabellennamen übergeben werden, ist hier -- 2150 # -- die Verbindung zwischen den Tabellen anzugeben -- 2151 # -- (darf None sein) -- 2152 # -- -- 2153 # -- tabellen[i][3] Es ist eine beliebige zusätzliche JOIN-Anweisung -- 2154 # -- anzugeben -- 2155 # -- (darf None sein) -- 2156 # -- -- 2157 # -- tabellen[i][4] Es ist eine beliebige zusätzliche WHERE-Anweisung -- 2158 # -- anzugeben -- 2159 # -- (darf None sein) -- 2160 # -- 2161 2162 # 2163 # -- FROM und WHERE zusammenstellen, die aus den Tabellen gebildet werden -- 2164 # 2165 sqlFROM = '' 2166 sqlWhereIntern = '' 2167 2168 for i in range( len( tabellen ) ) : 2169 2170 # 2171 # -- Tabellennamen ausgeben ------------------------------------------ 2172 # 2173 sqlWhereIntern = sqlWhereIntern + ( """ 2174 -- 2175 -- 2176 -- -- """ + tabellen[i][0] + """ --------------------------------- 2177 -- 2178 --""" ) 2179 2180 2181 # 2182 # -- Liste ---------------------------------------------------------- 2183 # 2184 sqlFROM = sqlFROM + '\n\t' 2185 if( i > 0 ) : 2186 sqlFROM = sqlFROM + ', ' 2187 sqlWhereIntern = sqlWhereIntern + '\nAND\n' 2188 2189 # 2190 # -- FROM ---------------------------------- 2191 # -- - Tabellenname übernehmen ---------------------------------- 2192 # -- - JOIN-Anweisung übernehmen ---------------------------------- 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 # -- WHERE -------------------------- 2201 # -- - Projekt-Id mit Tabelle 1 verbinden -------------------------- 2202 # -- - mehrere Tabellen verbinden -------------------------- 2203 # -- - WHERE-Anweisung übernehmen -------------------------- 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 # -- sqlWHERE ---------------------------------------------------------- 2221 # 2222 if( sqlWHERE is not None ) : sqlWhereIntern = sqlWhereIntern + sqlWHERE 2223 2224 2225 # 2226 # -- SQL-Abfrage zurückgeben ------------------------------------------ 2227 # 2228 return( select 2229 + "\nFROM" + sqlFROM 2230 + "\nWHERE" + sqlWhereIntern 2231 + ";" )
2232 2233 2234 2235 # 2236 # ------------------------------------------------------------------------------------ 2237 # -- -------------------------- 2238 # -- Liste der Tabellenwerte für >gibSQLSelect()< -------------------------- 2239 # -- -------------------------- 2240 # -- -> prj.zeige__pl_prtpsgefszenario_le -------------------------- 2241 # -- -> prj.zeige__pl_prtpsgefszenario -------------------------- 2242 # -- -------------------------- 2243 # ------------------------------------------------------------------------------------ 2244 #
2245 - def gibSQLSelect__PlPrtPsGefszenario( self, sqlJOIN = None, sqlWHERE = None ):
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 # -- Der (die) Tabellenname(n) werden immer zurückgegeben ------------------ 2261 # 2262 liste = [] 2263 liste.append( "prj.zeige__pl_prtpsgefszenario_le, prj.zeige__pl_prtpsgefszenario" ) 2264 2265 2266 # 2267 # -- Der Spaltenname der Projekt-Identifikationsnummer wird immer ---------- 2268 # -- zurückgegeben ---------- 2269 # 2270 liste.append( "prj.zeige__pl_prtpsgefszenario.prj_projekte_id" ) 2271 2272 2273 # 2274 # -- Die Vebindung zwischen beiden Tabellen zurückgegeben ------------------ 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 # -- JOIN-Anweisung übernehmen ------------------------------------------ 2284 # 2285 liste.append( sqlJOIN ) 2286 2287 2288 # 2289 # -- WHERE-Anweisung übernehmen ------------------------------------------ 2290 # 2291 liste.append( sqlWHERE ) 2292 2293 2294 # 2295 # -- Liste zurückgeben -------------------------------------------------- 2296 # 2297 return liste
2298 2299 2300 2301 # 2302 # ------------------------------------------------------------------------------------ 2303 # -- -------------------------- 2304 # -- Liste der Tabellenwerte für >gibSQLSelect()< -------------------------- 2305 # -- -------------------------- 2306 # -- -> prj.zeige__prtprotokolltabellen -------------------------- 2307 # -- prt__protokoll__id -------------------------- 2308 # -- prj__p_prtstrstrkt__id -------------------------- 2309 # -- prj__p_prtstrstrkt__notizen -------------------------- 2310 # -- prj__p_prtstrstrkt__prj_projekte_id -------------------------- 2311 # -- prj__p_prtstrstrkt__str_strkt_id -------------------------- 2312 # -- -------------------------- 2313 # ------------------------------------------------------------------------------------ 2314 #
2315 - def gibSQLSelect__PrtProtokolltabellenStrStrkt( self, sqlJOIN = None, sqlWHERE = None ):
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 # -- Der (die) Tabellenname(n) werden immer zurückgegeben ------------------ 2331 # 2332 liste = [] 2333 liste.append( "prj.zeige__prtprotokolltabellen" ) 2334 2335 2336 # 2337 # -- Der Spaltenname der Projekt-Identifikationsnummer wird immer ---------- 2338 # -- zurückgegeben ---------- 2339 # 2340 liste.append( "prj.zeige__prtprotokolltabellen.prj__p_prtstrstrkt__prj_projekte_id" ) 2341 2342 2343 # 2344 # -- Die Vebindung zwischen beiden Tabellen zurückgegeben ------------------ 2345 # 2346 liste.append( None ) 2347 2348 2349 # 2350 # -- JOIN-Anweisung übernehmen ------------------------------------------ 2351 # 2352 liste.append( sqlJOIN ) 2353 2354 2355 # 2356 # -- WHERE-Anweisung übernehmen ------------------------------------------ 2357 # 2358 liste.append( sqlWHERE ) 2359 2360 2361 # 2362 # -- Liste zurückgeben -------------------------------------------------- 2363 # 2364 return liste
2365 2366 2367 2368 # 2369 # ------------------------------------------------------------------------------------ 2370 # -- -------------------------- 2371 # -- Liste der Tabellenwerte für >gibSQLSelect()< -------------------------- 2372 # -- -------------------------- 2373 # -- -> prj.zeige__strstrkt -------------------------- 2374 # -- -------------------------- 2375 # ------------------------------------------------------------------------------------ 2376 #
2377 - def gibSQLSelect__StrStrkt( self, sqlJOIN = None, sqlWHERE = None ):
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 # -- Der (die) Tabellenname(n) werden immer zurückgegeben ------------------ 2393 # 2394 liste = [] 2395 liste.append( "prj.zeige__strstrkt" ) 2396 2397 2398 # 2399 # -- Der Spaltenname der Projekt-Identifikationsnummer wird immer ---------- 2400 # -- zurückgegeben ---------- 2401 # 2402 liste.append( "prj.zeige__strstrkt.prj_projekte_id" ) 2403 2404 2405 # 2406 # -- Die Vebindung zwischen beiden Tabellen zurückgegeben ------------------ 2407 # 2408 liste.append( None ) 2409 2410 2411 # 2412 # -- JOIN-Anweisung übernehmen ------------------------------------------ 2413 # 2414 liste.append( sqlJOIN ) 2415 2416 2417 # 2418 # -- WHERE-Anweisung übernehmen ------------------------------------------ 2419 # 2420 liste.append( sqlWHERE ) 2421 2422 2423 # 2424 # -- Liste zurückgeben -------------------------------------------------- 2425 # 2426 return liste
2427 2428 2429 2430 # 2431 # ------------------------------------------------------------------------------------ 2432 # -- wxComboBox der Tabelle 'prj.projekte' initialisieren ------------------ 2433 # ------------------------------------------------------------------------------------ 2434 #
2435 - def init_internFirma( self, wxComboBox ):
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- wxListBox der Tabelle 'prj.personen' initialisieren ------------------ 2468 # ------------------------------------------------------------------------------------ 2469 #
2470 - def init_prjPersonen( self, wxListBox ):
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 # gültige SQL-Abfrage erzeugen, 2483 # die gelesenen Werte der ComboBox zuordnen und 2484 # den ersten Eintrag auswählen 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 # -- wxComboBox der Tabelle 'prj.projekte' initialisieren ------------------ 2503 # ------------------------------------------------------------------------------------ 2504 #
2505 - def init_prjProjekte( self, wxComboBox ):
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 # gültige SQL-Abfrage erzeugen, 2518 # die gelesenen Werte der ComboBox zuordnen und 2519 # den ersten Eintrag auswählen 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 # Es ist momentan nicht sinnvoll, die projektübergreifend 2530 # gültigen Werte anzuzeigen. 2531 # , [u"-- projektübergreifend --", [0]] 2532 , [] 2533 , wxComboBox ) 2534 2535 wxComboBox.SetSelection( 0 )
2536 2537 2538 2539 # 2540 # ------------------------------------------------------------------------------------ 2541 # -- wxControlWithItems der Tabelle 'prt.typ' initialisieren ------------------ 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 # SQL-Abfrage ausführen, 2567 # die gelesenen Werte der ListBox zuordnen 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 # -- wxControlWithItems der Tabelle 'ps.abk' initialisieren ------------------ 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 # SQL-Abfrage ausführen, 2622 # die gelesenen Werte der ListBox zuordnen 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 # -- >LBGefPersonen<, >CBHaeufig<, >CBGefStufe<, >TCASRisikoStufe< ---------- 2654 # -- löschen ---------- 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 # -- Abkürzungen eintragen ---------------------------------- 2673 # 2674 # GP ... gefährdete Personen 2675 # RH ... Risikobewertung Häufigkeit 2676 # RG ... Risikobewertung Gefahrenstufe 2677 # RR ... Risikobewertung Risikostufe 2678 # 2679 for i in range( self.__gibAnzZeilen__() ): 2680 typ = self.__gibWert__( i, 2 ) 2681 clientData = [] 2682 2683 # 2684 # -- gefährdete Personen ------------------------------------------ 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 # -- Risikobewertung Häufigkeit ---------------------------------- 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 # -- Risikobewertung Gefahrenstufe ---------------------------------- 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 # -- Risikobewertung Risikostufe ---------------------------------- 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 # -- wxListBox der Tabelle 'ps.gefszenario' initialisieren ------------------ 2722 # ------------------------------------------------------------------------------------ 2723 #
2724 - def init_psGefszenario( self, wxListBox, prjProjekteId ):
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 # SQL-Abfrage ausführen, 2738 # die gelesenen Werte der ListBox zuordnen 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 # -- wxComboBox der Tabelle 'spr.sprachen' initialisieren ------------------ 2769 # ------------------------------------------------------------------------------------ 2770 #
2771 - def init_sprSprachen( self, wxComboBox ):
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 # gültige SQL-Abfrage erzeugen, 2783 # die gelesenen Werte der ComboBox zuordnen und 2784 # den ersten Eintrag auswählen 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 # -- wxComboBox der Tabelle 'spr.sprachen' initialisieren ------------------ 2803 # ------------------------------------------------------------------------------------ 2804 #
2805 - def init_sprWgruppe( self, wxListBox, sprUebvarId ):
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 # gültige SQL-Abfrage erzeugen, 2819 # die gelesenen Werte der ComboBox zuordnen und 2820 # den ersten Eintrag auswählen 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 # -- wxComboBox der Tabelle 'str.name' initialisieren ------------------ 2840 # ------------------------------------------------------------------------------------ 2841 #
2842 - def init_strName( self, wxComboBox ):
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 # gültige SQL-Abfrage erzeugen, 2854 # die gelesenen Werte der ComboBox zuordnen und 2855 # den ersten Eintrag auswählen 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 # -- wxListBox der Tabelle 'str.name' initialisieren ------------------ 2874 # ------------------------------------------------------------------------------------ 2875 #
2876 - def init_strName( self, wxComboBox ):
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- wxListBox der Tabelle 'str.strkt' initialisieren ------------------ 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 # SQL-Abfrage ausführen, 2933 # die gelesenen Werte der ListBox zuordnen 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 #
2972 - def istIdMehrfachVerwendet( self, zielSpalte, dbId ):
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 # -- Liste der Tabellenverbindungen auswählen -------------------------- 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 # -- alle Tabellen durchlaufen, die auf >zielSpalte< referenzieren ---------- 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 # -- >dbId< wurde nicht mehrfach verwendet ---------------------------------- 3024 # 3025 return False
3026 3027 3028 3029 # 3030 # ------------------------------------------------------------------------------------ 3031 # -- Änderungen übernehmen (aktuelle Transaktion schließen, ------------------ 3032 # -- neue Transaktion starten) ------------------ 3033 # ------------------------------------------------------------------------------------ 3034 #
3035 - def nimmAenderungen( self ):
3036 """ 3037 Es werden alle Änderungen in die Datenbank geschrieben, die laufende Transaktion beendet und eine neue Transaktion gestartet. 3038 """ 3039 3040 # 3041 # -- Änderungen übernehmen, Transaktion starten -------------------------- 3042 # 3043 self.dbVerbindung.commit()
3044 3045 3046 3047 3048 3049 # 3050 # ------------------------------------------------------------------------------------ 3051 # -- Alle Änderungen seit Setzen eines PostgreSQL-Safepoints übernehmen -- 3052 # ------------------------------------------------------------------------------------ 3053 #
3054 - def nimmAenderungenSafepoint( self, name ):
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 # -- Änderungen übernehmen -------------------------------------------------- 3064 # 3065 self.__dbAbfrage__( 'RELEASE SAVEPOINT ' + name + ';' )
3066 3067 3068 3069 3070 3071 # 3072 # ------------------------------------------------------------------------------------ 3073 # -- Schreibe Tabellen: ---------- 3074 # -- >prj.ppl_dokdoku<, >prj.pl_prtdokdoku<, >prj.pl_dokausgabe< ---------- 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 # -- alle Sicherheitsanforderungen-Id zusammenstellen -------------------------- 3099 # 3100 # eintragListe = TreeCtrlErg.gibZweig( eintrag = TreeCtrlErg.GetSelection() ) 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 # -- Wenn Dokument von der Sicherheitsanforderung gelöst wird: ---------- 3112 # -- Sicherheitsanforderungen in Liste der nichtzutrennenden ---------- 3113 # -- SiAnf-Id aufnehmen ---------- 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 # -- zugeordnete Dokumente auslesen ------------------------------------------ 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 # -- >prj.pl_prtdokdoku< -------------------------------------------------- 3158 # -- 3159 # -- prj_projekte_id <- prjProjekteId ------------------ 3160 # -- logentfernt <- 'false' ------------------ 3161 # -- 3162 # -- dok_doku_id <- self.__gibWert__( i, 0 ) ------------------ 3163 # -- prt_protokoll_id <- self.__gibWert__( i, 13 ) ------------------ 3164 # -- 3165 # -- nr <- self.__gibWert__( i, 2 ) ------------------ 3166 # -- spr_uebvar_id <- self.__gibWert__( i, 10 ) ------------------ 3167 # -- spr_uebvar_id_zus <- self.__gibWert__( i, 11 ) ------------------ 3168 # -- notizen <- self.__gibWert__( i, 4 ) ------------------ 3169 # 3170 # -- 3171 # -- >prj.pl_dokausgabe< -------------------------------------------------- 3172 # -- 3173 # -- prj_projekte_id <- prjProjekteId ------------------ 3174 # -- logentfernt <- 'false' ------------------ 3175 # -- 3176 # -- dok_doku_id <- self.__gibWert__( i, 0 ) ------------------ 3177 # -- 3178 # -- stand <- self.__gibWert__( i, 5 ) ------------------ 3179 # -- datum <- self.__gibWert__( i, 6 ) ------------------ 3180 # -- istfrei <- self.__gibWert__( i, 12 ) ------------------ 3181 # -- notizen <- self.__gibWert__( i, 7 ) ------------------ 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 # -- Dokumente übernehmen / trennen ------------------------------------------ 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 # -- In Tabelle >prj.pp_strstrkt< schreiben -------------------------- 3230 # ------------------------------------------------------------------------------------ 3231 #
3232 - def schreibe__PrjPpStrstrkt( self, prjProjekteId, strStrktId, prjPersonenId, sprUebvarId, fbereignis, notizen ):
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 # -- Strukturpunkte in das Projekt übernehmen -------------------------- 3258 # -- >prj.pp_strstrkt< ---------- 3259 # -- ---------- 3260 # -- ---------- 3261 # -- prj.nimm__tabwerte( 'pp_strstrkt', ARRAY[ ---------- 3262 # -- 1. prj_projekte_id ---------- 3263 # -- 2. str_strkt_id ---------- 3264 # -- 3. prj_personen_id ---------- 3265 # -- 5. spr_uebvar_id ---------- 3266 # -- 6. fbereignis ---------- 3267 # -- 8. notizen ---------- 3268 # -- ---------- 3269 # -- ---------- 3270 # -- -------------------------------------------------------------------------- 3271 # 3272 self.__dbAbfrage__( """ 3273 SELECT prj.nimm__tabwerte( 'pp_strstrkt', ARRAY[""" 3274 # 3275 # -- prj_projekte_id ---------------------------------- 3276 # 3277 + "'" + str( prjProjekteId ) + "'" 3278 # 3279 # -- str_strkt_id ------------------------------------------ 3280 # 3281 + ", '" + str( strStrktId ) + "'" 3282 # 3283 # -- prj_personen_id ---------------------------------- 3284 # 3285 + ", '" + str( prjPersonenId ) + "'" 3286 # 3287 # -- spr_uebvar_id ------------------------------------------ 3288 # 3289 + ", '" + str( sprUebvarId ) + "']);" )
3290 # 3291 # -- fbereignis ------------------------------------------ 3292 # 3293 # + ", '" + fbereignis + "'" 3294 # 3295 # -- notizen ------------------------------------------ 3296 # 3297 # + ", '" + notizen + "']);" ) 3298 3299 3300 3301 3302 3303 # 3304 # ------------------------------------------------------------------------------------ 3305 # -- Schreibe Tabellen: ---------- 3306 # -- >prj.pp_strstrkt<, >prj.p_strverbindung<, >prj.p_prtstrstrkt< ---------- 3307 # ------------------------------------------------------------------------------------ 3308 #
3309 - def schreibe__Strukturpunkte( self, TreeCtrlErg, prjProjekteId, sprSprachenId, psGefszenarioId = None ):
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 # -- Sicherheitsanforderung(en) entfernen ---------------------------------- 3328 # 3329 siAnfEntfernen = ( psGefszenarioId is not None ) 3330 3331 3332 3333 # 3334 # -- alle Sicherheitsanforderungen-Id zusammenstellen ------------------ 3335 # 3336 # eintragListe = TreeCtrlErg.gibZweig( eintrag = TreeCtrlErg.GetSelection() ) 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 # -- Sicherheitsanforderung(en) übernehmen: ---------- 3349 # -- ---------- 3350 # -- Die den Sicherheitsanforderungen-Id zugeordneten Strukturpunkte ---------- 3351 # -- projektübergreifend ermitteln ---------- 3352 # -- ---------- 3353 # -- ---------- 3354 # -- Sicherheitsanforderung(en) entfernen: ---------- 3355 # -- ---------- 3356 # -- Die Strukturpunkte kennzeichnen, die einem weiteren ---------- 3357 # -- Gefahrenszenario zugeordnet sind. ---------- 3358 # -- Diese Strukturpunkte dürfen nicht aus dem Projekt entfernt ---------- 3359 # -- werden. ---------- 3360 # -- ---------- 3361 # -- ---------- 3362 # -- ACHTUNG ! ---------- 3363 # -- ---------- 3364 # -- Strukturzuordnungen zu Dokumenten mittels >prj.p_dokstrkt< ---------- 3365 # -- werden momentan mißachtet ! ---------- 3366 # -- Strukturzuordnungen zu Gefahrenszenarien mittels ---------- 3367 # -- >prj.pl_psgefstrkt< werden implizit über ---------- 3368 # -- >prj.zeige__strstrkt.str__name__id != 2< berücksichtigt. ---------- 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 # -- Sicherheitsanforderung(en) entfernen ---------------------------------- 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 # -- SQL-Abfrage ausführen -------------------------------------------------- 3454 # 3455 self.__dbAbfrage__( self.gibSQLSelect( select = select, tabellen = tabellen, sqlWHERE = sqlWHERE ) ) 3456 3457 3458 3459 # 3460 # -- str_strkt_id <- self.__gibWert__( i, 0 ) ------------------ 3461 # -- str_strkt_id_nachf <- self.__gibWert__( i, 0 ) ------------------ 3462 # -- str_strkt_id_vorg <- self.__gibWert__( i, 1 ) ------------------ 3463 # -- prt_protokoll_id <- self.__gibWert__( i, 2 ) ------------------ 3464 # -- prj_personen_id <- self.__gibWert__( i, 3 ) ------------------ 3465 # -- spr_uebvar_id <- self.__gibWert__( i, 4 ) ------------------ 3466 # -- ------------------ 3467 # -- nicht Entfernen <- self.__gibWert__( i, 5 ) ------------------ 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 # -- Nur für Sicherheitsanforderung(en) entfernen: ---------- 3483 # -- ---------- 3484 # -- Alle hier eingetragenen Strukturpunkte werden in ---------- 3485 # -- weiteren Gefahrenszenarien bzw. weiteren Sicherheits- ---------- 3486 # -- anforderungen verwendet. ---------- 3487 # -- Sie durfen nicht aus dem Projekt entfernt werden ! ---------- 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 # -- Strukturpunkte ... ------------------------------------------ 3498 # 3499 for i in range( len( werte ) ) : 3500 3501 # 3502 # -- Nur für Sicherheitsanforderung(en) entfernen: ---------- 3503 # -- ---------- 3504 # -- Alle hier eingetragenen Strukturpunkte werden in ---------- 3505 # -- weiteren Gefahrenszenarien bzw. weiteren Sicherheits- ---------- 3506 # -- anforderungen verwendet. ---------- 3507 # -- Sie durfen nicht aus dem Projekt entfernt werden ! ---------- 3508 # 3509 if( werte[i][0] in nichtEntfernen ) : continue 3510 3511 3512 3513 # 3514 # -- 3515 # -- ... in das Projekt (auch Projekt '0') übernehmen ---------- 3516 # -- >prj.pp_strstrkt< ---------- 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 # -- Sicherheitsanforderung(en) entfernen: ------------------ 3528 # -- Strukturpunkte aus dem Projekt entfernen ------------------ 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 # -- ... miteinander verbinden, wenn Vorgänger existiert ---------- 3543 # -- >prj.p_strverbindung< ---------- 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 # -- Sicherheitsanforderung(en) entfernen: ------------------ 3555 # -- Verbindung zwischen den Strukturpunkten aus ------------------ 3556 # -- dem Projekt entfernen ------------------ 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 # -- ... mit den Protokolleinträgen verbinden ------------------ 3571 # -- >prj.p_prtstrstrkt< ------------------ 3572 # 3573 self.schreibe__psPrtStrkt( prjProjekteId = prjProjekteIdintern 3574 , prtProtokollId = werte[i][3] 3575 , strStrktId = werte[i][0] 3576 , notizen = '' ) 3577 3578 # 3579 # -- Sicherheitsanforderung(en) entfernen: ------------------ 3580 # -- Strukturpunkte von den Protokolleinträgen lösen ------------------ 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 # -- Protokolleintrag und Dokument projektspezifisch verbinden ---------- 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 # -- Protokolleintrag und Dokument verbinden ---------------------------------- 3628 # -- >prj.pl_prtdokdoku< ---------- 3629 # -- ---------- 3630 # -- ---------- 3631 # -- prj.nimm__tabwerte( 'pl_prtdokdoku', ARRAY[ ---------- 3632 # -- 1. prj_projekte_id ---------- 3633 # -- 2. dok_doku_id ---------- 3634 # -- 3. prt_protokoll_id ---------- 3635 # -- 4. nr ---------- 3636 # -- 5. spr_uebvar_id ---------- 3637 # -- 6. logentfernt ---------- 3638 # -- 7. spr_uebvar_id_zus ---------- 3639 # -- 8. notizen ---------- 3640 # -- ---------- 3641 # -- ---------- 3642 # -- -------------------------------------------------------------------------- 3643 # 3644 self.__dbAbfrage__( """ 3645 SELECT prj.nimm__tabwerte( 'pl_prtdokdoku', ARRAY[""" 3646 # 3647 # -- prj_projekte_id ---------------------------------- 3648 # 3649 + "'" + str( prjProjekteId ) + "'" 3650 # 3651 # -- dok_doku_id ------------------------------------------ 3652 # 3653 + ", '" + str( dokDokuId ) + "'" 3654 # 3655 # -- prt_protokoll_id ---------------------------------- 3656 # 3657 + ", '" + str( prtProtokollId ) + "'" 3658 # 3659 # -- nr -------------------------------------------------- 3660 # 3661 + ", '" + str( plPrtDokdoku[0] ) + "'" 3662 # 3663 # -- spr_uebvar_id ------------------------------------------ 3664 # 3665 + ", '" + str( plPrtDokdoku[1] ) + "'" 3666 # 3667 # -- logentfernt ------------------------------------------ 3668 # 3669 + ", '" + str( logentfernt ) + "'" 3670 # 3671 # -- spr_uebvar_id_zus ---------------------------------- 3672 # 3673 + ", '" + str( plPrtDokdoku[2] ) + "'" 3674 # 3675 # -- notizen ------------------------------------------ 3676 # 3677 + ", '" + str( plPrtDokdoku[3] ) + "']);" ) 3678 3679 3680 # 3681 # -- 3682 # -- Personen zuordnen -------------------------------------------------- 3683 # -- >prj.ppl_dokdoku< ---------- 3684 # -- ---------- 3685 # -- Zur vorgegebenen >dok_doku_id< werden die Personen direkt ---------- 3686 # -- aus der Datenbank gelesen und das aktuelle Projekt zugeordnet ---------- 3687 # -- ---------- 3688 # -- ---------- 3689 # -- prj.nimm__tabwerte( 'ppl_dokdoku', ARRAY[ ---------- 3690 # -- 1. prj_projekte_id ---------- 3691 # -- 2. dok_doku_id ---------- 3692 # -- 3. prj_personen_id ---------- 3693 # -- 4. logentfernt ---------- 3694 # -- 5. notizen ---------- 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 # -- prj_projekte_id ---------------------------------- 3737 # 3738 + "'" + str( prjProjekteId ) + "'" 3739 # 3740 # -- dok_doku_id ------------------------------------------ 3741 # 3742 + ", '" + str( dokDokuId ) + "'" 3743 # 3744 # -- prj_personen_id ------------------------------------------ 3745 # 3746 + ", '" + str( werte[i][0] ) + "'" 3747 # 3748 # -- logentfernt ------------------------------------------ 3749 # 3750 + ", '" + str( logentfernt ) + "'" 3751 # 3752 # -- notizen ------------------------------------------ 3753 # 3754 + ", '" + str( werte[i][1] ) + "']);" ) 3755 3756 3757 3758 # 3759 # -- 3760 # -- Ausgabe zuordnen -------------------------------------------------- 3761 # -- >prj.pl_dokausgabe< ---------- 3762 # -- ---------- 3763 # -- ---------- 3764 # -- prj.nimm__tabwerte( 'pl_dokausgabe', ARRAY[ ---------- 3765 # -- 1. prj_projekte_id ---------- 3766 # -- 2. dok_doku_id ---------- 3767 # -- 3. logentfernt ---------- 3768 # -- 4. stand ---------- 3769 # -- 5. datum ---------- 3770 # -- 6. istfrei ---------- 3771 # -- 7. notizen ---------- 3772 # -- ---------- 3773 # -- ---------- 3774 # -- >prj.pl_dokausgabe.stand< muß einen Wert haben, sonst ist ---------- 3775 # -- keine Ausgabe zugeordnet ---------- 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 # -- prj_projekte_id ---------------------------------- 3788 # 3789 + "'" + str( prjProjekteId ) + "'" 3790 # 3791 # -- dok_doku_id ------------------------------------------ 3792 # 3793 + ", '" + str( dokDokuId ) + "'" 3794 # 3795 # -- logentfernt ------------------------------------------ 3796 # 3797 + ", '" + str( logentfernt ) + "'" 3798 # 3799 # -- stand -------------------------------------------------- 3800 # 3801 + ", '" + str( plDokAusgabe[0] ) + "'" 3802 # 3803 # -- datum -------------------------------------------------- 3804 # 3805 + ", '" + str( plDokAusgabe[1] ) + "'" 3806 # 3807 # -- istfrei -------------------------------------------------- 3808 # 3809 + ", '" + str( plDokAusgabe[2] ) + "'" 3810 # 3811 # -- notizen ------------------------------------------ 3812 # 3813 + ", '" + str( plDokAusgabe[3] ) + "']);" )
3814 3815 3816 3817 # 3818 # ------------------------------------------------------------------------------------ 3819 # -- Protokolleintrag dem Gefahrenszenario zuordnen -------------------------- 3820 # ------------------------------------------------------------------------------------ 3821 #
3822 - def schreibe__prjPlPrtPsGefszenario( self, listeWerte, prjProjekteId, psGefszenarioId, logentfernt = 'false' ):
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 # -- alle >prt.protokoll.id< aus der Datenbank holen, die dem ---------- 3843 # -- Gefahrenszenario bereits zugeordnet sind ---------- 3844 # -- (nur beim Zuordnen relevant) ---------- 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 # -- Protokolleintrag und Gefahrenszenario verbinden -------------------------- 3862 # -- >prj.pl_prtpsgefszenario< ---------- 3863 # -- ---------- 3864 # -- ---------- 3865 # -- prj.nimm__tabwerte( 'pl_prtpsgefszenario', ARRAY[ ---------- 3866 # -- 1. prj_projekte_id ---------- 3867 # -- 2. ps_gefszenario_id ---------- 3868 # -- 3. prt_protokoll_id ---------- 3869 # -- 4. notizen ---------- 3870 # -- 5. logentfernt ---------- 3871 # -- 6. ... ---------- 3872 # -- ---------- 3873 # -- -------------------------------------------------------------------------- 3874 # 3875 for i in range( len( listeWerte ) ) : 3876 3877 # 3878 # -- bereits zugeordnete Protokolleinträge überspringen, ---------- 3879 # -- (beim Entfernen ist >prtProtokollIdZugeordnet< leer ) ---------- 3880 # 3881 if( listeWerte[i] in prtProtokollIdZugeordnet ) : 3882 3883 continue 3884 3885 self.__dbAbfrage__( """ 3886 SELECT prj.nimm__tabwerte( 'pl_prtpsgefszenario', ARRAY[""" 3887 # 3888 # -- prj_projekte_id ---------------------------------- 3889 # 3890 + "'" + str( prjProjekteId ) + "'" 3891 # 3892 # -- ps_gefszenario_id ---------------------------------- 3893 # 3894 + ", '" + str( psGefszenarioId ) + "'" 3895 # 3896 # -- prt_protokoll_id ---------------------------------- 3897 # 3898 + ", '" + str( listeWerte[i] ) + "'" 3899 # 3900 # -- notizen (ggf. später den tatsächlichen Wert übernehmen) -- 3901 # 3902 + ", '" + zk.gibZk( "" ) + "'" 3903 # 3904 # -- logentfernt ------------------------------------------ 3905 # 3906 + ", '" + logentfernt + "']);" )
3907 3908 3909 3910 3911 # 3912 # ------------------------------------------------------------------------------------ 3913 # -- Alle Eingabefelder des Gefahrenprotokolls in Abhängigkeit ---------- 3914 # -- von der gewählten Protokoll.-Id schreiben ---------- 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 # -- Übersetzungsvariante >spr.uebvar< bereitstellen / bearbeiten ---------- 3962 # -- ---------- 3963 # -- ---------- 3964 # -- Rechtschreibfehlerkorrekturen >istRFKorr = True< haben globale ---------- 3965 # -- Auswirkungen (werden projektübergreifend übernommen) ---------- 3966 # -- Neben den Tabellen der Sicht >spr< werden keine weiteren ---------- 3967 # -- Datenbanktabellen verändert, deshalb wird die Änderung als ---------- 3968 # -- 'bearbeitet' markiert ---------- 3969 # -- ---------- 3970 # -- ---------- 3971 # -- Es werden drei Fälle abgedeckt: ---------- 3972 # -- ............................... ---------- 3973 # -- ---------- 3974 # -- 1. projektspezifischer Protokolleintrag ---------- 3975 # -- id > 0 AND prj_personen_id = 0 AND ---------- 3976 # -- prj_projekte_id > 0 AND prt_protokoll_id > 0 ---------- 3977 # -- ---------- 3978 # -- 2. beteiligte Personen zuordnen ---------- 3979 # -- id > 0 AND prj_personen_id > 0 AND prj_projekte_id > 0 ---------- 3980 # -- AND prt_protokoll_id > 0 AND spr_uebvar_id = 0 ---------- 3981 # -- AND teilnehmer = true ---------- 3982 # -- ---------- 3983 # -- 3. der Protokolleintrag ist eine Frage / Aufgabe ---------- 3984 # -- id > 0 AND prj_personen_id > 0 AND prj_projekte_id > 0 ---------- 3985 # -- AND prt_protokoll_id > 0 AND spr_uebvar_id = 0 ---------- 3986 # -- AND teilnehmer = false AND termin IS NOT NULL ---------- 3987 # -- ---------- 3988 # -- ---------- 3989 # -- Änderungen (Zeilen) in Liste schreiben (Tabelle ---------- 3990 # -- >prj.pp_prtprotokoll<) : ---------- 3991 # -- ---------- 3992 # -- werte[ 0 id ---------- 3993 # -- 1 notizen ---------- 3994 # -- 2 datuhrz ---------- 3995 # -- 3 duanfrage ---------- 3996 # -- 4 erledigt ---------- 3997 # -- 5 intern ---------- 3998 # -- 6 prj_personen_id ---------- 3999 # -- 7 prj_projekte_id ---------- 4000 # -- 8 prt_protokoll_id ---------- 4001 # -- 9 spr_uebvar_id ---------- 4002 # -- 10 teilnehmer ---------- 4003 # -- 11 termin ] ---------- 4004 # -- ---------- 4005 # -- ---------- 4006 # -- -------------------------------------------------------------------------- 4007 # 4008 werte = [] 4009 4010 4011 # 4012 # -- 4013 # -- 1. projektspezifischer Protokolleintrag -------------------------- 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 # -- 2. Beteiligte Personen -------------------------------------------------- 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 # Personen übernehmen / überschreiben 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 # Personen hinzufügen 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 # Personen löschen 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 # -- 3. der Protokolleintrag ist eine Frage / Aufgabe ------------------ 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 # Personen übernehmen / überschreiben 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 # Personen hinzufügen 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 # Personen löschen 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 # -- >prj.pp_prtprotokoll< -------------------------------------------------- 4151 # -- ---------- 4152 # -- ---------- 4153 # -- Es werden die projektspezifisch gültigen Zeilen eingelesen. ---------- 4154 # -- Wenn werte[6] == None (aktuelle >prj_personen_id< entfernt ---------- 4155 # -- wurde) wird der zugeordnete Protokolleintrag ---------- 4156 # -- >prj.pp_prtprotokoll.id< entfernt. ---------- 4157 # -- ---------- 4158 # -- ---------- 4159 # -- -------------------------------------------------------------------------- 4160 # 4161 for i in range( len( werte ) ) : 4162 4163 # 4164 # -- 4165 # -- Protokolleinträge aus >prj.pp_prtprotokoll< entfernen ---------- 4166 # -- -- 4167 # -- -- 4168 # -- SELECT intern.loesche__zeile( 'prj.pp_prtprotokoll' -- 4169 # -- , 'prj.pp_prtprotokoll.id = werte[i][0]' ); -- 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 # -- Projektspezifische Zeilen einlesen -------------------------- 4185 # -- -- 4186 # -- -- 4187 # -- intern.nimm__zeile( 'prj.pp_prtprotokoll', ARRAY[ -- 4188 # -- 'id' -- 4189 # -- , 'notizen' -- 4190 # -- , 'datuhrz' -- 4191 # -- , 'duanfrage' -- 4192 # -- , 'erledigt' -- 4193 # -- , 'intern' -- 4194 # -- , 'prj_personen_id' -- 4195 # -- , 'prj_projekte_id' -- 4196 # -- , 'prt_protokoll_id' -- 4197 # -- , 'spr_uebvar_id' -- 4198 # -- , 'teilnehmer' -- 4199 # -- , 'termin' -- 4200 # -- ], ARRAY[...] ) -- 4201 # -- -- 4202 # -- Es werden die bisher bestehenden projektspezifischen Zeilen -- 4203 # -- überschrieben. -- 4204 # -- -- 4205 # -- -- 4206 # -- ------------------------------------------------------------------ 4207 # 4208 else : 4209 sql = "SELECT intern.nimm__zeile( 'prj.pp_prtprotokoll', ARRAY[" 4210 # 4211 # -- 0. id -------------------------------------------------- 4212 # 4213 if( werte[i][0] != None ) : sql = sql + "'id', " 4214 # 4215 # -- 1. notizen -------------------------------------------------- 4216 # 4217 if( werte[i][1] != None ) : sql = sql + "'notizen', " 4218 # 4219 # -- 2. datuhrz -------------------------------------------------- 4220 # 4221 if( werte[i][2] != None ) : sql = sql + "'datuhrz', " 4222 # 4223 # -- 3. duanfrage ------------------------------------------ 4224 # 4225 if( werte[i][3] != None ) : sql = sql + "'duanfrage', " 4226 # 4227 # -- 4. erledigt ------------------------------------------ 4228 # 4229 if( werte[i][4] != None ) : sql = sql + "'erledigt', " 4230 # 4231 # -- 5. intern -------------------------------------------------- 4232 # 4233 if( werte[i][5] != None ) : sql = sql + "'intern', " 4234 # 4235 # -- 6. prj_personen_id ------------------------------------------ 4236 # 4237 if( werte[i][6] != None ) : sql = sql + "'prj_personen_id', " 4238 # 4239 # -- 7 prj_projekte_id ------------------------------------------ 4240 # 4241 sql = sql + "'prj_projekte_id', " 4242 # 4243 # -- 8 prt_protokoll_id ---------------------------------- 4244 # 4245 sql = sql + "'prt_protokoll_id', " 4246 # 4247 # -- 9. spr_uebvar_id ------------------------------------------ 4248 # 4249 if( werte[i][9] != None ) : sql = sql + "'spr_uebvar_id', " 4250 # 4251 # -- 10. teilnehmer ------------------------------------------ 4252 # 4253 if( werte[i][10] != None ) : sql = sql + "'teilnehmer', " 4254 # 4255 # -- 11. termin -------------------------------------------------- 4256 if( werte[i][11] != None ) : sql = sql + "'termin', " 4257 4258 sql = sql + "], ARRAY['" 4259 4260 # 4261 # -- 0 id -------------------------------------------------- 4262 # 4263 if( werte[i][0] != None ) : sql = sql + str( werte[i][0] ) + """', '""" 4264 # 4265 # -- 1 notizen -------------------------------------------------- 4266 # 4267 if( werte[i][1] != None ) : sql = sql + str( werte[i][1] ) + """', '""" 4268 # 4269 # -- 2 datuhrz -------------------------------------------------- 4270 # 4271 if( werte[i][2] != None ) : sql = sql + zk.gibDatum( werte[i][2] ) + """', '""" 4272 # 4273 # -- 3 duanfrage ------------------------------------------ 4274 # 4275 if( werte[i][3] != None ) : sql = sql + zk.gibDatum( werte[i][3] ) + """', '""" 4276 # 4277 # -- 4 erledigt ------------------------------------------ 4278 # 4279 if( werte[i][4] != None ) : sql = sql + str( werte[i][4] ) + """', '""" 4280 # 4281 # -- 5 intern -------------------------------------------------- 4282 # 4283 if( werte[i][5] != None ) : sql = sql + str( werte[i][5] ) + """', '""" 4284 # 4285 # -- 6 prj_personen_id ------------------------------------------ 4286 # 4287 if( werte[i][6] != None ) : sql = sql + str( werte[i][6] ) + """', '""" 4288 # 4289 # -- 7 prj_projekte_id ------------------------------------------ 4290 # 4291 sql = sql + str( werte[i][7] ) + """', '""" 4292 # 4293 # -- 8 prt_protokoll_id ---------------------------------- 4294 # 4295 sql = sql + str( werte[i][8] ) + """', '""" 4296 # 4297 # -- 9 spr_uebvar_id ------------------------------------------ 4298 # 4299 if( werte[i][9] != None ) : sql = sql + str( werte[i][9] ) + """', '""" 4300 # 4301 # -- 10 teilnehmer ------------------------------------------ 4302 # 4303 if( werte[i][10] != None ) : sql = sql + str( werte[i][10] ) + """', '""" 4304 # 4305 # -- 11 termin -------------------------------------------------- 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 # -- Protokolleinträge verbinden ------------------------------------------ 4319 # ------------------------------------------------------------------------------------ 4320 #
4321 - def schreibe__prjPPrtVerbindung( self, prjProjekteId, prtProtokollIdVorg, prtProtokollIdNachf, trennen = False ):
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 # -- Protokolleinträge trennen ------------------------------------------ 4341 # -- >prj.p_prtverbindung< ---------- 4342 # -- ---------- 4343 # -- ---------- 4344 # -- SELECT intern.loesche__zeile( 'prj.p_prtverbindung' ---------- 4345 # -- , 'prj_projekte_id = prjProjekteId ---------- 4346 # -- AND prt_protokoll_id_nachf = prtProtokollIdNachf ---------- 4347 # -- AND prt_protokoll_id_vorg = prtProtokollIdVorg' ---------- 4348 # -- , 'true' ); ---------- 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 # -- Protokolleinträge miteinander verbinden -------------------------- 4366 # -- >prj.p_prtverbindung< ---------- 4367 # -- ---------- 4368 # -- ---------- 4369 # -- prj.nimm__tabwerte( 'p_prtverbindung', ARRAY[ ---------- 4370 # -- 1. prj_projekte_id ---------- 4371 # -- 2. prt_protokoll_id_nachf ---------- 4372 # -- 3. prt_protokoll_id_vorg ---------- 4373 # -- 4. ... ---------- 4374 # -- ---------- 4375 # -- -------------------------------------------------------------------------- 4376 # 4377 else : 4378 4379 self.__dbAbfrage__( """ 4380 SELECT prj.nimm__tabwerte( 'p_prtverbindung', ARRAY[""" 4381 # 4382 # -- prj_projekte_id ---------------------------------- 4383 # 4384 + "'" + str( prjProjekteId ) + "'" 4385 # 4386 # -- prt_protokoll_id_nachf ---------------------------------- 4387 # 4388 + ", '" + str( prtProtokollIdNachf ) + "'" 4389 # 4390 # -- prt_protokoll_id_vorg ---------------------------------- 4391 # 4392 + ", '" + str( prtProtokollIdVorg ) + "']);" )
4393 4394 4395 4396 4397 4398 4399 4400 # 4401 # ------------------------------------------------------------------------------------ 4402 # -- Protokolleintrag dem Gefahrenszenario zuordnen -------------------------- 4403 # -- Protokolleintrag vom Gefahrenszenario trennen -------------------------- 4404 # ------------------------------------------------------------------------------------ 4405 #
4406 - def schreibePrtProtokollVerbindung( self, TreeCtrlErg, prjProjekteId, prtProtokollIdVorg, sprSprachenId = None, psGefszenarioId = None ):
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 # -- Zweig der selektierten Protokolleinträge bestimmen ------------------ 4428 # 4429 eintragListe = TreeCtrlErg.gibZweig() 4430 4431 4432 # 4433 # -- 4434 # -- Verbindung zwischen den Protokolleinträgen aufheben ------------------ 4435 # -- >prj.p_prtverbindung< ------------------ 4436 # -- ------------------ 4437 # 4438 if( prtProtokollIdVorg is None ) : 4439 4440 # 4441 # -- Es sind keine Verbindungen zwischen den SiAnf zu trennen -- 4442 # 4443 if( len( eintragListe ) == 1 4444 and ( TreeCtrlErg.GetItemParent( eintragListe[0] ) == TreeCtrlErg.GetRootItem() ) ) : 4445 4446 return 4447 4448 # 4449 # -- DB-Id des Vorgängers ermitteln, ggf. >eintragListe< kürzen -- 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 # -- Protokolleinträge ermitteln, die demselben Vorgänger in einem -- 4464 # -- weiteren Gefahrenszenario des Projektes zugeordnet sind -- 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 # -- Datenbank aktualisieren ------------------------------------------ 4490 # 4491 for i in range( len( eintragListe ) ) : 4492 4493 # 4494 # -- Protokolleinträge die demselben Vorgänger in einem ---------- 4495 # -- weiteren Gefahrenszenario des Projektes zugeordnet ---------- 4496 # -- sind, nicht trennen ---------- 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 # -- Verbindung im Projekt löschen ---------------------------------- 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 # -- Ende, Verbindung aufheben ---------------------------------- 4521 # 4522 return 4523 4524 4525 # 4526 # -- 4527 # -- Protokolleinträge miteinander verbinden -------------------------- 4528 # -- >prj.p_prtverbindung< ---------- 4529 # -- ---------- 4530 # -- ---------- 4531 # -- prj.nimm__tabwerte( 'p_prtverbindung', ARRAY[ ---------- 4532 # -- 1. prj_projekte_id ---------- 4533 # -- 2. prt_protokoll_id_nachf ---------- 4534 # -- 3. prt_protokoll_id_vorg ---------- 4535 # -- 4. ... ---------- 4536 # -- ---------- 4537 # -- -------------------------------------------------------------------------- 4538 # 4539 for i in range( len( eintragListe ) ) : 4540 4541 # 4542 # -- Technische Maßnahmen überspringen -------------------------- 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 # -- Protokolleintrag dem Projekt zuordnen ---------------------------------- 4561 # ------------------------------------------------------------------------------------ 4562 #
4563 - def schreibe__prjPPPrtProtokoll( self, listeWerte, prjProjekteId, psGefszenarioId = None ):
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 # -- Verbindung zwischen Protokolleintrag und Projekt aufheben ---------- 4580 # -------------------------------------------------------------------------------- 4581 # 4582 if( psGefszenarioId is not None ) : 4583 4584 # 4585 # -- alle >prt.protokoll.id< aus der Datenbank holen, die im ---------- 4586 # -- Projekt einem weiteren Gefahrenszenario zugeordnet sind ---------- 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 # -- Datenbank aktualisieren ------------------------------------------ 4601 # 4602 for i in range( len( listeWerte ) ) : 4603 4604 4605 # 4606 # -- Protokolleinträge die im Projekt einem weiteren ---------- 4607 # -- Gefahrenszenario zugeordnet sind, nicht trennen ---------- 4608 # 4609 if( listeWerte[i][0] in prtProtokollIdNichtTrennen ) : continue 4610 4611 4612 # 4613 # -- Dem vom Projekt zu lösenden Protokolleintrag das ---------- 4614 # -- Projekt '0' zuordnen ---------- 4615 # 4616 self.__dbAbfrage__( """ 4617 SELECT prj.nimm__tabwerte( 'pp_prtprotokoll', ARRAY[""" 4618 # 4619 # -- prj_projekte_id -------------------------- 4620 # 4621 + "'" + str( prjProjekteId ) + "'" 4622 # 4623 # -- prt_protokoll_id -------------------------- 4624 # 4625 + ", '" + str( listeWerte[i][0] ) + "'" 4626 # 4627 # -- spr_uebvar_id ---------------------------------- 4628 # 4629 + ", '" + str( listeWerte[i][2] ) + "'" 4630 # 4631 # -- datuhrz ---------------------------------- 4632 # -- intern ---------------------------------- 4633 # -- erledigt ---------------------------------- 4634 # 4635 + ", to_char( clock_timestamp(), 'YYYY-MM-DD HH24:MI:SS'), 'true', 'false'" 4636 # 4637 # -- notizen ---------------------------------- 4638 # 4639 + ", '" + str( listeWerte[i][3] ) + "']);" ) 4640 4641 # 4642 # -- Protokolleintrag im Projekt löschen -------------------------- 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 # -- Ende: Protokolleintrag vom Projekt trennen ------------------ 4654 # 4655 return 4656 4657 4658 4659 4660 # 4661 # -------------------------------------------------------------------------------- 4662 # -- Protokolleintrag in das Projekt übernehmen -------------------------- 4663 # -------------------------------------------------------------------------------- 4664 # 4665 4666 # 4667 # -- alle >prt.protokoll.id< aus der Datenbank holen, die dem ---------- 4668 # -- Projekt bereits zugeordnet sind ---------- 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 # -- Protokolleintrag dem Projekt zuordnen ---------------------------------- 4682 # -- >prj.pp_prtprotokoll< ---------- 4683 # -- ---------- 4684 # -- ---------- 4685 # -- prj.nimm__tabwerte( 'pp_prtprotokoll', ARRAY[ ---------- 4686 # -- 1. prj_projekte_id ---------- 4687 # -- 2. prt_protokoll_id ---------- 4688 # -- 3. spr_uebvar_id ---------- 4689 # -- 4. datuhrz ---------- 4690 # -- 5. intern ---------- 4691 # -- 6. erledigt ---------- 4692 # -- 7. notizen ]... ---------- 4693 # -- ---------- 4694 # -- -------------------------------------------------------------------------- 4695 # 4696 for i in range( len( listeWerte ) ) : 4697 4698 # 4699 # -- bereits zugeordnete Protokolleinträge überspringen, ---------- 4700 # -- (beim Entfernen ist >prtProtokollIdZugeordnet< leer ) ---------- 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 # -- prj_projekte_id ---------------------------------- 4710 # 4711 + "'" + str( prjProjekteId ) + "'" 4712 # 4713 # -- prt_protokoll_id ---------------------------------- 4714 # 4715 + ", '" + str( listeWerte[i][0] ) + "'" 4716 # 4717 # -- spr_uebvar_id ---------------------------------- 4718 # 4719 + ", '" + str( listeWerte[i][2] ) + "'" 4720 # 4721 # -- datuhrz ------------------------------------------ 4722 # -- intern ------------------------------------------ 4723 # -- erledigt ------------------------------------------ 4724 # 4725 + ", to_char( clock_timestamp(), 'YYYY-MM-DD HH24:MI:SS'), 'true', 'false'" 4726 # 4727 # -- notizen ------------------------------------------ 4728 # 4729 + ", '" + str( listeWerte[i][3] ) + "']);" )
4730 4731 4732 4733 4734 4735 4736 # 4737 # ------------------------------------------------------------------------------------ 4738 # -- Protokolleintrag mittels UPDATE aktualisieren -------------------------- 4739 # ------------------------------------------------------------------------------------ 4740 #
4741 - def schreibe__prjPPPrtProtokoll__UPDATE( self, sprUebvarId, whereId ):
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 # -- Datenbank aktualisieren ------------------------------------------ 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 # -- Protokolleinträge verbinden ------------------------------------------ 4766 # ------------------------------------------------------------------------------------ 4767 #
4768 - def schreibe__prjPPPrtProtokoll_Pers( self, listeWerte, prjProjekteId, prtProtokollId, prjPersonenId ):
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 # -- Protokolleintrag dem Projekt zuordnen ---------------------------------- 4791 # -- >prj.pp_prtprotokoll< ---------- 4792 # -- ---------- 4793 # -- ---------- 4794 # -- prj.nimm__tabwerte( 'pp_prtprotokoll_pers', ARRAY[ ---------- 4795 # -- 'prj_projekte_id' ---------- 4796 # -- , 'prt_protokoll_id' ---------- 4797 # -- , 'teilnehmer' ---------- 4798 # -- , 'prj_personen_id' ---------- 4799 # -- , 'termin' ---------- 4800 # -- , 'duanfrage' ---------- 4801 # -- , 'notizen' ] ---------- 4802 # -- ---------- 4803 # -- -------------------------------------------------------------------------- 4804 # 4805 self.__dbAbfrage__( """ 4806 SELECT prj.nimm__tabwerte( 'pp_prtprotokoll_pers', ARRAY[""" 4807 # 4808 # -- prj_projekte_id ---------------------------------- 4809 # 4810 + "'" + str( prjProjekteId ) + "'" 4811 # 4812 # -- prt_protokoll_id ---------------------------------- 4813 # 4814 + ", '" + str( prtProtokollId ) + "'" 4815 # 4816 # -- teilnehmer ---------------------------------- 4817 # 4818 + ", '" + str( listeWerte[0] ) + "'" 4819 # 4820 # -- prj_personen_id ---------------------------------- 4821 # 4822 + ", '" + str( prjPersonenId ) + "'" 4823 # 4824 # -- termin ------------------------------------------ 4825 # 4826 # + ", to_char( clock_timestamp(), 'YYYY-MM-DD HH24:MI:SS')" 4827 + ", " + listeWerte[1] 4828 # 4829 # -- duanfrage ------------------------------------------ 4830 # 4831 # + ", to_char( clock_timestamp(), 'YYYY-MM-DD HH24:MI:SS')" 4832 + ", " + listeWerte[2] 4833 # 4834 # -- notizen ------------------------------------------ 4835 # 4836 + ", '" + str( listeWerte[3] ) + "']);" )
4837 4838 4839 4840 4841 4842 # 4843 # ------------------------------------------------------------------------------------ 4844 # -- Tabelle >prj.pl_psgefabk< schreiben ---------------------------------- 4845 # ------------------------------------------------------------------------------------ 4846 #
4847 - def schreibe__prjPlPsGefsabk( self, listeWerte, prjProjekteId, psGefszenarioId, logentfernt = 'false' ):
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 # -- Projektspezifische Zeilen einlesen -------------------------- 4867 # -- -- 4868 # -- -- 4869 # -- prj.nimm__tabwerte( 'pl_psgefabk', ARRAY[ -- 4870 # -- 1. prj_projekte_id -- 4871 # -- 2. ps_gefszenario_id -- 4872 # -- 3. logentfernt -- 4873 # -- 4. ps_abk_id -- 4874 # -- 5. spr_uebvar_id_zus -- 4875 # -- 6. notizen -- 4876 # -- 7. ... ] ) -- 4877 # -- -- 4878 # -- -- 4879 # -- ------------------------------------------------------------------ 4880 # 4881 self.__dbAbfrage__( """ 4882 SELECT prj.nimm__tabwerte( 'pl_psgefabk', ARRAY[""" 4883 # 4884 # -- prj_projekte_id ---------------------------------- 4885 # 4886 + "'" + str( prjProjekteId ) + "'" 4887 # 4888 # -- ps_gefszenario_id ---------------------------------- 4889 # 4890 + ", '" + str( psGefszenarioId ) + "'" 4891 # 4892 # -- logentfernt ------------------------------------------ 4893 # 4894 + ", '" + logentfernt + "'" 4895 # 4896 # -- ps_abk_id ------------------------------------------ 4897 # 4898 + ", '" + str( listeWerte[0] ) + "'" 4899 # 4900 # -- spr_uebvar_id_zus 4901 # 4902 + ", '" + str( listeWerte[1] ) + "'" 4903 # 4904 # -- notizen ---------------------------------- 4905 # 4906 + ", '" + unicode( listeWerte[2] ) + "']);" )
4907 4908 4909 4910 4911 4912 # 4913 # ------------------------------------------------------------------------------------ 4914 # -- Tabelle >prj.pl_psgefanm< schreiben ---------------------------------- 4915 # ------------------------------------------------------------------------------------ 4916 #
4917 - def schreibe__PrjPlPsGefAnm( self, listeWerte, prjProjekteId, psGefszenarioId, logentfernt = 'false' ):
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 # -- Projektspezifische Zeilen einlesen ---------------------------------- 4939 # -- ---------- 4940 # -- ---------- 4941 # -- prj.nimm__tabwerte( 'pl_psgefanm', ARRAY[ ---------- 4942 # -- 1. prj_projekte_id ---------- 4943 # -- 2. ps_gefszenario_id ---------- 4944 # -- 3. logentfernt ---------- 4945 # -- 4. ps_anmerkung_id ---------- 4946 # -- 5. spr_uebvar_id ---------- 4947 # -- 6. notizen ---------- 4948 # -- 7. ... ] ) ---------- 4949 # -- ---------- 4950 # -- Momentan wird nicht geprüft, ob die aktuell einzulesende ---------- 4951 # -- projektspezifische Zeile in der Datenbank die aktuell gül- ---------- 4952 # -- tige Zeile ist (einfacherer Algorithmus). Das kann später ---------- 4953 # -- verbessert werden. ---------- 4954 # -- ---------- 4955 # -- ---------- 4956 # -- -------------------------------------------------------------------------- 4957 # 4958 self.__dbAbfrage__( """ 4959 SELECT prj.nimm__tabwerte( 'pl_psgefanm', ARRAY[""" 4960 # 4961 # -- prj_projekte_id ------------------------------------------ 4962 # 4963 + "'" + str( prjProjekteId ) + "'" 4964 # 4965 # -- ps_gefszenario_id ------------------------------------------ 4966 # 4967 + ", '" + str( psGefszenarioId ) + "'" 4968 # 4969 # -- logentfernt -------------------------------------------------- 4970 # 4971 + ", '" + logentfernt + "'" 4972 # 4973 # -- ps_anmerkung_id 4974 # 4975 + ", '" + str( listeWerte[0] ) + "'" 4976 # 4977 # -- spr_uebvar_id 4978 # 4979 + ", '" + str( listeWerte[1] ) + "'" 4980 # 4981 # -- notizen ------------------------------------------ 4982 # 4983 + ", '" + listeWerte[2].encode('utf-8') + "']);" )
4984 4985 4986 4987 4988 # 4989 # ------------------------------------------------------------------------------------ 4990 # -- Tabelle >prj.pl_psgefstrkt< schreiben ---------------------------------- 4991 # ------------------------------------------------------------------------------------ 4992 #
4993 - def schreibe__PrjPlPsGefStrkt( self, listeWerte, prjProjekteId, psGefszenarioId, logentfernt = 'false' ):
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 # -- Projektspezifische Zeilen einlesen ---------------------------------- 5014 # -- ---------- 5015 # -- ---------- 5016 # -- prj.nimm__tabwerte( 'pl_psgefstrkt', ARRAY[ ---------- 5017 # -- 1. prj_projekte_id ---------- 5018 # -- 2. ps_gefszenario_id ---------- 5019 # -- 3. str_strkt_id ---------- 5020 # -- 4. notizen ---------- 5021 # -- 5. logentfernt ---------- 5022 # -- 6. ... ] ) ---------- 5023 # -- ---------- 5024 # -- ---------- 5025 # -- Momentan wird nicht geprüft, ob die aktuell einzulesende ---------- 5026 # -- projektspezifische Zeile in der Datenbank die aktuell gül- ---------- 5027 # -- tige Zeile ist (einfacherer Algorithmus). Das kann später ---------- 5028 # -- verbessert werden. ---------- 5029 # -- ---------- 5030 # -- ---------- 5031 # -- -------------------------------------------------------------------------- 5032 # 5033 self.__dbAbfrage__( """ 5034 SELECT prj.nimm__tabwerte( 'pl_psgefstrkt', ARRAY[""" 5035 # 5036 # -- prj_projekte_id ---------------------------------- 5037 # 5038 + "'" + str( prjProjekteId ) + "'" 5039 # 5040 # -- ps_gefszenario_id ---------------------------------- 5041 # 5042 + ", '" + str( psGefszenarioId ) + "'" 5043 # 5044 # -- str_strkt_id ------------------------------------------ 5045 # 5046 + ", '" + str( listeWerte[0] ) + "'" 5047 # 5048 # -- notizen ------------------------------------------ 5049 # 5050 + ", '" + listeWerte[1].encode('utf-8') + "'" 5051 # 5052 # -- logentfernt ------------------------------------------ 5053 # 5054 + ", '" + logentfernt + "']);" )
5055 5056 5057 5058 5059 # 5060 # ------------------------------------------------------------------------------------ 5061 # -- Tabelle >ps.gefszenario< -------------------------- 5062 # -- >prj.pp_psgefszenario< schreiben -------------------------- 5063 # ------------------------------------------------------------------------------------ 5064 #
5065 - def schreibe__PrjPpPsGefszenario( self, listeGefszen, spr_uebvar_id_reprgefszen, prjProjekteId, sprSprachenId, psGefszenarioId ):
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 # -- Projektspezifische Zeilen einlesen ---------------------------------- 5089 # -- ---------- 5090 # -- ---------- 5091 # -- intern.nimm__zeile( 'prj.pp_psgefszenario', ARRAY[ ---------- 5092 # -- 'id' ---------- 5093 # -- , 'notizen' ---------- 5094 # -- , 'prj_personen_id' ---------- 5095 # -- , 'prj_projekte_id' ---------- 5096 # -- , 'ps_gefszenario_id' ---------- 5097 # -- , 'spr_uebvar_id' ---------- 5098 # -- , 'spr_uebvar_id_reprgefszen' ---------- 5099 # -- , 'spr_uebvar_id_ursp' ---------- 5100 # -- ], ARRAY[...] ) ---------- 5101 # -- ---------- 5102 # -- Es werden die bisher bestehenden projektspezifischen Zeilen ---------- 5103 # -- überschrieben. ---------- 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 # -- spr_uebvar_id_ursp ---------- 5128 # 5129 + str( listeGefszen[3] ) + """']);""" )
5130 5131 5132 5133 5134 5135 # 5136 # ------------------------------------------------------------------------------------ 5137 # -- Zugeordnete Dokumente selektieren ---------------------------------- 5138 # -- Sicht >prj.zeige__dokdoku< selektieren ---------------------------------- 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 # -- Protokolleintrag und Strukturpunkt trennen -------------------------- 5164 # -- >prj.p_prtstrstrkt< ---------- 5165 # -- ---------- 5166 # -- ---------- 5167 # -- SELECT intern.loesche__zeile( 'prj.p_prtstrstrkt' ---------- 5168 # -- , 'prj.p_prtstrstrkt.id = xxx' ---------- 5169 # -- , 'true' ); ---------- 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 # -- Protokolleintrag und Strukturpunkt verbinden -------------------------- 5185 # -- >prj.p_prtstrstrkt< ---------- 5186 # -- ---------- 5187 # -- ---------- 5188 # -- prj.nimm__tabwerte( 'p_prtstrstrkt', ARRAY[ ---------- 5189 # -- 1. prj_projekte_id ---------- 5190 # -- 2. prt_protokoll_id ---------- 5191 # -- 3. str_strkt_id ---------- 5192 # -- 4. notizen ---------- 5193 # -- ---------- 5194 # -- ---------- 5195 # -- -------------------------------------------------------------------------- 5196 # 5197 else : 5198 5199 # 5200 # -- Verbindung herstellen ------------------------------------------ 5201 # 5202 self.__dbAbfrage__( """ 5203 SELECT prj.nimm__tabwerte( 'p_prtstrstrkt', ARRAY[""" 5204 # 5205 # -- prj_projekte_id ---------------------------------- 5206 # 5207 + "'" + str( prjProjekteId ) + "'" 5208 # 5209 # -- prt_protokoll_id ---------------------------------- 5210 # 5211 + ", '" + str( prtProtokollId ) + "'" 5212 # 5213 # -- str_strkt_id ------------------------------------------ 5214 # 5215 + ", '" + str( strStrktId ) + "']);" )
5216 # 5217 # -- notizen ------------------------------------------ 5218 # 5219 # + ", '" + notizen + "']);" ) 5220 5221 5222 5223 5224 # 5225 # ------------------------------------------------------------------------------------ 5226 # -- In Tabelle >prj.p_strverbindung< schreiben -------------------------- 5227 # ------------------------------------------------------------------------------------ 5228 #
5229 - def schreibe__prjPStrverbindung( self, prjProjekteId, strStrktIdVorg, strStrktIdNachf, fbtor, notizen ):
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 # -- Verbindung zwischen den Strukturpunkten herstellen ------------------ 5252 # -- ---------- 5253 # -- prj.nimm__tabwerte( 'p_strverbindung', ARRAY[ ---------- 5254 # -- 1. prj_projekte_id ---------- 5255 # -- 2. str_strkt_id_vorg ---------- 5256 # -- 3. str_strkt_id_nachf ---------- 5257 # -- 4. fbtor ---------- 5258 # -- 5. notizen ] ) ---------- 5259 # -- ---------- 5260 # -- -------------------------------------------------------------------------- 5261 # 5262 self.__dbAbfrage__( """ 5263 SELECT * FROM prj.nimm__tabwerte( 'p_strverbindung', ARRAY[""" 5264 # 5265 # -- prj_projekte_id ---------------------------------- 5266 # 5267 + "'" + str( prjProjekteId ) + "'" 5268 # 5269 # -- str_strkt_id_vorg ---------------------------------- 5270 # 5271 + ", '" + str( strStrktIdVorg ) + "'" 5272 # 5273 # -- str_strkt_id_nachf ---------------------------------- 5274 # 5275 + ", '" + str( strStrktIdNachf ) + "']);" )
5276 5277 5278 5279 5280 # 5281 # ------------------------------------------------------------------------------------ 5282 # -- In Tabelle >prt.protokoll< schreiben ---------------------------------- 5283 # ------------------------------------------------------------------------------------ 5284 #
5285 - def schreibe__PrtProtokoll( self, prtTypId, notizen = zk.gibZk( "" ) ):
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 # -- Protokolleintrag anlegen ------------------------------------------ 5299 # -- >prt.protokoll< ------------------ 5300 # -- ------------------ 5301 # -- ------------------ 5302 # -- intern.nimm__zeile( 'prt.protokoll', ARRAY[ ------------------ 5303 # -- 'id' ------------------ 5304 # -- , 'prt_typ_id' ------------------ 5305 # -- , 'notizen' ------------------ 5306 # -- ], ARRAY[...] ) ------------------ 5307 # -- ------------------ 5308 # -- ------------------ 5309 # -- -------------------------------------------------------------------------- 5310 # 5311 self.__dbAbfrage__( """ 5312 SELECT intern.nimm__zeile( 'prt.protokoll', ARRAY[ 'id', 'prt_typ_id', 'notizen' ], ARRAY[ """ 5313 # 5314 # -- id ------------------------------------------ 5315 # 5316 + "CAST( intern.gib__naechsteid( 'prt.protokoll' ) AS varchar )" 5317 # 5318 # -- prt_typ_id ------------------------------------------ 5319 # 5320 + ", '" + str( prtTypId ) + "'" 5321 # 5322 # -- notizen ------------------------------------------ 5323 # 5324 + ", '" + notizen.encode('utf-8') + "']);" ) 5325 5326 5327 # 5328 # -- >spr.uebvar.id< zurückgeben ------------------------------------------ 5329 # 5330 return self.__gibWert__( 0, 0 )
5331 5332 5333 5334 5335 5336 # 5337 # ------------------------------------------------------------------------------------ 5338 # -- Wortgruppe übernehmen -------------------------------------------------- 5339 # ------------------------------------------------------------------------------------ 5340 #
5341 - def schreibe__sprNimmWgruppe( self, sprUebvarId, wortgruppe = zk.gibZk( "" ), sprSprachenId = 1 ):
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- >spr.uebvar.id< zurückgeben ------------------------------------------ 5374 # 5375 return self.__gibWert__( 0, 0 )
5376 5377 5378 5379 5380 5381 # 5382 # ------------------------------------------------------------------------------------ 5383 # -- Übersetzungsvariante übernehmen ---------------------------------- 5384 # ------------------------------------------------------------------------------------ 5385 #
5386 - def schreibe__sprUebvar( self, ListBoxErg, sprUebvarId, istMehrfachVerw ):
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 # -- Hilfsübersetzung einfügen ------------------------------------------ 5406 # -- ---------- 5407 # -- Es wird zur >spr.uebvar.id == spr_uebvar_id__akt< in der ---------- 5408 # -- Sprache >spr.sprachen.id == 0 < (die nicht in der Projekt- ---------- 5409 # -- arbeit verwendet werden soll) eine Hilfsübersetzung ---------- 5410 # -- eingefügt ---------- 5411 # -- ---------- 5412 # -- ---------- 5413 # -- -------------------------------------------------------------------------- 5414 # 5415 spr_uebvar_id__akt = sprUebvarId 5416 5417 if( istMehrfachVerw ) : 5418 5419 # self.__dbAbfrage__( """ 5420 # -- 5421 # -- Hilfsübersetzung einfügen 5422 # -- 5423 # SELECT spr.nimm__wgruppe( 'beliebige Zeichenkette', '0', '0' ) 5424 # ;""" ) 5425 # 5426 # spr_uebvar_id__akt = self.__gibWert__( 0, 0 ) 5427 5428 spr_uebvar_id__akt = self.schreibe__sprNimmWgruppe( sprUebvarId = 0 5429 , wortgruppe = 'beliebige Zeichenkette' 5430 , sprSprachenId = 0 ) 5431 5432 else : 5433 5434 # self.__dbAbfrage__( """ 5435 # -- 5436 # -- Hilfsübersetzung einfügen 5437 # -- 5438 # SELECT spr.nimm__wgruppe( 'beliebige Zeichenkette', '0', '""" 5439 # + str( spr_uebvar_id__akt ) + """' ); 5440 # ;""" ) 5441 5442 self.schreibe__sprNimmWgruppe( sprUebvarId = spr_uebvar_id__akt 5443 , wortgruppe = 'beliebige Zeichenkette' 5444 , sprSprachenId = 0 ) 5445 5446 5447 5448 # 5449 # -- Keine Mehrfachverwendung der Übersetzungsvariante ------------------ 5450 # -- ---------- 5451 # -- Die aktuellen Übersetzungen innerhalb der zu korrigierenden ---------- 5452 # -- Übersetzungsvariante löschen (somit läßt sich leicht mittels ---------- 5453 # -- >spr.nimm__wgruppe(...)< die Korrektur durchführen ---------- 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 # -- Übersetzungsvarianten einlesen ------------------------------------------ 5473 # -- ---------- 5474 # -- ---------- 5475 # -- -------------------------------------------------------------------------- 5476 # 5477 for i in range( ListBoxErg.GetCount() ) : 5478 5479 # self.__dbAbfrage__( """ 5480 # -- 5481 # -- Übersetzungsvariante übernehmen 5482 # -- 5483 # SELECT spr.nimm__wgruppe( '""" + ListBoxErg.gibWert( i ).encode('utf-8') + """' 5484 # , '""" + str( ListBoxErg.gibClientData( i )[0] ) + """' 5485 # , '""" + str( spr_uebvar_id__akt ) + """' ) 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 # -- Hilfsübersetzung entfernen ------------------------------------------ 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 # -- aktuelle >spr.uebvar.id< zurückgeben ---------------------------------- 5513 # 5514 return spr_uebvar_id__akt
5515 5516 5517 5518 5519 # 5520 # ------------------------------------------------------------------------------------ 5521 # -- Zugeordnete Dokumente selektieren ---------------------------------- 5522 # -- Sicht >prj.zeige__dokdoku< selektieren ---------------------------------- 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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- es sind keine Dokumente darzustellen ---------------------------------- 5563 # 5564 if( self.__gibAnzZeilen__() == 0 ) : return 5565 5566 5567 5568 # 5569 # -- Hauptknoten übernehmen -------------------------------------------------- 5570 # 5571 # SiAnfStrktDok.TreeCtrlErg__Id.wxObjekt.nimmHauptknoten( wert = SiAnfStrktDok.TreeCtrlErg__Id.wxObjekt.HK_DOK 5572 # , bezHK = SiAnfStrktDok.TreeCtrlErg__Id.wxObjekt.HK_DOK ) 5573 TreeCtrlErg.nimmHauptknoten( wert = TreeCtrlErg.HK_DOK 5574 , bezHK = TreeCtrlErg.HK_DOK ) 5575 5576 5577 5578 # 5579 # -- Dokumente übernehmen -------------------------------------------------- 5580 # 5581 for i in range( self.__gibAnzZeilen__() ): 5582 5583 # 5584 # -- Dokumentinformationen ------------------------------------------ 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 # -- Notizen -------------------------------------------------- 5606 # 5607 notizen = ( self.__gibWert__( i, 1 ) 5608 + '\t|\t' + self.__gibWert__( i, 4 ) ) 5609 5610 5611 # 5612 # -- Dokument-Id -------------------------------------------------- 5613 # 5614 # SiAnfStrktDok.TreeCtrlErg__Id.wxObjekt.nimmWert( wert = zk.gibIdWertNotizen( 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 # -- prj.pl_prtdokdoku.notizen 5624 # -- prj.pl_prtdokdoku.nr 5625 # -- prj.pl_prtdokdoku.spr_uebvar_id 5626 # -- prj.pl_prtdokdoku.spr_uebvar_id_zus 5627 # -- 5628 # -- prj.pl_dokausgabe.notizen 5629 # -- prj.pl_dokausgabe.datum 5630 # -- prj.pl_dokausgabe.istfrei 5631 # -- prj.pl_dokausgabe.stand 5632 # -- 5633 # -- dok__doku__aspekt 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 # -- die ausgewählten Einträge in >wxComboBox<, -------------------------- 5651 # -- Sicht >prj.zeige__pl_psgefabk< selektieren -------------------------- 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 # -- SQL-Abfrage ausführen -------------------------------------------------- 5690 # 5691 self.__dbAbfrage__( self.gibSQL_prjPlPsGefabk( prjProjekteId = prjProjekteId 5692 , sprSprachenId = sprSprachenId 5693 , psGefszenarioId = psGefszenarioId ) ) 5694 5695 5696 5697 5698 5699 # 5700 # -- >LBGefSpWTALPersonen<, >CBHaeufig<, >CBGefStufe<, ------------------ 5701 # -- >TCASRisikoStufe< --- Selektionen zurücksetzen ------------------ 5702 # -- >LBHaeufigBegr<, >LBGefStufeBegr<, ------------------ 5703 # -- >LBRisikoStufeBegr< --- alte Einträge löschen ------------------ 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 # -- Selektionen setzen -------------------------------------------------- 5721 # 5722 # GP ... gefährdete Personen 5723 # RH ... Risikobewertung Häufigkeit 5724 # RG ... Risikobewertung Gefahrenstufe 5725 # RR ... Risikobewertung Risikostufe 5726 # 5727 for i in range( self.__gibAnzZeilen__() ): 5728 typ = self.__gibWert__( i, 0 ) 5729 5730 # 5731 # -- gefährdete Personen -------------------------- 5732 # -- (es werden mehrere Werte gesetzt) -------------------------- 5733 # 5734 if typ == 'GP': 5735 5736 LBGefSpWTALPersonen.schiebeLinks( self.__gibWert__( i, 1 ) ) 5737 5738 # 5739 # -- Abk-Id speichern, um Stand vor der Benutzeränderung zu erfassen 5740 # 5741 LBGefSpWTALPersonen.ListBox__li.clientData.append( self.__gibWert__( i, 1 ) ) 5742 5743 continue 5744 5745 5746 # 5747 # -- 1.) Risikobewertung Häufigkeit (im GUI angezeigt) -- 5748 # -- Notizen zur Häufigkeit (im GUI angezeigt) -- 5749 # -- -- 5750 # -- Es wird nur ein Wert gesetzt ! -- 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 # -- >notizen< ------------------------- 5763 , self.__gibWert__( i, 3 ) ] ) 5764 LBHaeufigBegr.SetSelection( 0 ) 5765 5766 continue 5767 5768 5769 # 5770 # -- 1.) Risikobewertung Gefahrenstufe (im GUI angezeigt) -- 5771 # -- Notizen zur Gefahrenstufe (im GUI angezeigt) -- 5772 # -- -- 5773 # -- Es wird nur ein Wert gesetzt ! -- 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 # -- >notizen< ------------------------- 5787 , self.__gibWert__( i, 3 ) ] ) 5788 LBGefStufeBegr.SetSelection( 0 ) 5789 5790 continue 5791 5792 5793 # 5794 # -- 1.) Risikobewertung Risikostufe (im GUI angezeigt) -- 5795 # -- Notizen zur Risikostufe (im GUI angezeigt) -- 5796 # -- -- 5797 # -- Es wird nur ein Wert gesetzt ! -- 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 # -- >notizen< ------------------------- 5810 , self.__gibWert__( i, 3 ) ] ) 5811 LBRisikoStufeBegr.SetSelection( 0 ) 5812 5813 continue
5814 5815 5816 5817 5818 # 5819 # ------------------------------------------------------------------------------------ 5820 # -- die ausgewählten Einträge in >ListBoxSpWTitelSync<, ------------------ 5821 # -- Sicht >prj.zeige__pl_psgefanm< selektieren ------------------ 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 # -- universeller Teil der SQL-Abfrage ---------------------------------- 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 # -- Risikoanalyse -- 5900 # -- Formular zum Bearbeiten der Anmerkungen ('Anmerkungen/Int. Notizen') -- 5901 # 5902 # if( ListBoxGefAnm != None or TreeCtrlErgAnmId != None or TCSpWTitel != None ) : 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 # -- Formular zum Bearbeiten der Anmerkungen ('Anmerkungen/Int. Notizen') 5925 # 5926 # if( TCSpWTitel != None ) : 5927 # sql = sql + ( """ 5928 # AND 5929 # -- 5930 # -- Anmerkung auswählen 5931 # -- 5932 # prj.zeige__pl_psgefanm.ps_anmerkung_id = """ 5933 # + str( psAnmerkungId ) ) 5934 5935 # 5936 # -- SQL-Abfrage abschließen 5937 # 5938 sql = sql + ";" 5939 5940 5941 5942 # 5943 # -- Formular zum Bearbeiten der Anmerkungen ('Vorh. Anmerkungen') ---------- 5944 # 5945 else : 5946 # 5947 # -- Die Anmerkungen zum Gefahrenszenario anzeigen ------------------ 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 # -- SQL-Abfrage zusammenbauen ---------------------------------- 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 # -- Datenbankabfrage ausführen ------------------------------------------ 6000 # 6001 self.__dbAbfrage__( sql ) 6002 6003 6004 6005 # 6006 # -- Anmerkungen / Notizen löschen ------------------------------------------ 6007 # -- (Risikoanalyse) ------------------------------------------ 6008 # 6009 if( ListBoxGefAnm != None ) : 6010 # ListBoxGefAnm.ListBox__li.loescheAlles() 6011 # ListBoxGefAnm.ListBox__re.loescheAlles() 6012 ListBoxGefAnm.loescheAlles() 6013 6014 # 6015 # -- Anmerkungen / Notizen löschen ------------------------------------------ 6016 # -- Formular zum Bearbeiten der Anmerkungen ---------------------------------- 6017 # 6018 # elif( TCSpWTitel != None ) : 6019 # TCSpWTitel.TextCtrl__li.nimmWert( wert = zk.gibZk( "" ) ) 6020 # TCSpWTitel.TextCtrl__re.nimmWert( wert = zk.gibZk( "" ) ) 6021 6022 # 6023 # -- Liste der Anmerkungen-Id löschen ---------------------------------- 6024 # 6025 elif( TreeCtrlErgAnmId != None ) : 6026 TreeCtrlErgAnmId.loescheBaum() 6027 6028 6029 # 6030 # -- Liste der vorhandenen Anmerkungen löschen -------------------------- 6031 # -- Formular zum Bearbeiten der Anmerkungen -------------------------- 6032 # 6033 else : 6034 ListBoxErgVorhAnmId.loescheAlles() 6035 # ListBoxSpWTSVorhAnm.ListBox__li.loescheAlles() 6036 # ListBoxSpWTSVorhAnm.ListBox__re.loescheAlles() 6037 6038 6039 # 6040 # -- Anmerkungen (im GUI angezeigt) -------------------------- 6041 # -- Notizen zu den Anmerkungen (im GUI angezeigt) -------------------------- 6042 # -- (Risikoanalyse) -------------------------- 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 = [ # -- spr.uebvar.id --------------------- 6053 self.__gibWert__( i, 2 ) 6054 # -- notizen --------------------------- 6055 , self.__gibWert__( i, 1 ) 6056 # -- ps.anmerkung.id ------------------- 6057 , self.__gibWert__( i, 3 ) 6058 # -- anmerkung ------------------------- 6059 , self.__gibWert__( i, 0 ) ] ) 6060 6061 6062 # ListBoxGefAnm.ListBox__li.nimmWert( wert = str( self.__gibWert__( i, 0 ) ) 6063 # , clientData = [ self.__gibWert__( i, 3 ) 6064 # , self.__gibWert__( i, 2 ) ] ) 6065 # 6066 # ListBoxGefAnm.ListBox__re.nimmWert( wert = str( self.__gibWert__( i, 1 ) ) ) 6067 6068 # 6069 # -- Anmerkungen / Notizen übernehmen ---------------------------------- 6070 # -- Formular zum Bearbeiten der Anmerkungen ---------------------------------- 6071 # 6072 # elif( TCSpWTitel != None ) : 6073 # TCSpWTitel.TextCtrl__li.nimmWert( 6074 # wert = self.__gibWert__( 0, 0 ) 6075 # , clientData = self.__gibWert__( 0, 2 ) ) 6076 # 6077 # TCSpWTitel.TextCtrl__re.nimmWert( wert = self.__gibWert__( 0, 1 ) ) 6078 6079 # 6080 # -- Liste der Anmerkungen-Id übernehmen ---------------------------------- 6081 # 6082 elif( TreeCtrlErgAnmId != None ) : 6083 6084 for i in range( self.__gibAnzZeilen__() ): 6085 6086 # TreeCtrlErgAnmId.nimmWert( wert = str( self.__gibWert__( i, 3 ) ) 6087 # , clientData = [ None 6088 # , str( self.__gibWert__( i, 0 ) ) ] ) 6089 6090 6091 # TreeCtrlErg.nimmWert( wert = zk.gibIdWertNotizen( id = posInWerte[i] 6092 # , zusInfo = txtTechnSiAnf 6093 # , wert = werte[i][1] 6094 # , notizen = werte[i][2] ) 6095 # , wertId = ( i + 1 ) 6096 # , dbId = posInWerte[i] 6097 # , wertIdVorgaenger = wertIdVorg 6098 # , clientData = [ werte[i][3] 6099 # , werte[i][4] 6100 # , werte[i][2]] 6101 ## # -- wird für die Bearbeitung der >spr_uebvar_id< benötigt 6102 ## , 'prj.pp_prtprotokoll'] 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 # -- ps.anmerkung.id -------------------------- 6112 , dbId = self.__gibWert__( i, 3 ) 6113 , wertIdVorgaenger = None 6114 , clientData = [ # -- spr.uebvar.id ----------- 6115 self.__gibWert__( i, 2 ) 6116 # -- notizen ----------------- 6117 , self.__gibWert__( i, 1 ) 6118 # -- ps.anmerkung.id --------- 6119 , self.__gibWert__( i, 3 ) 6120 # -- anmerkung --------------- 6121 , self.__gibWert__( i, 0 ) ] ) 6122 # 6123 # -- Baum anzeigen ---------------------------------------------------------- 6124 # 6125 TreeCtrlErgAnmId.erzeugeBaum() 6126 TreeCtrlErgAnmId.markiereWert() 6127 6128 6129 # 6130 # -- Liste der Vorhandenen Anmerkungen übernehmen -------------------------- 6131 # -- Formular zum Bearbeiten der Anmerkungen -------------------------- 6132 # 6133 else : 6134 6135 for i in range( self.__gibAnzZeilen__() ): 6136 6137 # ListBoxErgVorhAnmId.nimmWert( wert = str( self.__gibWert__( i, 3 ) ) ) 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 = [ # -- spr.uebvar.id --------------------- 6145 self.__gibWert__( i, 2 ) 6146 # -- notizen --------------------------- 6147 , self.__gibWert__( i, 1 ) 6148 # -- ps.anmerkung.id ------------------- 6149 , self.__gibWert__( i, 3 ) 6150 # -- anmerkung ------------------------- 6151 , self.__gibWert__( i, 0 ) ] )
6152 6153 6154 6155 # ListBoxSpWTSVorhAnm.ListBox__li.nimmWert( wert = str( self.__gibWert__( i, 0 ) ) ) 6156 # ListBoxSpWTSVorhAnm.ListBox__re.nimmWert( wert = str( self.__gibWert__( i, 1 ) ) ) 6157 6158 6159 6160 6161 # 6162 # ------------------------------------------------------------------------------------ 6163 # -- die ausgelesenen Einträge in >ListBoxSpWTitelSync< bzw. ------------------ 6164 # -- >ListBoxSpWTitelUnabh< darstellen ------------------ 6165 # -- ------------------ 6166 # -- Sicht >prj.zeige__pl_prtpsgefszenario< auslesen ------------------ 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 # -- Datenbankabfrage ausführen ------------------------------------------ 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 # -- es sind keine Protokolleinträge darzustellen -------------------------- 6213 # 6214 if( self.__gibAnzZeilen__() == 0 ) : return 6215 6216 6217 # 6218 # -- Hauptknoten übernehmen -------------------------------------------------- 6219 # 6220 TreeCtrlErg.nimmHauptknoten( wert = TreeCtrlErg.HK_PE, bezHK = TreeCtrlErg.HK_PE ) 6221 6222 6223 # 6224 # -- Protokolleinträge eintragen ---------------------------------- 6225 # 6226 tmpId = [] 6227 for i in range( self.__gibAnzZeilen__() ): 6228 6229 if aspekt == 'PE': 6230 6231 # 6232 # -- prüfen ob die Kombination aus Protokoll-Id (Vorgänger) ---------- 6233 # -- und Protokoll-Id bereits eingelesen wurden ---------- 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 # -- Werte übernehmen 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 = [ # -- analog >selektiere__psPrtProtokoll()< 6255 # -- prj.pp_prtprotokoll.id --- 6256 self.__gibWert__( i, 7 ) 6257 # -- spr.uebvar.id --------------------- 6258 , self.__gibWert__( i, 5 ) 6259 # -- notizen --------------------------- 6260 , self.__gibWert__( i, 6 ) ] )
6261 6262 6263 6264 6265 6266 # 6267 # ------------------------------------------------------------------------------------ 6268 # -- die ausgewählten Einträge in >ListBoxSpWTitelAL<, ------------------ 6269 # -- Sicht >prj.zeige__pl_psgefstrkt< selektieren ------------------ 6270 # ------------------------------------------------------------------------------------ 6271 #
6272 - def selektiere__psGefStrkt( self, ListBoxSpWTitelAL, prjProjekteId, psGefszenarioId, strNameId ) :
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 # -- Alle bisher ausgewählten Einträge nach rechts schieben ------------------ 6293 # 6294 ListBoxSpWTitelAL.schiebeAlleRechts() 6295 6296 6297 # 6298 # -- Strukturpunkte auslesen -------------------------------------------------- 6299 # 6300 str_strkt_id = self.gibListePsGefStrktId( prjProjekteId = prjProjekteId 6301 , psGefszenarioId = psGefszenarioId 6302 , strNameId = strNameId ) 6303 6304 6305 # 6306 # -- Einträge von rechts nach links verschieben -------------------------- 6307 # 6308 for i in range( len( str_strkt_id ) ): 6309 6310 ListBoxSpWTitelAL.schiebeLinks( str_strkt_id[i] )
6311 6312 6313 6314 # 6315 # ------------------------------------------------------------------------------------ 6316 # -- wxListBox der Tabelle 'ps.gefszenario' initialisieren ------------------ 6317 # ------------------------------------------------------------------------------------ 6318 #
6319 - def selektiere__psGefszenario( self, ListBoxGefSzen, ListBoxReprGefSzen, psGefszenarioId, prjProjekteId, sprSprachenId ):
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- 1.) Gefahrenszenario / Notizen (im GUI angezeigt) ------------------ 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 # -- notizen --------------------------- 6402 , self.__gibWert__( 0, 1 ) 6403 # -- prj.pp_psgefszenario.id ----------- 6404 , self.__gibWert__( 0, 6 ) 6405 # -- spr_uebvar_id_ursp ---------------- 6406 , self.__gibWert__( 0, 3 ) ] ) 6407 ListBoxGefSzen.SetSelection( 0 ) 6408 6409 6410 6411 # 6412 # -- 2.) repräsentatives Gefahrenszenario (im GUI angezeigt) ---------- 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 # -- Sicherheitsanforderungen selektieren -------------------------- 6426 # -- Sicht >prj.zeige__prtprotokoll< selektieren -------------------------- 6427 # ------------------------------------------------------------------------------------ 6428 #
6429 - def selektiere__psPrtProtokoll( self, TreeCtrlErg, prjProjekteId, sprSprachenId, psGefszenarioId, prtTypId ):
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 # -- SQL-Abfrageergebnis einschränken ---------------------------------- 6453 # 6454 prtTyp = "" 6455 6456 vorgSEL = "" 6457 vorgLEFTJOIN = "" 6458 vorgORDERBY = "" 6459 6460 gefszenario = "" 6461 gefszenarioProjekt = "" 6462 6463 6464 # 6465 # -- Typ der SiAnf einschränken ------------------------------------------ 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 # -- Vorgänger berücksichtigen ------------------------------------------ 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 # -- Projekt einschränken -------------------------------------------------- 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 # -- Gefahrenszenario einschränken ------------------------------------------ 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 # -- Gefahrenszenario und Projekt einschränken -------------------------- 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 # -- SQL-Abfrage zusammenstellen ------------------------------------------ 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 # -- SQL-Abfrage ausführen -------------------------------------------------- 6613 # 6614 self.__dbAbfrage__( sql ) 6615 6616 6617 # 6618 # -- Alle Einträge löschen -------------------------------------------------- 6619 # 6620 TreeCtrlErg.loescheBaum() 6621 6622 6623 # 6624 # -- es sind keine SiAnf darzustellen ---------------------------------- 6625 # 6626 if( self.__gibAnzZeilen__() == 0 ) : return 6627 6628 6629 # 6630 # -- SiAnf aussortieren, die gleichzeitig einen Vorgänger ------------------ 6631 # -- UND keinen Vorgänger besitzen, wenn KEIN Typ der ------------------ 6632 # -- SiAnf ausgewählt wurde ------------------ 6633 # 6634 6635 # 6636 # -- 0.) prt.protokoll.id 6637 # 6638 posInWerte = [] 6639 6640 # -- 0.) lfd. Nr. des Vorgängers im TreeCtrl 6641 # -- 1.) prj.zeige__prtprotokoll.prj__pp_prtprotokoll__spr_uebvar_id 6642 # -- 2.) prj.zeige__prtprotokoll.prj__pp_prtprotokoll__notizen 6643 # 6644 werte = [] 6645 6646 for i in range( self.__gibAnzZeilen__() ): 6647 6648 # 6649 # -- Technische oder Organisatorische Maßnahme ------------------ 6650 # -- 6651 # 20 | 01: Technische Maßnahme (Konstruktion) -- 6652 # 21 | 01: Technische Maßnahme (Sicherheitsfunktion) -- 6653 # -- 6654 # 22 | 01: Dokumentationsanforderung an den Fahrzeughersteller -- 6655 # 23 | 01: Vom Fahrzeughersteller durchzuführende Prüfung -- 6656 # 24 | 02: Während des Betriebseinsatzes durchzuführende Maßnahme -- 6657 # 25 | 02: In die Bedienungsanleitung aufzunehmende Anforderung -- 6658 # 26 | 03: Instandhaltungsmaßnahme -- 6659 # 27 | 03: In die Instandhaltungsdokumentation aufzunehmende Anforderung -- 6660 # -- 6661 # 6662 istTechnSiAnf = ( self.__gibWert__( i, 3 ) in [20, 21] ) 6663 6664 # 6665 # -- kein Vorgänger vorhanden bzw. Typ der SiAnf ausgewählt ---------- 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 # -- Vorgänger ist vorhanden ------------------------------------------ 6684 # 6685 else : 6686 6687 # 6688 # -- lfd. Nr. des Vorgängers im TreeCtrl ermitteln ------------------ 6689 # 6690 tmpLfdNrVorgaenger = posInWerte.index( self.__gibWert__( i, 5 ) ) 6691 6692 # 6693 # -- SiAnf ist bereits ohne Vorgänger vorhanden ------------------ 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 # -- SiAnf übernehmen -------------------------------------------------- 6722 # 6723 for i in range( len( posInWerte ) ): 6724 6725 # 6726 # -- SiAnf hinzufügen ------------------------------------------ 6727 # 6728 wertIdVorg = None 6729 if( werte[i][0] is not None ) : 6730 wertIdVorg = werte[i][0] + 1 6731 6732 # 6733 # -- Techn./Org. Maßnahme als Klartext -------------------------- 6734 # 6735 if( werte[i][3] ) : txtTechnSiAnf = " [T]" 6736 else : txtTechnSiAnf = " [O]" 6737 6738 # 6739 # -- SiAnf übernehmen ------------------------------------------ 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 # -- Baum anzeigen ---------------------------------------------------------- 6758 # 6759 TreeCtrlErg.erzeugeBaum() 6760 TreeCtrlErg.markiereWert()
6761 6762 6763 6764 6765 # 6766 # ------------------------------------------------------------------------------------ 6767 # -- die zugeordneten Strukturpunkte in >wxListBox<, -------------------------- 6768 # -- Tabelle >prj.personen< selektieren -------------------------- 6769 # ------------------------------------------------------------------------------------ 6770 #
6771 - def selektiere__prjPersonen( self, wxListBox, prjProjekteId, strStrktId_li ):
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 # wenn kein Projekt ausgewählt ist (prjProjekteId = 0), wird die Methode verlassen 6787 # 6788 if prjProjekteId == 0: 6789 return 6790 6791 # 6792 # SQL-Abfrage ausführen, 6793 # die gelesenen Werte der ListBox zuordnen 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 # -- Alle Eingabefelder des Gefahrenprotokolls in Abhängigkeit ---------- 6825 # -- von der gewählten Protokoll.-Id setzen ---------- 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 # -- SQL-Abfrage ausführen, ---------- 6871 # -- die gelesenen Werte der ListBox zuordnen ---------- 6872 # -- ---------- 6873 # -- ---------- 6874 # -- Es werden drei Fälle abgedeckt: ---------- 6875 # -- ............................... ---------- 6876 # -- ---------- 6877 # -- 1. projektspezifischer Protokolleintrag ---------- 6878 # -- id > 0 AND prj_personen_id = 0 AND ---------- 6879 # -- prj_projekte_id > 0 AND prt_protokoll_id > 0 ---------- 6880 # -- ---------- 6881 # -- 2. beteiligte Personen zuordnen ---------- 6882 # -- id > 0 AND prj_personen_id > 0 AND prj_projekte_id > 0 ---------- 6883 # -- AND prt_protokoll_id > 0 AND spr_uebvar_id = 0 ---------- 6884 # -- AND teilnehmer = true ---------- 6885 # -- ---------- 6886 # -- 3. der Protokolleintrag ist eine Frage / Aufgabe ---------- 6887 # -- id > 0 AND prj_personen_id > 0 AND prj_projekte_id > 0 ---------- 6888 # -- AND prt_protokoll_id > 0 AND spr_uebvar_id = 0 ---------- 6889 # -- AND teilnehmer = false AND termin IS NOT NULL ---------- 6890 # -- ---------- 6891 # -- ---------- 6892 # -- -------------------------------------------------------------------------- 6893 # 6894 self.__dbAbfrage__( self.gibSQL_prjPrtProtokoll( prjProjekteId = prjProjekteId 6895 , sprSprachenId = sprSprachenId 6896 , prtProtokollId = prtProtokollId ) ) 6897 6898 6899 # 6900 # -- alte Einträge löschen / auf Standardwert setzen -------------------------- 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 # -- Selektionen setzen -------------------------------------------------- 6921 # 6922 for i in range( self.__gibAnzZeilen__() ): 6923 prj_personen_id = self.__gibWert__( i, 7 ) 6924 6925 # 6926 # -- Es ist der projektspezifische Protokolleintrag zu setzen -- 6927 # 6928 if prj_personen_id == 0 : 6929 6930 # 6931 # -- Intern ---------------------------------------------------------- 6932 # 6933 wxCheckBoxIntern.nimmWert( wert = ( str( self.__gibWert__( i, 6 ) ) == 't' ) ) 6934 6935 # 6936 # -- Erledigt -------------------------------------------------- 6937 # 6938 wxCheckBoxErledigt.nimmWert( wert = ( str( self.__gibWert__( i, 5 ) ) == 't' ) ) 6939 6940 # 6941 # -- Typ des Protokolleintrages ---------------------------------- 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 # -- Datum des Protokolleintrages ---------------------------------- 6950 # 6951 wxmskCtrlDatumPE.nimmWert( wert = self.__gibWert__( i, 3 ) ) 6952 6953 # 6954 # -- Es werden die beteiligten Personen bzw. die Daten ---------- 6955 # -- bei Fragen / Aufgaben gesetzt ---------- 6956 # 6957 else : 6958 # 6959 # -- Beteiligte Personen ------------------------------------------ 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 # -- Bitte um Antwort versendet am ... -------------------------- 6967 # -- Termin -------------------------- 6968 # -- Bitte um Antwort an ... -------------------------- 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 # -- Strukturpunkte selektieren ---------------------------------- 6983 # -- Sicht >prj.zeige__strstrkt< selektieren ---------------------------------- 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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- es sind keine Strukturpunkte darzustellen -------------------------- 7023 # 7024 if( self.__gibAnzZeilen__() == 0 ) : return 7025 7026 7027 7028 # 7029 # -- Strukturpunkte übernehmen ------------------------------------------ 7030 # 7031 nameHauptKnoten = '' 7032 for i in range( self.__gibAnzZeilen__() ): 7033 7034 # 7035 # -- Neuen Hauptknoten übernehmen ---------------------------------- 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 # -- Strukturpunkt übernehmen ---------------------------------- 7048 # -- ---------------------------------- 7049 # -- prj.p_prtstrstrkt.str_strkt_id ---------------------------------- 7050 # -- prj.p_prtstrstrkt.id ---------------------------------- 7051 # -- prj.p_prtstrstrkt.notizen ---------------------------------- 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 # -- Risikomatrix auslesen -------------------------------------------------- 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 # -- Werte ------------------------------------------------------------------ 7108 # -- ---------- 7109 # -- werte[0] ... Häufigkeit oder Gefahrenstufe ---------- 7110 # -- werte[1] ... Risikostufe ---------- 7111 # -- ---------- 7112 # -- werte[ 0 , 1 , 2 , 3 , 4 ] ---------- 7113 # -- werte[abk_id, istGefSzen, notizen, spr_uebvar_id_zus, begr] ---------- 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 # -- SQL-Abfragen ausführen, wenn Häufigkeit und Gefahrenstufe gegeben sind -- 7126 # 7127 if( CBHaeufig.gibClientData() != 0 and CBGefStufe.gibClientData() != 0 ) : 7128 7129 # 7130 # -- Risikostufe ermitteln ------------------------------------------ 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 # -- SQL-Abfrage ausführen (Werte ermitteln) -------------------------- 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 # -- Werte übernehmen ------------------------------------------ 7200 # -- werte[0] ... Häufigkeit oder Gefahrenstufe ------------------ 7201 # -- werte[1] ... Risikostufe ------------------ 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 # -- 1.) Häufigkeit (im GUI angezeigt) ---------------------------------- 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 # -- >notizen< ------------------------- 7223 , werte[0][2] ] ) 7224 7225 # -- >prj.pp_psgefszenario.id< --------- 7226 #, self.__gibWert__( 0, 7 ) ] ) 7227 LBHaeufigBegr.SetSelection( 0 ) 7228 7229 7230 # LBHaeufigBegr.TextCtrl__li.nimmWert( 7231 # wert = werte[0][4] 7232 # , clientData = werte[0][3] ) 7233 # 7234 # LBHaeufigBegr.TextCtrl__re.nimmWert( 7235 # wert = werte[0][2] 7236 # , clientData = LBHaeufigBegr.TextCtrl__re.clientData ) 7237 7238 7239 # 7240 # -- 2.) Gefahrenstufe (im GUI angezeigt) ---------------------------------- 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 # -- >notizen< ------------------------- 7248 , werte[0][2] ] ) 7249 7250 # -- >prj.pp_psgefszenario.id< --------- 7251 #, self.__gibWert__( 0, 7 ) ] ) 7252 LBGefStufeBegr.SetSelection( 0 ) 7253 7254 7255 # LBGefStufeBegr.TextCtrl__li.nimmWert( 7256 # wert = werte[0][4] 7257 # , clientData = werte[0][3] ) 7258 # 7259 # LBGefStufeBegr.TextCtrl__re.nimmWert( 7260 # wert = werte[0][2] 7261 # , clientData = LBGefStufeBegr.TextCtrl__re.clientData ) 7262 7263 7264 # 7265 # -- 3.) Risikostufe (im GUI angezeigt) ---------------------------------- 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 # -- >notizen< ------------------------- 7279 , werte[1][2] ] ) 7280 7281 # -- >prj.pp_psgefszenario.id< --------- 7282 #, self.__gibWert__( 0, 7 ) ] ) 7283 LBRisikoStufeBegr.SetSelection( 0 )
7284 7285 7286 7287 7288 # 7289 # ------------------------------------------------------------------------------------ 7290 # -- die zugeordnete Zeichenkette in >txtCtrlErg< eintragen, ------------------ 7291 # -- Tabellen >spr.*< auslesen ------------------ 7292 # ------------------------------------------------------------------------------------ 7293 #
7294 - def selektiere__sprSprachen( self, txtCtrlErg, sprUebvarId, sprSprachenId ):
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 # -- SQL-Abfrage ausführen -------------------------------------------------- 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 # -- die gelesene Zeichenkette eintragen ---------------------------------- 7329 # 7330 txtCtrlErg.nimmWert( self.__gibWert__( 0, 0 ) )
7331 7332 7333 7334 7335 # 7336 # ------------------------------------------------------------------------------------ 7337 # -- die zugeordneten Strukturpunkte in >wxListBox<, -------------------------- 7338 # -- Tabelle >str.strkt< selektieren -------------------------- 7339 # ------------------------------------------------------------------------------------ 7340 #
7341 - def selektiere__strStrkt( self, wxListBox, prjProjekteId, strStrktId_li, strNameId_re ):
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 # SQL-Abfrage ausführen, 7360 # die gelesenen Werte der ListBox zuordnen 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 # -- PostgreSQL-Safepoint setzen ------------------------------------------ 7402 # ------------------------------------------------------------------------------------ 7403 #
7404 - def setzeSafepoint( self, name ):
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 # -- vorsichtshalber einen neuen Cursor anlegen -------------------------- 7414 # 7415 self.dbCursor = self.dbVerbindung.cursor() 7416 7417 # 7418 # -- SAFEPOINT setzen -------------------------------------------------- 7419 # 7420 self.__dbAbfrage__( 'SAVEPOINT ' + name + ';' ) 7421 7422 # 7423 # -- vorsichtshalber einen neuen Cursor anlegen -------------------------- 7424 # 7425 self.dbCursor = self.dbVerbindung.cursor()
7426 7427 7428 # 7429 # ------------------------------------------------------------------------------------ 7430 # -- Änderungen verwerfen (aktuelle Transaktion schließen, ------------------ 7431 # -- neue Transaktion starten) ------------------ 7432 # ------------------------------------------------------------------------------------ 7433 #
7434 - def verwerfeAenderungen( self ):
7435 """ 7436 Es werden alle Änderungen verworfen (der alte Datenbankzustand hergestellt), die laufende Transaktion beendet und eine neue Transaktion gestartet. 7437 """ 7438 7439 # 7440 # -- Änderungen verwerfen, Transaktion starten -------------------------- 7441 # 7442 self.dbVerbindung.rollback()
7443 7444 7445 7446 7447 7448 # 7449 # ------------------------------------------------------------------------------------ 7450 # -- Alle Änderungen seit Setzen eines PostgreSQL-Safepoints verwerfen -- 7451 # ------------------------------------------------------------------------------------ 7452 #
7453 - def verwerfeAenderungenSafepoint( self, name ):
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 # -- vorsichtshalber einen neuen Cursor anlegen -------------------------- 7463 # 7464 self.dbCursor = self.dbVerbindung.cursor() 7465 7466 # 7467 # -- bis zum SAFEPOINT zurückrollen ------------------------------------------ 7468 # 7469 self.__dbAbfrage__( 'ROLLBACK TO SAVEPOINT ' + name + ';' ) 7470 7471 # 7472 # -- vorsichtshalber einen neuen Cursor anlegen -------------------------- 7473 # 7474 self.dbCursor = self.dbVerbindung.cursor()
7475 7476 7477 # 7478 # ------------------------------------------------------------------------------------ 7479 # -- alle ListBox - Einträge deselktieren ---------------------------------- 7480 # ------------------------------------------------------------------------------------ 7481 #
7482 - def WxListBoxDeselektieren( self, wxListBox ):
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 # alle bisher gesetzten Selektionen ermitteln und zurücksetzen 7494 # 7495 tmp = wxListBox.GetSelections() 7496 7497 for i in range( len( tmp ) ) : 7498 wxListBox.Deselect( tmp[i] )
7499 7500 7501 # 7502 # ------------------------------------------------------------------------------------ 7503 # -- wxControlWithItems initialisieren ---------------------------------- 7504 # ------------------------------------------------------------------------------------ 7505 #
7506 - def WxListBoxSelektieren( self, wxListBox, listeId ):
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 # alle bisher gesetzten Selektionen ermitteln und zurücksetzen 7520 # 7521 self.WxListBoxDeselektieren( wxListBox ) 7522 7523 # 7524 # Listeneinträge selektieren 7525 # 7526 for i in range( wxListBox.GetCount() ): 7527 if listeId.count( wxListBox.GetClientData( i )[0] ) > 0 : 7528 wxListBox.SetSelection( i )
7529