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

Source Code for Module bearbeitesicherheitsanf

   1  # -*- coding: utf-8 -*- 
   2  # 
   3  # 
   4  #    filename:  bearbeitesicherheitsanf.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 wx 
  40   
  41  from bearbeiteuebersetzung import BearbeiteUebersetzung # Eingabeformular für Übersetzungen 
  42   
  43  from universal import zk                                # Zeichenketten bearbeiten 
  44   
  45  from wxuniversal import FlexGridSizerWxObjTitel         # wxObjekt mit Titel 
  46  from wxuniversal import DialogErg                       # wx.Dialog mit Ergänzungen 
  47  from wxuniversal import farbeBearbeiten                 # Farbe der Objekte, die  bearbeitet werden können 
  48  from wxuniversal import SiAnfStrktDok                   # Eingabeformular für Sicherheitsanforderungen 
  49  from wxuniversal import SiAnf                           # SiAnf einschl. zugeordneter Strkt, Dok, PE, ... 
  50  from wxuniversal import TextCtrlSpWTitel                # TextCtrl im SplitterWindow mit Titel 
  51  from wxuniversal import TreeCtrlErg                     # TreeCtrl mit Ergänzungen 
  52   
  53   
  54   
  55  # 
  56  # 
  57  # 
  58  # ---------------------------------------------------------------------------------------- 
  59  # ---------------------------------------------------------------------------------------- 
  60  # --                                    -------------------------------------------------- 
  61  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
  62  # --                                    -------------------------------------------------- 
  63  # ---------------------------------------------------------------------------------------- 
  64  # ---------------------------------------------------------------------------------------- 
  65  # 
  66  #  
  67  #       -- siehe TODO 'bearbeitesicherheitsanf.py' -- 
  68  # 
  69  # 
  70  # ---------------------------------------------------------------------------------------- 
  71  # 
  72   
  73   
  74   
  75   
  76   
  77   
  78   
  79  # 
  80  # ---------------------------------------------------------------------------------------- 
  81  # ---------------------------------------------------------------------------------------- 
  82  # --                                                            -------------------------- 
  83  # --    Eingabeformular 'Sicherheitsanforderungen bearbeiten'   -------------------------- 
  84  # --                                                            -------------------------- 
  85  # ---------------------------------------------------------------------------------------- 
  86  # ---------------------------------------------------------------------------------------- 
  87  # 
88 -class BearbeiteSicherheitsanf( DialogErg ):
89 90 """ 91 Klasse zur Abbildung des Eingabeformulars 'Sicherheitsanforderungen bearbeiten'. 92 """ 93 94 # 95 # ------------------------------------------------------------------------------------ 96 # -- Eingabeformular initialisieren ---------------------------------- 97 # ------------------------------------------------------------------------------------ 98 #
99 - def __init__( self, parent, Statusleiste, dbVerbindung, prjProjekteId, sprSprachenId, psGefszenarioId ):
100 DialogErg.__init__( self 101 , parent = parent 102 , title = u"Sicherheitsanforderungen bearbeiten." 103 , dbVerbindung = dbVerbindung ) 104 105 # 106 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 107 # 108 self.SetName( name = "BearbeiteSicherheitsanf" ) 109 110 111 # 112 # -- Randbedingungen übernehmen ------------------------------------------ 113 # 114 self.Statusleiste = Statusleiste 115 self.dbVerbindung = dbVerbindung 116 self.prjProjekteId = prjProjekteId 117 self.sprSprachenId = sprSprachenId 118 self.psGefszenarioId = psGefszenarioId 119 120 121 122 # 123 # -------------------------------------------------------------------------------- 124 # -- Eingabeobjekte anlegen -------------------------------------------------- 125 # -------------------------------------------------------------------------------- 126 # 127 128 # 129 # -- Sicherheitsanforderungen ------------------------------------------ 130 # -- Objekt-Id = ------------------ 131 # 132 self.SiAnf__SiAnf = SiAnf( parent = self 133 , Statusleiste = self.Statusleiste 134 , dbVerbindung = self.dbVerbindung 135 , prjProjekteId = self.prjProjekteId 136 , sprSprachenId = self.sprSprachenId 137 , psGefszenarioId = self.psGefszenarioId ) 138 139 140 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 141 , self.__ereignisBearbeiten__ 142 , self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 143 144 self.Bind( wx.EVT_TREE_ITEM_MIDDLE_CLICK 145 , self.__ereignisSiAnfLoesen__ 146 , self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 147 148 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 149 , self.__ereignisSPktDokumentLoesen__ 150 , self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt ) 151 152 153 154 # 155 # -- Tabulatorbereich ---------- 156 # -- Verfügbare Sicherheitsanforderungen, Strukturpunke, Dokumente ---------- 157 # -- Protokolleinträge ---------- 158 # 159 self.Notebook__Verfuegbar = wx.Notebook( self ) 160 161 162 # 163 # -- Verfügbare Sicherheitsanforderungen ---------------------------------- 164 # -- Objekt-Id = ------------------ 165 # 166 self.SiAnf__SiAnfVerfuegbar = SiAnf( parent = self.Notebook__Verfuegbar 167 , Statusleiste = self.Statusleiste 168 , dbVerbindung = self.dbVerbindung 169 , prjProjekteId = self.prjProjekteId 170 , sprSprachenId = self.sprSprachenId 171 , psGefszenarioId = self.psGefszenarioId 172 , varId = 1 ) 173 174 175 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 176 , self.__ereignisSiAnfZuordnen__ 177 , self.SiAnf__SiAnfVerfuegbar.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 178 179 self.Bind( wx.EVT_TREE_ITEM_MIDDLE_CLICK 180 , self.__ereignisSiAnfZuordnen__ 181 , self.SiAnf__SiAnfVerfuegbar.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 182 183 184 self.Notebook__Verfuegbar.AddPage( self.SiAnf__SiAnfVerfuegbar, u"Sicherheitsanforderungen" ) 185 186 187 # 188 # -- Verfügbare Strukturpunkte, Dokumente, Protokolleinträge ------------------ 189 # -- Objekt-Id = ------------------ 190 # 191 self.Notebook__Verfuegbar.AddPage( SiAnfStrktDok( parent = self.Notebook__Verfuegbar 192 , varId = 3 193 , Statusleiste = self.Statusleiste 194 , dbVerbindung = self.dbVerbindung 195 , prjProjekteId = self.prjProjekteId 196 , sprSprachenId = self.sprSprachenId 197 , psGefszenarioId = self.psGefszenarioId ) 198 , u"Strukturpunkte" ) 199 200 201 self.Notebook__Verfuegbar.AddPage( SiAnfStrktDok( parent = self.Notebook__Verfuegbar 202 , varId = 4 203 , Statusleiste = self.Statusleiste 204 , dbVerbindung = self.dbVerbindung 205 , prjProjekteId = self.prjProjekteId 206 , sprSprachenId = self.sprSprachenId 207 , psGefszenarioId = self.psGefszenarioId ) 208 , u"Dokumente" ) 209 210 211 self.Notebook__Verfuegbar.AddPage( SiAnfStrktDok( parent = self.Notebook__Verfuegbar 212 , varId = 5 213 , Statusleiste = self.Statusleiste 214 , dbVerbindung = self.dbVerbindung 215 , prjProjekteId = self.prjProjekteId 216 , sprSprachenId = self.sprSprachenId 217 , psGefszenarioId = self.psGefszenarioId ) 218 , u"Protokolleinträge" ) 219 220 self.Notebook__Verfuegbar.GetPage( 3 ).TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nProtokolleintrag der gewählten Sicherheitsanforderung zuordnen." ) ) 221 self.Notebook__Verfuegbar.GetPage( 3 ).CheckBox__Alle.Enable( False ) 222 223 224 225 # 226 # -- Wechsel der Karteikarten bearbeiten ---------------------------------- 227 # 228 self.Bind( wx.EVT_NOTEBOOK_PAGE_CHANGED 229 , self.__ereignisKKGewechselt__ 230 , self.Notebook__Verfuegbar ) 231 232 233 # 234 # -- Sicherheitsanforderung und Strukturpunkt verbinden ------------------ 235 # 236 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 237 , self.__ereignisSPktDokumentZuordnen__ 238 , self.Notebook__Verfuegbar.GetPage( 1 ).TreeCtrlErg__Id.wxObjekt ) 239 240 241 # 242 # -- Sicherheitsanforderung und Dokument verbinden -------------------------- 243 # 244 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 245 , self.__ereignisSPktDokumentZuordnen__ 246 , self.Notebook__Verfuegbar.GetPage( 2 ).TreeCtrlErg__Id.wxObjekt ) 247 248 249 # 250 # -- Sicherheitsanforderung und Protokolleintrag verbinden ------------------ 251 # 252 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 253 , self.__ereignisSPktDokumentZuordnen__ 254 , self.Notebook__Verfuegbar.GetPage( 3 ).TreeCtrlErg__Id.wxObjekt ) 255 256 257 # 258 # -- Layout festlegen ------------------ 259 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 260 # 261 BoxSizerGes = wx.BoxSizer( wx.HORIZONTAL ) 262 263 BoxSizerGes.Add( self.SiAnf__SiAnf 264 , proportion = 1 265 , flag = wx.ALL|wx.EXPAND 266 , border = 5 ) 267 268 BoxSizerGes.Add( self.Notebook__Verfuegbar 269 , proportion = 1 270 , flag = wx.ALL|wx.EXPAND 271 , border = 5 ) 272 273 274 # 275 # -- In das Eingabeformular übernehmen ---------------------------------- 276 # 277 self.nimmDialogElemente( BoxSizerGes ) 278 279 280 # 281 # -- Tooltips / Hintergrundfarben setzen ---------------------------------- 282 # 283 self.__ereignisKKGewechselt__() 284 285 286 # 287 # -- Liste der Sicherheitsanforderungen-Id füllen ------------------ 288 # 289 self.SiAnf__SiAnf.liesDB( psGefszenarioId = self.psGefszenarioId ) 290 291 # 292 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 293 # 294 self.Button__Verwerfen.Enable( False ) 295 self.Button__Sichern.Enable( False )
296 297 298 299 300 # 301 # ------------------------------------------------------------------------------------ 302 # -- Sicherheitsanforderung bearbeiten ---------------------------------- 303 # ------------------------------------------------------------------------------------ 304 #
305 - def __ereignisBearbeiten__( self, ereignis = None ):
306 """ 307 Methode die aufgerufen wird, wenn der Text der Sicherheitsanforderung bearbeitet werden soll. 308 309 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 310 @type ereignis: C{wx - Ereignisobjekt} 311 """ 312 313 # 314 # -- Formular zur Bearbeitung der Übersetzungsvariante aufrufen ---------- 315 # 316 dlg = BearbeiteUebersetzung( parent = self 317 , Statusleiste = self.Statusleiste 318 , dbVerbindung = self.dbVerbindung 319 , sprSprachenId = self.sprSprachenId 320 , sprUebvarId = ereignis.GetEventObject().gibClientData()[1] 321 , notizen = ereignis.GetEventObject().gibClientData()[2] ) 322 323 324 # 325 # -- Dialog aufrufen ---------------------------------------------------------- 326 # 327 dlg.ShowModal() 328 dlg.Destroy() 329 330 331 # 332 # -- geänderte >spr.uebvar.id< bzw. >notizen< in -------------------------- 333 # -- >prj.pp_prtprotokoll< übernehmen -------------------------- 334 # 335 if( dlg.gibWerte()[0] 336 and ( dlg.gibWerte()[1] != ereignis.GetEventObject().gibClientData()[1] 337 or dlg.gibWerte()[2] != ereignis.GetEventObject().gibClientData()[2] ) ) : 338 339 self.dbVerbindung.schreibe__prjPPPrtProtokoll__UPDATE( 340 sprUebvarId = dlg.gibWerte()[1] 341 , whereId = [ self.prjProjekteId 342 , ereignis.GetEventObject().gibDbId() 343 , ereignis.GetEventObject().gibClientData()[1]] ) 344 345 346 # 347 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 348 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 349 # 350 self.Notebook__Verfuegbar.GetPage( 1 ).__ereignisLiesDBVerfSiAnf__() 351 self.SiAnf__SiAnf.liesDB( psGefszenarioId = self.psGefszenarioId ) 352 353 354 355 356 # 357 # -- Button 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 358 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 359 # 360 if( dlg.gibWerte()[0] ) : 361 self.Button__Verwerfen.Enable( True ) 362 self.Button__Sichern.Enable( True ) 363 364 365 # 366 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 367 # -- ausgewertet werden kann -------------------------- 368 # 369 if( ereignis != None ) : ereignis.Skip( skip = True )
370 371 372 373 374 # 375 # ------------------------------------------------------------------------------------ 376 # -- Karteikarten gewechselt -------------------------------------------------- 377 # ------------------------------------------------------------------------------------ 378 #
379 - def __ereignisKKGewechselt__( self, ereignis = None ):
380 """ 381 Es wurde zwischen den Karteikarten gewechselt. 382 383 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 384 @type ereignis: C{wx - Ereignisobjekt} 385 """ 386 387 # 388 # -- KK 'Sicherheitsanforderungen' gewählt ---------------------------------- 389 # 390 if( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 0 ) ) : 391 392 # 393 # -- SiAnf-Id (links) ------------------------------------------ 394 # 395 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( farbeBearbeiten ) 396 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nSicherheitsanforderung bearbeiten.\n\nMittlere Maustaste:\nVerbindung zwischen Sicherheitsanforderung und Gefahrenszenario aufheben." ) ) 397 398 399 # 400 # -- Zugeordnete Strukturpunkte / Dokumente / ------------------ 401 # -- Protokolleinträge (links) ------------------ 402 # 403 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( self.GetBackgroundColour() ) 404 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( " " ) ) 405 406 407 # 408 # -- KK 'Strukturpunkte' / 'Dokumente' / 'Protokolleinträge' gewählt ---------- 409 # 410 elif( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 1 ) 411 or self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 2 ) 412 or self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 3 ) ) : 413 414 # 415 # -- SiAnf-Id (links) ------------------------------------------ 416 # 417 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( 'WHITE' ) 418 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( " " ) ) 419 420 # 421 # -- Zugeordnete Strukturpunkte / Dokumente / ------------------ 422 # -- Protokolleinträge (links) ------------------ 423 # 424 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( farbeBearbeiten ) 425 426 if( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 1 ) ) : 427 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nVerbindung zwischen Strukturpunkt und Sicherheitsanforderung aufheben." ) ) 428 429 elif( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 2 ) ) : 430 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nVerbindung zwischen Dokument und Sicherheitsanforderung aufheben." ) ) 431 432 elif( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 3 ) ) : 433 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nVerbindung zwischen Protokolleintrag und Sicherheitsanforderung aufheben." ) ) 434 435 436 437 # 438 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 439 # -- ausgewertet werden kann -------------------------- 440 # 441 if( ereignis != None ) : ereignis.Skip( skip = True )
442 443 444 445 446 # 447 # ------------------------------------------------------------------------------------ 448 # -- Sicherheitsanforderung vom Gefahrenszenario lösen ------------------ 449 # ------------------------------------------------------------------------------------ 450 #
451 - def __ereignisSiAnfLoesen__( self, ereignis = None ):
452 """ 453 Die aktuelle(n) Sicherheitsanforderungen von der Sicherheitsanforderung (Technische Maßnahme) bzw. dem Gefahrenszenario lösen. 454 455 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 456 @type ereignis: C{wx - Ereignisobjekt} 457 """ 458 459 # 460 # -- ---------- 461 # -- 1. Verbindung zwischen den Protokolleinträgen und Strukutur- ---------- 462 # -- punkten aufheben; ---------- 463 # -- Strukturpunkte ggf. (aus dem Projekt entfernen) ---------- 464 # -- ---------- 465 # -- >prj.pp_strstrkt< ---------- 466 # -- >prj.p_strverbindung< ---------- 467 # -- >prj.p_prtstrstrkt< ---------- 468 # -- ---------- 469 # 470 self.dbVerbindung.schreibe__Strukturpunkte( TreeCtrlErg = ereignis.GetEventObject() 471 , prjProjekteId = self.prjProjekteId 472 , sprSprachenId = self.sprSprachenId 473 , psGefszenarioId = self.psGefszenarioId ) 474 475 476 477 # 478 # -- ---------- 479 # -- 2. Verbindung zwischen den Protokolleinträgen und Dokumenten ---------- 480 # -- aufheben; ---------- 481 # -- Dokumente ggf. (aus dem Projekt entfernen) ---------- 482 # -- ---------- 483 # -- Dokumente entfernen ---------- 484 # -- >prj.pl_prtdokdoku< ---------- 485 # -- >prj.ppl_dokdoku< ---------- 486 # -- >prj.pl_dokausgabe< ---------- 487 # -- ---------- 488 # 489 self.dbVerbindung.schreibe__Dokumente( TreeCtrlErg = ereignis.GetEventObject() 490 , prjProjekteId = self.prjProjekteId 491 , sprSprachenId = self.sprSprachenId 492 , nimmAusgabe = 'true' 493 , psGefszenarioId = self.psGefszenarioId ) 494 495 496 497 498 # 499 # -- ------------------ 500 # -- 3. Protokolleintrag vom Gefahrenszenario lösen ------------------ 501 # -- .............................................. ------------------ 502 # -- ------------------ 503 # -- >prj.pl_prtpsgefszenario< ------------------ 504 # -- ------------------ 505 # 506 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 507 listeWerte = zk.gibListeTeilmenge( liste = ereignis.GetEventObject().gibZweigDaten() ) 508 , prjProjekteId = self.prjProjekteId 509 , psGefszenarioId = self.psGefszenarioId 510 , logentfernt = 'true' ) 511 512 513 # 514 # -- ------------------ 515 # -- 4. Protokolleintrag aus dem Projekt entfernen ------------------ 516 # -- .............................................. ------------------ 517 # -- ------------------ 518 # -- >prj.pp_prtprotokoll< ------------------ 519 # -- ------------------ 520 # 521 self.dbVerbindung.schreibe__prjPPPrtProtokoll( 522 listeWerte = ereignis.GetEventObject().gibZweigDaten() 523 , prjProjekteId = self.prjProjekteId ) 524 525 526 527 # 528 # -- ------------------ 529 # -- 5. Verbindung zwischen den Protokolleinträgen aufheben ------------------ 530 # -- (aus dem Projekt entfernen) ------------------ 531 # -- ...................................................... ------------------ 532 # -- ------------------ 533 # -- >prj.p_prtverbindung< ------------------ 534 # -- ------------------ 535 # 536 self.dbVerbindung.schreibePrtProtokollVerbindung( TreeCtrlErg = ereignis.GetEventObject() 537 , prjProjekteId = self.prjProjekteId 538 , prtProtokollIdVorg = None 539 , sprSprachenId = self.sprSprachenId 540 , psGefszenarioId = self.psGefszenarioId ) 541 542 543 544 # 545 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 546 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 547 # 548 self.Notebook__Verfuegbar.GetPage( 1 ).__ereignisLiesDBVerfSiAnf__() 549 self.SiAnf__SiAnf.liesDB( psGefszenarioId = self.psGefszenarioId ) 550 551 552 # 553 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 554 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 555 # 556 self.Button__Verwerfen.Enable( True ) 557 self.Button__Sichern.Enable( True ) 558 559 560 # 561 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 562 # -- ausgewertet werden kann -------------------------- 563 # 564 if( ereignis != None ) : ereignis.Skip( skip = True )
565 566 567 568 569 # 570 # ------------------------------------------------------------------------------------ 571 # -- Sicherheitsanforderung zuordnen ---------------------------------- 572 # ------------------------------------------------------------------------------------ 573 #
574 - def __ereignisSiAnfZuordnen__( self, ereignis = None ):
575 """ 576 Die aktuelle(n) Sicherheitsanforderungen der gewählten Sicherheitsanforderung (dem Gefahrenszenario) zuordnen. 577 578 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 579 @type ereignis: C{wx - Ereignisobjekt} 580 """ 581 582 # 583 # -- Ereignistypen (ggf. später verbessern) ---------------------------------- 584 # 585 evtDClick = 10033 586 evtMMouse = 10035 587 588 589 # 590 # -- ---------- 591 # -- Generelle Regeln zum Zuordnen (Übernehmen) der SiAnf ------------------ 592 # -- .................................................... ---------- 593 # -- ---------- 594 # -- Die bereits zugeordneten SiAnf (Id wird betrachtet) werden ---------- 595 # -- nicht verändert (Doppelklick / mittl. Maustaste wird ignoriert) ---------- 596 # -- ---------- 597 # -- Den bereits zugeordneten Knoten (techn. Maßn.) werden nur die ---------- 598 # -- SiAnf hinzugefügt, die noch nicht vorhanden sind. ---------- 599 # -- ---------- 600 # -- Werden Knoten (techn. Maßn.) übernommen, dann werden die ---------- 601 # -- untergeordneten SiAnf ohne Nachfragen ebenfalls übernommen ---------- 602 # -- ---------- 603 # -- Die den SiAnf zugeordneten Strukturpunkte werden ohne ---------- 604 # -- Nachfragen übernommen ---------- 605 # -- ---------- 606 # -- Die den SiAnf zugeordneten Dokumente werden als Platzhalter ---------- 607 # -- (Standardauswahl) ODER vollständig übernommen (Dialog aufrufen) ---------- 608 # -- ---------- 609 # -- ---------- 610 # -- ---------- 611 # -- Doppelklick ausgeführt: ------------------------------------------ 612 # -- ....................... ---------- 613 # -- ---------- 614 # -- Knoten selektiert (Technische Maßnahme) ---------- 615 # -- -> Knoten (einschl. untergeordneter SiAnf) dem ---------- 616 # -- Gefahrenzenario zuordnen ---------- 617 # -- ---------- 618 # -- Alleinstehende SiAnf (Technische Maßnahme) selektiert ---------- 619 # -- -> SiAnf (Technische Maßnahme) dem Gefahrenzenario zuordnen ---------- 620 # -- ---------- 621 # -- Alleinstehende SiAnf (Organisatorische Maßnahme) UND ---------- 622 # -- bereits zugeordneten SiAnf (Technische Maßnahme) selektiert ---------- 623 # -- -> SiAnf (Organisatorische Maßnahme) der ausgewählten ---------- 624 # -- bereits zugeordneten SiAnf (Technische Maßnahme; keine ---------- 625 # -- Organisatorische Maßnahme !) zuordnen (übernehmen) ---------- 626 # -- ---------- 627 # -- Alleinstehende SiAnf (Organisatorische Maßnahme) UND ---------- 628 # -- bereits zugeordneten SiAnf (Org. Maßnahme) selektiert ---------- 629 # -- -> UNZULÄSSIG ---------- 630 # -- ---------- 631 # -- ---------- 632 # -- ---------- 633 # -- Mittlere Maustaste betätigt: ---------- 634 # -- ............................ ---------- 635 # -- ---------- 636 # -- Organisatorische Maßnahme selektiert ---------- 637 # -- -> SiAnf dem Gefahrenszenario direkt zuordnen ---------- 638 # -- ---------- 639 # -- Technische Maßnahme selektiert ---------- 640 # -- -> UNZULÄSSIG ---------- 641 # -- ---------- 642 # 643 644 # 645 # -- Unzulässige Aktionen abfangen (siehe oben) -------------------------- 646 # 647 if( ( ereignis.GetEventType() == evtDClick 648 and not ereignis.GetEventObject().gibClientData()[0] 649 and not self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibClientData()[0] ) 650 or ( ereignis.GetEventType() == evtMMouse and ereignis.GetEventObject().gibClientData()[0] ) ) : 651 652 if( ereignis != None ) : ereignis.Skip( skip = True ) 653 return 654 655 656 657 # 658 # -- ---------- 659 # -- 1. Zuordnung zum Projekt / Gefahrenszenario -------------------------- 660 # -- ........................................... ---------- 661 # -- ---------- 662 # -- SiAnf dem Gefahrenszenario zuordnen ---------------------------------- 663 # -- >prj.pl_prtpsgefszenario< ---------- 664 # -- ---------- 665 # -- SiAnf dem Projekt zuordnen (Text/Notizen übernehmen) ------------------ 666 # -- >prj.pp_prtprotokoll< ---------- 667 # -- ---------- 668 # -- Strukturpunkte übernehmen ------------------------------------------ 669 # -- >prj.pp_strstrkt< ---------- 670 # -- >prj.p_strverbindung< ---------- 671 # -- >prj.p_prtstrstrkt< ---------- 672 # -- ---------- 673 # -- Dokumente übernehmen -------------------------------------------------- 674 # -- >prj.ppl_dokdoku< ---------- 675 # -- wenn sie vollständig übernommen werden sollen ---------- 676 # -- >prj.pl_prtdokdoku< ---------- 677 # -- >prj.pl_dokausgabe< ---------- 678 # -- ---------- 679 # -- Im Projekt zugeordnete Protokolleinträge übernehmen ------------------ 680 # -- >prj.pl_prtpsgefszenario< ---------- 681 # -- ---------- 682 # 683 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 684 listeWerte = zk.gibListeTeilmenge( liste = ereignis.GetEventObject().gibZweigDaten() ) 685 , prjProjekteId = self.prjProjekteId 686 , psGefszenarioId = self.psGefszenarioId ) 687 688 self.dbVerbindung.schreibe__prjPPPrtProtokoll( 689 listeWerte = ereignis.GetEventObject().gibZweigDaten() 690 , prjProjekteId = self.prjProjekteId ) 691 692 693 # 694 # -- Strukturpunkte übernehmen ------------------------------------------ 695 # 696 self.dbVerbindung.schreibe__Strukturpunkte( TreeCtrlErg = ereignis.GetEventObject() 697 , prjProjekteId = self.prjProjekteId 698 , sprSprachenId = self.sprSprachenId ) 699 700 701 # 702 # -- Meldung ausgeben -------------------------------------------------- 703 # 704 dlg = wx.MessageDialog( parent = self 705 , message = u"Alle Dokumente, die den Sicherheitsanforderungen zugeordnet sind, werden übernommen.\n\nSollen sie vollständig (d.h. mit Titel, akt. Revisionsstand, Datum) in das Projekt übernommen werden ?\nWenn nicht, dann werden sie nur als Platzhalter übernommen." 706 , caption = u"Dokumente zuordnen" 707 , style = wx.YES_NO|wx.ICON_QUESTION) 708 709 nimmAusgabe = ( dlg.ShowModal() == wx.ID_YES ) 710 711 712 # 713 # -- Dokumente übernehmen -------------------------------------------------- 714 # 715 self.dbVerbindung.schreibe__Dokumente( TreeCtrlErg = ereignis.GetEventObject() 716 , prjProjekteId = self.prjProjekteId 717 , sprSprachenId = self.sprSprachenId 718 , nimmAusgabe = nimmAusgabe ) 719 720 721 # 722 # -- ---------- 723 # -- 2. Verbindung zwischen den SiAnf ---------------------------------- 724 # -- ................................ ---------- 725 # -- ---------- 726 # -- Verbindung herstellen -------------------------------------------------- 727 # -- >prj.p_prtverbindung< ---------- 728 # -- ---------- 729 # -- -> wenn Knoten ausgewählt wurde ---------- 730 # -- -> wenn Org. SiAnf UND Doppelklick UND bereits zugeordnete ---------- 731 # -- Techn. SiAnf markiert wurde ---------- 732 # -- ---------- 733 # 734 if( ereignis.GetEventObject().ItemHasChildren( ereignis.GetItem() ) 735 or ( ereignis.GetEventObject().gibClientData()[0] == False 736 and ereignis.GetEventType() == evtDClick 737 and self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibClientData()[0] ) ) : 738 739 # 740 # -- Knoten ausgewählt ------------------------------------------ 741 # 742 if( ereignis.GetEventObject().ItemHasChildren( ereignis.GetItem() ) ) : 743 744 self.dbVerbindung.schreibePrtProtokollVerbindung( 745 TreeCtrlErg = ereignis.GetEventObject() 746 , prjProjekteId = self.prjProjekteId 747 , prtProtokollIdVorg = ereignis.GetEventObject().gibDbId() ) 748 749 # 750 # -- keinen Knoten ausgewählt ---------------------------------- 751 # 752 else : 753 754 self.dbVerbindung.schreibePrtProtokollVerbindung( 755 TreeCtrlErg = ereignis.GetEventObject() 756 , prjProjekteId = self.prjProjekteId 757 , prtProtokollIdVorg = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() ) 758 759 760 # 761 # -- ---------- 762 # -- Protokolleinträge zuordnen ------------------------------------------ 763 # -- .......................... ---------- 764 # -- ---------- 765 # -- Es werden die Protokolleinträge, die der aktuell gewählten ---------- 766 # -- SiAnf (im aktuellen Projekt) zugeordnet sind, übernommen ---------- 767 # -- ---------- 768 # 769 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 770 listeWerte = self.dbVerbindung.gibListePsPrtProtokollWerte( 771 prjProjekteId = self.prjProjekteId 772 , sprSprachenId = self.sprSprachenId 773 , psGefszenarioId = None 774 , prtTypAspekt = 'PE' 775 , prtTypId = None 776 , prtProtokollIdVorg = zk.gibListeTeilmengeZk( liste = ereignis.GetEventObject().gibZweigDaten() ) ) 777 , prjProjekteId = self.prjProjekteId 778 , psGefszenarioId = self.psGefszenarioId ) 779 780 781 # 782 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 783 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 784 # 785 self.SiAnf__SiAnfVerfuegbar.liesDB( psGefszenarioId = self.psGefszenarioId ) 786 self.SiAnf__SiAnf.liesDB( psGefszenarioId = self.psGefszenarioId ) 787 788 789 # 790 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 791 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 792 # 793 self.Button__Verwerfen.Enable( True ) 794 self.Button__Sichern.Enable( True ) 795 796 797 # 798 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 799 # -- ausgewertet werden kann -------------------------- 800 # 801 if( ereignis != None ) : ereignis.Skip( skip = True )
802 803 804 805 806 # 807 # ------------------------------------------------------------------------------------ 808 # -- Strukturpunkt / Dokument entfernen ---------------------------------- 809 # ------------------------------------------------------------------------------------ 810 #
811 - def __ereignisSPktDokumentLoesen__( self, ereignis ):
812 """ 813 Die Verbindung zwischen dem aktuellen Dokument und der gewählten Sicherheitsanforderung lösen. 814 815 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 816 @type ereignis: C{wx - Ereignisobjekt} 817 """ 818 819 # 820 # -- Keine weitere Aktion ausführen, -------------------------- 821 # -- wenn ein Hauptknoten gewählt wurde, -- 822 # -- ODER -- 823 # -- ein Strukturpunkt, aber nicht KK 'Strukturpunkte' gewählt wurde, -- 824 # -- ODER -- 825 # -- ein Dokument, aber nicht KK 'Dokumente' gewählt wurde. -- 826 # -- ODER -- 827 # -- ein Protokolleintrag, aber nicht KK 'Protokolleinträge' gewählt wurde. -- 828 # 829 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.istHauptknoten( ereignis.GetItem() ) 830 or ( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == ereignis.GetEventObject().HK_STR and self.Notebook__Verfuegbar.GetSelection() != 1 ) 831 or ( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == ereignis.GetEventObject().HK_DOK and self.Notebook__Verfuegbar.GetSelection() != 2 ) 832 or ( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == ereignis.GetEventObject().HK_PE and self.Notebook__Verfuegbar.GetSelection() != 3 ) ) : 833 834 ereignis.Skip( skip = True ) 835 return 836 837 838 # 839 # -- Den Strukturpunkt von der aktuellen Sicherheitsanforderung lösen -- 840 # 841 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == ereignis.GetEventObject().HK_STR ) : 842 843 self.dbVerbindung.schreibe__psPrtStrkt( 844 prjProjekteId = self.prjProjekteId 845 , prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 846 , strStrktId = ereignis.GetEventObject().gibClientData()[0] 847 , notizen = '' 848 , prjPPrtStrstrktId = ereignis.GetEventObject().gibClientData()[1] ) 849 850 851 # 852 # -- Das Dokument von der aktuellen Sicherheitsanforderung lösen ---------- 853 # 854 elif( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == ereignis.GetEventObject().HK_DOK ) : 855 856 self.dbVerbindung.schreibe__prjPrtDoku( 857 prjProjekteId = self.prjProjekteId 858 , prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 859 , dokDokuId = ereignis.GetEventObject().gibWert() 860 , plPrtDokdoku = [ ereignis.GetEventObject().gibClientData()[1] 861 , ereignis.GetEventObject().gibClientData()[2] 862 , ereignis.GetEventObject().gibClientData()[3] 863 , ereignis.GetEventObject().gibClientData()[0] ] 864 , plDokAusgabe = [ ereignis.GetEventObject().gibClientData()[7] 865 , ereignis.GetEventObject().gibClientData()[5] 866 , ereignis.GetEventObject().gibClientData()[6] 867 , ereignis.GetEventObject().gibClientData()[4] ] 868 , logentfernt = 'true' ) 869 870 871 # 872 # -- Den Protokolleintrag von der aktuellen Sicherheitsanforderung lösen -- 873 # 874 elif( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == ereignis.GetEventObject().HK_PE ) : 875 876 self.dbVerbindung.schreibe__prjPPrtVerbindung( 877 prjProjekteId = self.prjProjekteId 878 , prtProtokollIdVorg = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 879 , prtProtokollIdNachf = ereignis.GetEventObject().gibDbId() 880 , trennen = True ) 881 882 883 # 884 # -- 'Zugeordnete Strukturpunkte/Dokumente/Protokolleinträge' neu auslesen -- 885 # 886 self.SiAnf__SiAnf.__ereignisNavigation__() 887 888 889 # 890 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 891 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 892 # 893 self.Button__Verwerfen.Enable( True ) 894 self.Button__Sichern.Enable( True ) 895 896 897 # 898 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 899 # -- ausgewertet werden kann -------------------------- 900 # 901 if( ereignis != None ) : ereignis.Skip( skip = True )
902 903 904 905 906 # 907 # ------------------------------------------------------------------------------------ 908 # -- ---------------------------------- 909 # -- Strukturpunkt / Dokument zuordnen ---------------------------------- 910 # -- ---------------------------------- 911 # ------------------------------------------------------------------------------------ 912 #
913 - def __ereignisSPktDokumentZuordnen__( self, ereignis = None ):
914 """ 915 Das aktuelle Dokument der gewählten Sicherheitsanforderung zuordnen. 916 917 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 918 @type ereignis: C{wx - Ereignisobjekt} 919 """ 920 921 # 922 # -------------------------------------------------------------------------------- 923 # -- Strukturpunkt und aktuelle Sicherheitsanforderung verbinden ---------- 924 # -- ---------- 925 # -- Es muß KK 'Strukturpunkte' selektiert sein ---------- 926 # -------------------------------------------------------------------------------- 927 # 928 if( self.Notebook__Verfuegbar.GetSelection() == 1 ) : 929 930 # 931 # -- Wenn Strukturpunkt bereits zugeordnet ist, ------------------ 932 # -- Routine verlassen ------------------ 933 # 934 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.istDbIdVorhanden( ereignis.GetEventObject().gibDbId() ) ) : 935 936 if( ereignis != None ) : ereignis.Skip( skip = True ) 937 return 938 939 # 940 # -- Den Strukturpunkt der aktuellen Sicherheitsanforderung zuordnen -- 941 # 942 self.dbVerbindung.schreibe__psPrtStrkt( 943 prjProjekteId = self.prjProjekteId 944 , prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 945 , strStrktId = ereignis.GetEventObject().gibClientData()[0] 946 , notizen = '' ) 947 948 949 950 # 951 # -------------------------------------------------------------------------------- 952 # -- Dokument und aktuelle Sicherheitsanforderung verbinden ------------------ 953 # -- (Dokumentenhierarchie bilden) ------------------ 954 # -- ------------------ 955 # -- Es muß ein Dokumenteintrag selektiert sein ------------------ 956 # -- UND ------------------ 957 # -- KK 'Dokumente' muß selektiert sein ------------------ 958 # -------------------------------------------------------------------------------- 959 # 960 elif( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten() == self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.HK_DOK 961 and self.Notebook__Verfuegbar.GetSelection() == 2 ) : 962 963 # 964 # -- Wenn Dok-Id bereits zugeordnet ist, Routine verlassen ------------------ 965 # 966 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.istDbIdVorhanden( ereignis.GetEventObject().gibDbId() ) ) : 967 968 if( ereignis != None ) : ereignis.Skip( skip = True ) 969 return 970 971 972 # 973 # -- Plausibilitätsprüfung der Dokumentzuordnung ------------------ 974 # -- ........................................... ------------------ 975 # -- ---------- 976 # -- 1. ) Dokumente, die den Ursprung einer SiAnf belegen, ---------- 977 # -- >dok.doku.aspekt == QUELLE< können allen SiAnf ---------- 978 # -- zugeordnet werden ---------- 979 # -- ---------- 980 # -- 2. ) Dokumente, die die Umsetzung der SiAnf beweisen, ---------- 981 # -- >dok.doku.aspekt == BEWEIS< ---------- 982 # -- werden nur den ---------- 983 # -- - Dokumentationsanforderungen >prt.typ.id == 22< ---------- 984 # -- - Prüfungen >prt.typ.id == 23< ---------- 985 # -- zugeordnet. ---------- 986 # -- Somit kann (muß) in der SiAnf der Gedanke des ---------- 987 # -- Beweises (Punkt im Dokument) benannt werden ---------- 988 # 989 if( ereignis.GetEventObject().gibClientData()[8] == 'BEWEIS' 990 and self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibClientData()[3] not in [22, 23] ) : 991 992 # 993 # -- Dokument und Sicherheitsanforderung nicht verbinden ---------- 994 # 995 if( ereignis != None ) : ereignis.Skip( skip = True ) 996 return 997 998 999 1000 # 1001 # -- Das Dokument der aktuellen Sicherheitsanforderung zuordnen ------------------ 1002 # 1003 self.dbVerbindung.schreibe__prjPrtDoku( 1004 prjProjekteId = self.prjProjekteId 1005 , prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 1006 , dokDokuId = ereignis.GetEventObject().gibWert() 1007 , plPrtDokdoku = [ ereignis.GetEventObject().gibClientData()[1] 1008 , ereignis.GetEventObject().gibClientData()[2] 1009 , ereignis.GetEventObject().gibClientData()[3] 1010 , ereignis.GetEventObject().gibClientData()[0] ] 1011 , plDokAusgabe = [ ereignis.GetEventObject().gibClientData()[7] 1012 , ereignis.GetEventObject().gibClientData()[5] 1013 , ereignis.GetEventObject().gibClientData()[6] 1014 , ereignis.GetEventObject().gibClientData()[4] ] ) 1015 1016 1017 1018 1019 1020 # 1021 # -------------------------------------------------------------------------------- 1022 # -- Protokolleintrag und aktuelle Sicherheitsanforderung verbinden ---------- 1023 # -- ---------- 1024 # -- Es muß KK 'Protokolleinträge' selektiert sein ---------- 1025 # -------------------------------------------------------------------------------- 1026 # 1027 elif( self.Notebook__Verfuegbar.GetSelection() == 3 ) : 1028 1029 # 1030 # -- gewählte PE und SiAnf verbinden ---------------------------------- 1031 # 1032 tmpEintraege = ereignis.GetEventObject().gibZweig() 1033 1034 for i in range( len( tmpEintraege ) ) : 1035 1036 self.dbVerbindung.schreibe__prjPPrtVerbindung( 1037 prjProjekteId = self.prjProjekteId 1038 , prtProtokollIdVorg = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 1039 , prtProtokollIdNachf = ereignis.GetEventObject().gibDbId( tmpEintraege[i] ) ) 1040 1041 1042 # 1043 # -- PE automatisch den anderen Gefahren-Id zuordnen, in denen ---------- 1044 # -- die SiAnf verwendet wurden ---------- 1045 # 1046 tmpPsGefszenarioId = self.dbVerbindung.gibListePrjPlPrtPsGefszenarioWerte( 1047 prjProjekteId = self.prjProjekteId 1048 , prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() ) 1049 1050 for i in range( len( tmpPsGefszenarioId ) ) : 1051 1052 # 1053 # -- aktuelles Gefahrenszenario überspringen -------------------------- 1054 # 1055 if( str( tmpPsGefszenarioId[i] ) == str( self.psGefszenarioId ) ) : 1056 1057 continue 1058 1059 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 1060 listeWerte = zk.gibListeTeilmenge( liste = ereignis.GetEventObject().gibZweigDaten() ) 1061 , prjProjekteId = self.prjProjekteId 1062 , psGefszenarioId = tmpPsGefszenarioId[i] ) 1063 1064 1065 1066 1067 # 1068 # -- keine gültige Aktion -------------------------------------------------- 1069 # 1070 else : 1071 1072 1073 # 1074 # -- Routine verlassen ------------------------------------------ 1075 # 1076 if( ereignis != None ) : ereignis.Skip( skip = True ) 1077 return 1078 1079 1080 1081 # 1082 # -- 'Zugeordnete Strukturpunkte/Dokumente/Protokolleinträge' neu auslesen -- 1083 # 1084 self.SiAnf__SiAnf.__ereignisNavigation__() 1085 1086 1087 # 1088 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 1089 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 1090 # 1091 self.Button__Verwerfen.Enable( True ) 1092 self.Button__Sichern.Enable( True ) 1093 1094 1095 # 1096 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 1097 # -- ausgewertet werden kann -------------------------- 1098 # 1099 if( ereignis != None ) : ereignis.Skip( skip = True )
1100 1101 1102 1103 # 1104 # ------------------------------------------------------------------------------------ 1105 # -- Besondere Aktivitäten des abgeleiteten Objektes beim Verwerfen ---------- 1106 # ------------------------------------------------------------------------------------ 1107 #
1108 - def __spezAktionenVerwerfen__( self ):
1109 """ 1110 Methode die von der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen. 1111 """ 1112 1113 # 1114 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 1115 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 1116 # 1117 self.Notebook__Verfuegbar.GetPage( 1 ).__ereignisLiesDBVerfSiAnf__() 1118 self.SiAnf__SiAnf.liesDB( psGefszenarioId = self.psGefszenarioId )
1119 1120 1121 1122 # 1123 # ------------------------------------------------------------------------------------ 1124 # -- Gefahrenszenario-Id übernehmen ------------------------------------------ 1125 # ------------------------------------------------------------------------------------ 1126 #
1127 - def nimmPsGefszenarioId( self, psGefszenarioId ):
1128 """ 1129 Methode die aufgerufen wird, um die C{ps.gefszenario.id} zu übernehmen. 1130 1131 @param psGefszenarioId: Es ist die Identifikationsnummer des Gefahrenszenarios anzugeben. 1132 @type psGefszenarioId: Ganzzahl 1133 """ 1134 1135 # 1136 # -- Gefahrenszenario-Id übernehmen ------------------------------------------ 1137 # 1138 self.psGefszenarioId = psGefszenarioId
1139 1140 1141 1142 1143 # 1144 # ------------------------------------------------------------------------------------ 1145 # -- ClientData des Eintrages mit der lfdNr zurückgegeben ------------------ 1146 # ------------------------------------------------------------------------------------ 1147 #
1149 """ 1150 Mit Aufruf dieser Methode wird die Karteikarte 'Protokolleinträge' ausgewählt. 1151 1152 """ 1153 1154 # 1155 # -- Karteikarte auswählen -------------------------------------------------- 1156 # 1157 self.Notebook__Verfuegbar.ChangeSelection( 3 ) 1158 self.__ereignisKKGewechselt__()
1159