[Checkins]
SVN: Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view
Displaying of broken objects.
Uli Fouquet
uli at gnufix.de
Sun Aug 26 03:02:29 EDT 2007
Log message for revision 79276:
Displaying of broken objects.
Changed:
U Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view.py
U Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view_templates/applications.pt
-=-
Modified: Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view.py
===================================================================
--- Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view.py 2007-08-26 01:14:02 UTC (rev 79275)
+++ Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view.py 2007-08-26 07:02:28 UTC (rev 79276)
@@ -27,6 +27,8 @@
from grok.admin.utilities import getPathLinksForObject, getPathLinksForClass
from grok.admin.utilities import getPathLinksForDottedName, getParentURL
+from ZODB.broken import Broken
+
import zope.component
from zope.interface import Interface
from zope.app import zapi
@@ -54,7 +56,10 @@
grok.context(IRootFolder)
grok.define_permission('grok.ManageApplications')
+class Sample(grok.Application, grok.Container):
+ pass
+
class Add(grok.View):
"""Add an application.
"""
@@ -90,7 +95,19 @@
if not isinstance(items, list):
items = [items]
for name in items:
- del self.context[name]
+ try:
+ del self.context[name]
+ except AttributeError:
+ # object is broken and has to be handled special.
+ #self.context[name].__parent__ = self.context
+ #self.context[name] = object()
+ #self.context._setOb(name, None)
+ #self.context.__setitem__(name, None)
+ obj = self.context[name]
+ #obj = None
+ #del obj
+ del self.context[name]
+ #get_transaction.commit()
self.flash(u'Application %s was successfully deleted.' % (name,))
self.redirect(self.url(self.context))
@@ -323,17 +340,31 @@
return result
def update(self):
+ from ZODB import broken
+
+ from zope.app.broken.broken import IBroken
+
+ # Available apps...
apps = zope.component.getAllUtilitiesRegisteredFor(
grok.interfaces.IApplication)
+ self.applications = (
+ {'name': "%s.%s" % (x.__module__, x.__name__),
+ 'docurl':("%s.%s" % (x.__module__, x.__name__)).replace('.', '/')}
+ for x in apps)
+
+ # Installed apps...
inst_apps = [x for x in self.context.values()
if hasattr(x, '__class__') and x.__class__ in apps]
- self.applications = (
- {'name': "%s.%s" % (x.__module__, x.__name__),
- 'docurl':("%s.%s" % (x.__module__, x.__name__)).replace('.', '/')}
- for x in apps)
+ inst_apps.sort(lambda x, y: cmp(x.__name__, y.__name__))
self.installed_applications = inst_apps
+ # Broken apps...
+ broken_apps = [{'obj':y, 'name':x} for x,y in self.context.items()
+ if isinstance(y, Broken)]
+ broken_apps.sort(lambda x, y: cmp(x['name'], y['name']))
+ self.broken_applications = broken_apps
+
class AdminMessageSource(grok.GlobalUtility):
grok.name('admin')
Modified: Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view_templates/applications.pt
===================================================================
--- Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view_templates/applications.pt 2007-08-26 01:14:02 UTC (rev 79275)
+++ Sandbox/ulif/grok-adminui-experimental/src/grok/admin/view_templates/applications.pt 2007-08-26 07:02:28 UTC (rev 79276)
@@ -22,6 +22,18 @@
>object browser</a>]
</div>
+ <div tal:condition="view/broken_applications">
+ <br/><div class="emph">Broken applications:</div>
+ </div>
+ <div tal:repeat="app view/broken_applications">
+ <input type="checkbox"
+ class="checkbox"
+ tal:attributes="value app/name;
+ name string:items" />
+ <span tal:content="app/name" />
+ (broken type: <span tal:replace="string:${app/obj/__class__/__module__}.${app/obj/__class__/__name__}"/>). This application is broken!
+ </div>
+
<p>
<input class="button" type="submit" value="Delete Selected"/></p>
</fieldset>
More information about the Checkins
mailing list