[Erp5-report] r27639 - in /erp5/trunk/products/ERP5/Tool: IntrospectionTool.py LogMixin.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jun 17 20:08:42 CEST 2009


Author: rafael
Date: Wed Jun 17 20:08:42 2009
New Revision: 27639

URL: http://svn.erp5.org?rev=27639&view=rev
Log:
Added Draft of LogMixin.

Added:
    erp5/trunk/products/ERP5/Tool/LogMixin.py
Modified:
    erp5/trunk/products/ERP5/Tool/IntrospectionTool.py

Modified: erp5/trunk/products/ERP5/Tool/IntrospectionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/IntrospectionTool.py?rev=27639&r1=27638&r2=27639&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/IntrospectionTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/IntrospectionTool.py [utf8] Wed Jun 17 20:08:42 2009
@@ -35,13 +35,14 @@
 from Products.ERP5Type import Permissions
 from AccessControl.SecurityManagement import setSecurityManager
 from Products.ERP5 import _dtmldir
+from Products.ERP5.Tool.LogMixin import LogMixin
 from Products.ERP5Type.Utils import _setSuperSecurityManager
 from App.config import getConfiguration
 import tarfile
 
 _MARKER = []
 
-class IntrospectionTool(BaseTool):
+class IntrospectionTool(LogMixin, BaseTool):
   """
     This tool provides both local and remote introspection.
   """
@@ -50,7 +51,6 @@
   title = 'Introspection Tool'
   meta_type = 'ERP5 Introspection Tool'
   portal_type = 'Introspection Tool'
-  allowed_content_types = ('Anonymized Introspection Report', 'User Introspection Report',) # XXX User Portal Type please
 
   security = ClassSecurityInfo()
 

Added: erp5/trunk/products/ERP5/Tool/LogMixin.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/LogMixin.py?rev=27639&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/Tool/LogMixin.py (added)
+++ erp5/trunk/products/ERP5/Tool/LogMixin.py [utf8] Wed Jun 17 20:08:42 2009
@@ -1,0 +1,87 @@
+##############################################################################
+#
+# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved.
+#                    Jean-Paul Smets-Solanes <jp at nexedi.com>
+#                    Rafael M. Monnerat <rafael 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
+
+# XXX This Mixin is not finished yet. Added as a reference for the
+# future implementation which will come.
+
+class LogMixin:
+  """
+    The idea of 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
+
+    I prefer this way for now so that the code for log access in
+    Tools is reduced to the minimum and we do not need to 
+    add so many portal types.
+  """
+  security = ClassSecurityInfo()
+
+  security.declareProtected('getLogFile', Permissions.ManagePortal)
+  def getLogFile(self, file_name, account=None):
+    """
+      Returns the raw log file (as they are)
+      Must be overriden
+    """
+    raise NotImplementedError
+
+  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
+
+  security.declareProtected('getLogNameList', Permissions.ManagePortal)
+  def getLogNameList(self, account=None):
+    """
+      Returns the list of log names.
+    """
+    raise NotImplementedError
+
+  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)




More information about the Erp5-report mailing list