[Products.Silva][Sylvain Viollon] Make it work on partially inst...

[email protected] Mon, 02 Sep 2013 14:52:51 +0200
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
author:    Sylvain Viollon
date:      Mon Sep 02 14:52:31 2013 +0200
revision:  11858:25cf922b3707 in Products.Silva
branch:    2.4
details:   https://hg.infrae.com/Products.Silva?cmd=changeset;node=25cf922b3707
modified:  Products/Silva/Security/changes.py
added:     
removed:   
log:       Make it work on partially installed sites.


diffstat:

 Products/Silva/Security/changes.py |  25 ++++++++++++++-----------
 1 files changed, 14 insertions(+), 11 deletions(-)

diffs (51 lines):

diff -r 31f7c4e51cb7 -r 25cf922b3707 Products/Silva/Security/changes.py
--- a/Products/Silva/Security/changes.py	Mon Sep 02 14:00:56 2013 +0200
+++ b/Products/Silva/Security/changes.py	Mon Sep 02 14:52:31 2013 +0200
@@ -10,7 +10,7 @@
 from silva.core.interfaces import IUpgradeTransaction
 from silva.core.services.delayed import Task
 from silva.core.services.interfaces import IMemberService, IMetadataService
-from zope.component import getUtility
+from zope.component import queryUtility
 
 
 class Key(object):
@@ -59,10 +59,12 @@
             # Don't do things.
             pass
 
+        members = queryUtility(IMemberService)
+        if members is None:
+            return
         now = DateTime()
         login = getSecurityManager().getUser().getId()
-        members = getUtility(IMemberService)
-        metadata = getUtility(IMetadataService)
+        metadata = queryUtility(IMetadataService)
 
         for change, created in self._changes.iteritems():
             # Update author
@@ -70,14 +72,15 @@
             user = members.get_cached_member(login, location=change.content)
             change.content.set_last_author_info(user)
 
-            # Update metadata
-            binding = metadata.getMetadata(change.content)
-            if binding is None or binding.read_only:
-                continue
-            values = {'modificationtime': now}
-            if created:
-                values['creationtime'] = now
-            binding.setValues('silva-extra', values)
+            if metadata is not None:
+                # Update metadata
+                binding = metadata.getMetadata(change.content)
+                if binding is None or binding.read_only:
+                    continue
+                values = {'modificationtime': now}
+                if created:
+                    values['creationtime'] = now
+                binding.setValues('silva-extra', values)
 
 
 @grok.subscribe(IUpgradeTransaction)