[Checkins] SVN: z3ext.preferences/trunk/ Show preference category if it has editable fields
Nikolay Kim
fafhrd at datacom.kz
Wed Oct 22 22:29:38 EDT 2008
Log message for revision 92492:
Show preference category if it has editable fields
Changed:
U z3ext.preferences/trunk/CHANGES.txt
U z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py
U z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py
U z3ext.preferences/trunk/src/z3ext/preferences/utils.py
-=-
Modified: z3ext.preferences/trunk/CHANGES.txt
===================================================================
--- z3ext.preferences/trunk/CHANGES.txt 2008-10-22 18:12:46 UTC (rev 92491)
+++ z3ext.preferences/trunk/CHANGES.txt 2008-10-23 02:29:36 UTC (rev 92492)
@@ -2,6 +2,12 @@
CHANGES
=======
+1.4.2 (2008-10-??)
+------------------
+
+- Show preference category if it has editable fields
+
+
1.4.1 (2008-10-22)
------------------
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py 2008-10-22 18:12:46 UTC (rev 92491)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/index.py 2008-10-23 02:29:36 UTC (rev 92492)
@@ -18,6 +18,7 @@
from zope.interface import Interface
from zope.component import getUtility
from zope.security import checkPermission
+from z3ext.preferences.utils import hasEditableFields
from z3ext.preferences.interfaces import IPreferenceGroup, IPreferenceCategory
@@ -37,7 +38,7 @@
sgroup.__id__.split('.')[-1], sgroup)
for t, sgroup in group.items()
if sgroup.isAvailable()]
- if subgroups:
+ if subgroups or hasEditableFields(group):
groups.append((group.__title__, group,
[{'id': id, 'group': sgroup}
for t, id, sgroup in subgroups]))
Modified: z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py 2008-10-22 18:12:46 UTC (rev 92491)
+++ z3ext.preferences/trunk/src/z3ext/preferences/browser/navigation.py 2008-10-23 02:29:36 UTC (rev 92492)
@@ -17,6 +17,7 @@
"""
from zope.component import queryMultiAdapter
from zope.viewlet.manager import ViewletManagerBase
+from z3ext.preferences.utils import hasEditableFields
from z3ext.preferences.interfaces import IRootPreferences
from z3ext.preferences.interfaces import IPreferenceGroup
from z3ext.preferences.interfaces import IPreferenceCategory
@@ -74,7 +75,8 @@
#info['items'] = self._process(prefs, [prefs], level+1)
if IPreferenceCategory.providedBy(prefs) and not info['items']:
- if not self._process(prefs, [prefs], level+1):
+ if not self._process(prefs, [prefs], level+1) \
+ and not hasEditableFields(prefs):
continue
data.append(info)
Modified: z3ext.preferences/trunk/src/z3ext/preferences/utils.py
===================================================================
--- z3ext.preferences/trunk/src/z3ext/preferences/utils.py 2008-10-22 18:12:46 UTC (rev 92491)
+++ z3ext.preferences/trunk/src/z3ext/preferences/utils.py 2008-10-23 02:29:36 UTC (rev 92492)
@@ -40,9 +40,10 @@
>>> print utils.isMemberAwareGroup(prefs)
False
"""
-
from zope import interface
+from zope.schema import getFieldNames
from zope.security import checkPermission
+from zope.security.checker import canWrite
from zope.security.interfaces import IPrincipal, IGroup, IMemberAwareGroup
@@ -59,6 +60,14 @@
return IMemberAwareGroup.providedBy(group.__principal__)
+def hasEditableFields(group):
+ for name in getFieldNames(group.__schema__):
+ if canWrite(group, name):
+ return True
+
+ return False
+
+
class PrincipalChecker(object):
def __init__(self, iface):
More information about the Checkins
mailing list