[Checkins] SVN: grokui.admin/branches/ulif-securitynotifications/src/grokui/admin/view.py Make server screen security-notifier-aware.

Uli Fouquet uli at gnufix.de
Sun Dec 21 12:58:52 EST 2008


Log message for revision 94224:
  Make server screen security-notifier-aware.

Changed:
  U   grokui.admin/branches/ulif-securitynotifications/src/grokui/admin/view.py

-=-
Modified: grokui.admin/branches/ulif-securitynotifications/src/grokui/admin/view.py
===================================================================
--- grokui.admin/branches/ulif-securitynotifications/src/grokui/admin/view.py	2008-12-21 17:56:24 UTC (rev 94223)
+++ grokui.admin/branches/ulif-securitynotifications/src/grokui/admin/view.py	2008-12-21 17:58:52 UTC (rev 94224)
@@ -1,6 +1,6 @@
 ##############################################################################
 #
-# Copyright (c) 2007 Zope Corporation and Contributors.
+# Copyright (c) 2007-2008 Zope Corporation and Contributors.
 # All Rights Reserved.
 #
 # This software is subject to the provisions of the Zope Public License,
@@ -16,14 +16,18 @@
 import grok
 import os
 import inspect
+import time
 from urllib import urlencode
 
+from grokui.admin.interfaces import ISecurityNotifier
+
 from grokui.admin import docgrok
 from grokui.admin.docgrok import DocGrok, DocGrokPackage, DocGrokModule
 from grokui.admin.docgrok import DocGrokTextFile, DocGrokGrokApplication
 from grokui.admin.docgrok import DocGrokClass, DocGrokInterface, getItemLink
 
 from grokui.admin.objectinfo import ZopeObjectInfo
+from grokui.admin.security import SecurityNotifier
 from grokui.admin.utilities import getPathLinksForObject, getPathLinksForClass
 from grokui.admin.utilities import getPathLinksForDottedName, getParentURL
 from grokui.admin.utilities import getURLWithParams
@@ -441,6 +445,30 @@
     grok.require('grok.ManageApplications')
 
     @property
+    def security_notifier(self):
+        """Get a local security notifier.
+
+        The security notifier is installed as a local utility by an
+        event handler in the security module.
+        """
+        site = grok.getSite()
+        site_manager = site.getSiteManager()
+        return site_manager.queryUtility(ISecurityNotifier, default=None)
+    
+    @property
+    def secnotes_enabled(self):
+        if self.security_notifier is None:
+            # Safety belt if installation of notifier failed
+            return False
+        return self.security_notifier.enabled
+
+    @property
+    def secnotes_message(self):
+        if self.security_notifier is None:
+            return u'Security notifier is not installed.'
+        return self.security_notifier.getNotification()
+    
+    @property
     def server_control(self):
         return zope.component.queryUtility(IServerControl, '', None)
 
@@ -458,14 +486,35 @@
         if messages:
             return messages[0]
 
+    def emitSecurityNotification(self):
+        message = self.secnotes_message
+        self.flash(message)
+        return
+
+    def updateSecurityNotifier(self, setsecnotes=None):
+        if self.security_notifier is None:
+            return
+        if setsecnotes is not None:
+            if self.security_notifier.enabled is True:
+                self.security_notifier.disable()
+            else:
+                self.security_notifier.enable()
+        if self.secnotes_enabled is False:
+            return
+        self.emitSecurityNotification()
+        return
+        
     def update(self, time=None, restart=None, shutdown=None,
-               admin_message=None, submitted=False,
+               setsecnotes=None, admin_message=None, submitted=False,
                dbName="", pack=None, days=0):
 
         # Packing control
         if pack is not None:
             return self.pack(dbName, days)
 
+        # Security notification control
+        self.updateSecurityNotifier(setsecnotes)
+        
         if not submitted:
             return
 



More information about the Checkins mailing list