[Checkins] SVN: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/ - added error_log views
Yvo Schubbe
y.2011 at wcm-solutions.de
Wed Nov 16 10:36:04 UTC 2011
Log message for revision 123367:
- added error_log views
Changed:
UU Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/base.py
UU Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/configure.zcml
A Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/error_log.py
A Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log.pt
A Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log_entry.pt
-=-
Modified: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/base.py
===================================================================
--- Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/base.py 2011-11-16 10:34:17 UTC (rev 123366)
+++ Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/base.py 2011-11-16 10:36:04 UTC (rev 123367)
@@ -14,8 +14,23 @@
""" Base view for ZMI views
"""
+from zope import i18n # disambiguation
+from zope.i18nmessageid import MessageFactory
from ZTUtils import make_query
+Message = MessageFactory('zmi.core')
+
+def translate(message, request):
+ """ Translate i18n message.
+ """
+ if isinstance(message, Exception):
+ try:
+ message = message[0]
+ except (TypeError, IndexError):
+ pass
+ return i18n.translate(message, domain='zmi.core', context=request)
+
+
class ZMIView(object):
""" ZMI base view
"""
@@ -23,12 +38,27 @@
def __init__(self, context, request):
self.context = context
self.request = request
+ self.status = None
-
- def redirect(self, url, status=''):
+ def redirect(self, target=None, keys=''):
""" Redirect to a url and provide an optional status message
"""
- if status:
- url = '%s%s' % (url, make_query(zmi_status=status))
- self.request.response.redirect(url)
+ if target is None:
+ target = self.request.ACTUAL_URL
+ kw = {}
+ if self.status:
+ message = translate(self.status, self.context)
+ if isinstance(message, unicode):
+ message = message.encode('utf-8')
+ kw['manage_tabs_message'] = message
+ for k in keys.split(','):
+ k = k.strip()
+ v = self.request.form.get(k, None)
+ if v:
+ kw[k] = v
+
+ query = kw and ('?%s' % make_query(kw)) or ''
+ self.request.response.redirect('%s%s' % (target, query))
+
+ return ''
Property changes on: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/base.py
___________________________________________________________________
Deleted: svn:keywords
- Id
Modified: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/configure.zcml
===================================================================
--- Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/configure.zcml 2011-11-16 10:34:17 UTC (rev 123366)
+++ Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/configure.zcml 2011-11-16 10:36:04 UTC (rev 123367)
@@ -6,7 +6,22 @@
name="zmi_interfaces"
template="templates/zmi_interfaces.pt"
class="zmi.core.browser.zmi_interfaces.InterfacesView"
- permission="zope2.ManageProperties"
+ permission="zope2.ViewManagementScreens"
/>
+ <browser:page
+ for="Products.SiteErrorLog.SiteErrorLog.SiteErrorLog"
+ name="zmi_error_log"
+ template="templates/error_log.pt"
+ class="zmi.core.browser.error_log.ErrorLogView"
+ permission="zope2.ViewManagementScreens"
+ />
+
+ <browser:page
+ for="Products.SiteErrorLog.SiteErrorLog.SiteErrorLog"
+ name="zmi_error_log_entry"
+ template="templates/error_log_entry.pt"
+ permission="zope2.ViewManagementScreens"
+ />
+
</configure>
Property changes on: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/configure.zcml
___________________________________________________________________
Added: svn:eol-style
+ native
Added: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/error_log.py
===================================================================
--- Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/error_log.py (rev 0)
+++ Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/error_log.py 2011-11-16 10:36:04 UTC (rev 123367)
@@ -0,0 +1,28 @@
+from .base import ZMIView
+from .base import Message as _
+
+
+class ErrorLogView(ZMIView):
+
+ def __call__(self, SAVE=None, FORGET=None, REFRESH=None, keep_entries=0,
+ copy_to_zlog=0, ignored_exceptions=(), id=None):
+ if SAVE:
+ self.context.setProperties(keep_entries, copy_to_zlog,
+ ignored_exceptions)
+ self.status = _(u'Changed properties.')
+ return self.redirect()
+ elif FORGET:
+ self.context.forgetEntry(id)
+ self.status = _(u'Error log entry was removed.')
+ return self.redirect()
+ elif REFRESH:
+ return self.redirect()
+ return self.index()
+
+ @property
+ def entry_url(self):
+ return '%s/@@zmi_error_log_entry?id=' % self.context.absolute_url()
+
+ @property
+ def forget_url(self):
+ return '%s?FORGET=True&id=' % self.request.ACTUAL_URL
Property changes on: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/error_log.py
___________________________________________________________________
Added: svn:eol-style
+ native
Added: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log.pt
===================================================================
--- Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log.pt (rev 0)
+++ Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log.pt 2011-11-16 10:36:04 UTC (rev 123367)
@@ -0,0 +1,109 @@
+<div class="system-msg" tal:condition="request/manage_tabs_message|nothing"
+ tal:content="request/manage_tabs_message">
+</div>
+
+<p class="form-help">
+This page lists the exceptions that have occurred in this site
+recently. You can configure how many exceptions should be kept
+and whether the exceptions should be copied to Zope's event log
+file(s).
+</p>
+
+<form action="." method="post"
+ tal:attributes="action request/ACTUAL_URL">
+<table tal:define="props container/getProperties">
+ <tr>
+ <td align="left" valign="top">
+ <div class="form-label">
+ Number of exceptions to keep
+ </div>
+ </td>
+ <td align="left" valign="top">
+ <input type="text" name="keep_entries" size="40"
+ tal:attributes="value props/keep_entries" />
+ </td>
+ </tr>
+ <tr>
+ <td align="left" valign="top">
+ <div class="form-label">
+ Copy exceptions to the event log
+ </div>
+ </td>
+ <td align="left" valign="top">
+ <input type="checkbox" name="copy_to_zlog"
+ tal:attributes="checked props/copy_to_zlog;
+ disabled not:container/checkEventLogPermission|nothing" />
+ </td>
+ </tr>
+ <tr>
+ <td align="left" valign="top">
+ <div class="form-label">
+ Ignored exception types
+ </div>
+ </td>
+ <td align="left" valign="top">
+ <textarea name="ignored_exceptions:lines" cols="40" rows="3"
+ tal:content="python: '\n'.join(props['ignored_exceptions'])"></textarea>
+ </td>
+ </tr>
+ <tr>
+ <td align="left" valign="top">
+ </td>
+ <td align="left" valign="top">
+ <div class="form-element">
+ <input class="form-element" type="submit" name="SAVE"
+ value=" Save Changes " />
+ </div>
+ </td>
+ </tr>
+</table>
+
+<h3>Exception Log (most recent first)</h3>
+
+<div tal:define="entries container/getLogEntries">
+
+<em tal:condition="not:entries">
+No exceptions logged.
+</em>
+
+<table tal:condition="entries">
+ <tr>
+ <th align="left">Time</th>
+ <th align="left">Username (User Id)</th>
+ <th align="left">Exception</th>
+ <th></th>
+ </tr>
+ <tr tal:repeat="entry entries">
+ <td valign="top" nowrap="nowrap">
+ <span tal:content="python: modules['DateTime'].DateTime(entry['time']).Time()">13:04:41</span>
+ </td>
+ <td>
+ <span tal:content="string: ${entry/username} (${entry/userid})">
+ joe (joe)
+ </span>
+ </td>
+ <td valign="top">
+ <a href="showEntry" tal:attributes="href string:${view/entry_url}${entry/id}"
+ >
+ <span tal:content="entry/type">AttributeError</span>:
+ <span tal:define="value entry/value"
+ tal:content="python: len(value) < 70 and value or value[:70] + '...'">
+ Application object has no attribute "zzope"</span>
+ </a>
+ </td>
+ <td><a href="."
+ tal:attributes="href string:${view/forget_url}${entry/id}"
+ >Forget this entry</a></td>
+ </tr>
+</table>
+
+</div>
+
+</form>
+
+<p>
+<form action="." method="post"
+ tal:attributes="action request/ACTUAL_URL">
+<input type="submit" name="REFRESH" value=" Refresh " />
+</form>
+</p>
Property changes on: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log.pt
___________________________________________________________________
Added: svn:eol-style
+ native
Added: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log_entry.pt
===================================================================
--- Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log_entry.pt (rev 0)
+++ Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log_entry.pt 2011-11-16 10:36:04 UTC (rev 123367)
@@ -0,0 +1,53 @@
+<h3>Exception traceback</h3>
+
+<div tal:define="entry python:container.getLogEntryById(request.get('id'))">
+
+<em tal:condition="not:entry">
+The specified log entry was not found. It may have expired.
+</em>
+
+<div tal:condition="entry">
+
+<table>
+ <tr>
+ <th align="left" valign="top">Time</th>
+ <td tal:content="python: modules['DateTime'].DateTime(entry['time'])"></td>
+ </tr>
+ <tr>
+ <th align="left" valign="top">User Name (User Id)</th>
+ <td tal:content="string: ${entry/username} (${entry/userid})">joe (joe)</td>
+ </tr>
+ <tr>
+ <th align="left" valign="top">Request URL</th>
+ <td tal:content="entry/url">http://example.com</td>
+ </tr>
+ <tr>
+ <th align="left" valign="top">Exception Type</th>
+ <td tal:content="entry/type">AttributeError</td>
+ </tr>
+ <tr>
+ <th align="left" valign="top">Exception Value</th>
+ <td tal:content="entry/value">zzope</td>
+ </tr>
+</table>
+
+<div tal:condition="entry/tb_html" tal:content="structure entry/tb_html">
+Traceback (HTML)
+</div>
+<pre tal:condition="not:entry/tb_html" tal:content="entry/tb_text">
+Traceback (text)
+</pre>
+
+<p tal:condition="entry/tb_text"><a href="" tal:attributes="href
+ string:getLogEntryAsText?id=${entry/id}">Display
+ traceback as text</a></p>
+
+<div tal:condition="entry/req_html">
+
+<h3>REQUEST</h3>
+<div tal:replace="structure entry/req_html"></div>
+</div>
+
+</div>
+
+</div>
Property changes on: Sandbox/jens/zmi.core/trunk/src/zmi/core/browser/templates/error_log_entry.pt
___________________________________________________________________
Added: svn:eol-style
+ native
More information about the checkins
mailing list