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