[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) &lt; 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