[Erp5-report] r25657 - in /erp5/trunk/products/ERP5Wizard: ./ Tool/
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Feb 23 13:07:24 CET 2009
Author: ivan
Date: Mon Feb 23 13:07:12 2009
New Revision: 25657
URL: http://svn.erp5.org?rev=25657&view=rev
Log:
Add base mixin class for handling different types of logs.
Added:
erp5/trunk/products/ERP5Wizard/LogMixIn.py
Modified:
erp5/trunk/products/ERP5Wizard/Tool/IntrospectionTool.py
Added: erp5/trunk/products/ERP5Wizard/LogMixIn.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Wizard/LogMixIn.py?rev=25657&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Wizard/LogMixIn.py (added)
+++ erp5/trunk/products/ERP5Wizard/LogMixIn.py [utf8] Mon Feb 23 13:07:12 2009
@@ -1,0 +1,143 @@
+##############################################################################
+#
+# Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved.
+# Jean-Paul Smets-Solanes <jp at nexedi.com>
+# Ivan Tyagov <ivan at nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+
+from AccessControl import ClassSecurityInfo
+from Products.ERP5Type import Permissions
+
+class LogMixIn:
+ """
+ This mixin is to try to share all the code related
+ to log file access, caching, log filtering and filtering
+ optimisation.
+
+ The model chosen here is simplistic:
+ - one tool per service
+ - account parameter is used to select the customer account
+ - log_name parameter is used to select the log
+ """
+
+ security = ClassSecurityInfo()
+
+ security.declareProtected('getLogFile', Permissions.ManagePortal)
+ def getLogFile(self, file_name, account=None):
+ """
+ Returns the raw log file (as they are)
+ """
+ raise NotImplementedError # Must be overriden
+
+ security.declareProtected('getLogFileNameList', Permissions.ManagePortal)
+ def getLogFileNameList(self,
+ log_name, account=None,
+ domain=None, user_name=None,
+ from_line=None, to_line=None,
+ from_date=None, to_date=None, ):
+ """
+ Returns the list of file names for all log files. This
+ is iseful if we use logrotate for example. It is also
+ useful to provide some filtering parameters here
+ (ex. to reduce the number of files to parse)
+ """
+ raise NotImplementedError # Must be overriden
+
+ security.declareProtected('getLogNameList', Permissions.ManagePortal)
+ def getLogNameList(self, account=None):
+ """
+ Returns the list of log names.
+ """
+ raise NotImplementedError # Must be overriden
+
+ security.declareProtected('parseLogLine', Permissions.ManagePortal)
+ def parseLogLine(self, log_name, log_line):
+ """
+ Parses the line and returns a dict
+ """
+ method = self.getTypeBasedMethod('parseLogLine')
+ return method(log_name, log_line)
+
+ security.declareProtected('isLineRestricted', Permissions.ManagePortal)
+ def isLineRestricted(self,
+ log_name, log_line,
+ account=None, domain=None, user_name=None,
+ from_line=None, to_line=None,
+ from_date=None, to_date=None, ):
+ """
+ Returns True if the line
+ """
+ method = self.getTypeBasedMethod('isLineRestricted')
+ return method(log_name, self.parseLogLine(log_name, log_line))
+
+ security.declareProtected('getLogData', Permissions.ManagePortal)
+ def getLogData(self,
+ log_name, account=None,
+ domain=None, user_name=None,
+ from_line=None, to_line=None,
+ from_date=None, to_date=None):
+ """
+ Returns the log file data as single chunk, by assembling
+ various files in the appropriate order and by filtering them.
+
+ - account: an ID which represents a customer
+ - user: a user
+ - from_line: retrieves logs from a given line
+ - to_line: retrieves logs to a given line (excl. )
+ - from_date: retrieves logs from a given date
+ - to_date: retrieves logs to a given date (excl. )
+ """
+ # default implemetation is provided here
+ # it just calls isLineRestricted and
+ # (in the future) tries to do some clever caching
+ raise NotImplementedError # Must be overriden
+
+ security.declareProtected('getRestrictedLogData', Permissions.View)
+ def getRestrictedLogData(self,
+ log_name, account=None,
+ domain=None, user_name=None,
+ from_line=None, to_line=None,
+ from_date=None, to_date=None, ):
+ """
+ Returns the log file data as single chunk. Adds security checks.
+ """
+ raise NotImplementedError # Must be overriden
+
+ security.declareProtected('getLogFile', Permissions.ManagePortal)
+ def getLogEventList(self,
+ log_name='system', account=None,
+ domain=None, user=None,
+ from_line=None, to_line=None,
+ from_date=None, to_date=None, ):
+ """
+ Returns the log information in a format which is similar
+ to other Event like formats in ERP5 (ex. those which are used
+ to represent lists of events such as in checkConsistency
+ or elsewhere, ex. workflow history, message lists. Please take
+ time to decide what is the best representation here)
+
+ This means that the data is parsed.
+ """
+ raise NotImplementedError # Must be overriden
Modified: erp5/trunk/products/ERP5Wizard/Tool/IntrospectionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Wizard/Tool/IntrospectionTool.py?rev=25657&r1=25656&r2=25657&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Wizard/Tool/IntrospectionTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Wizard/Tool/IntrospectionTool.py [utf8] Mon Feb 23 13:07:12 2009
@@ -31,23 +31,24 @@
from Products.ERP5Type.Tool.BaseTool import BaseTool
from Products.ERP5Type import Permissions
from Products.ERP5Wizard import _dtmldir
+from Products.ERP5Wizard.LogMixIn import LogMixIn
from AccessControl.SecurityManagement import newSecurityManager, \
getSecurityManager, setSecurityManager
import zLOG
from Products.ERP5Type.Cache import CachingMethod
-class IntrospectionTool(BaseTool):
+class IntrospectionTool(BaseTool, LogMixIn):
"""
This tool provides both local and remote introspection.
"""
id = 'portal_introspections'
title = 'Introspection Tool'
-
meta_type = 'ERP5 Introspection Tool'
portal_type = 'Introspection Tool'
allowed_content_types = ('Anonymized Introspection Report', 'User Introspection Report',)
-
+
security = ClassSecurityInfo()
+
security.declareProtected(Permissions.ManagePortal, 'manage_overview')
manage_overview = DTMLFile('explainIntrospectionTool', _dtmldir )
More information about the Erp5-report
mailing list