Changeset 2111


Ignore:
Timestamp:
Oct 9, 2007 7:48:36 PM (11 years ago)
Author:
hazmat
Message:

detect when in portal factory

Location:
ore.auditlog/trunk/src/ore/auditlog
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • ore.auditlog/trunk/src/ore/auditlog/auditlog.py

    r2019 r2111  
    1111from ore.alchemist.zs2sa import transmute 
    1212from ore.alchemist.metadata import ZopeBoundMetaData 
     13 
    1314from sqlalchemy import mapper 
    1415 
     
    1617from zope import interface, component, schema 
    1718 
     19# zope 2 and plone dependencies 
    1820from AccessControl import getSecurityManager 
     21from Acquisition import aq_inner, aq_chain 
     22from Products.CMFPlone.FactoryTool import FactoryTool as PortalFactory 
     23 
    1924from datetime import datetime 
    20  
    2125import interfaces, db 
    2226 
     
    5761 
    5862################################# 
    59 #  
     63# Object Audit Handler 
     64################################# 
     65class ObjectAuditor( object ): 
    6066     
     67    interface.implements( interfaces.IObjectAuditor ) 
     68     
     69    def __init__( self, context): 
     70        self.context = context 
     71     
     72    def _handle( self, event, change_kind): 
     73        log = interfaces.IAuditLog( self.context ) 
     74        log.createRecord( change_kind=change_kind )         
     75                             
     76    def added( self, event): 
     77        if inPortalFactory( self.context ):  
     78            return                     
     79        self._handle( event, 'added') 
     80 
     81    def created( self, event): 
     82        self._handle( event, 'created')                 
     83         
     84    def modified( self, event): 
     85        if inPortalFactory( self.context ):  
     86            return 
     87        self._handle( event, 'modified') 
     88             
     89    def copied( self, event): 
     90        self._handle( event, 'copied') 
     91 
     92    def deleted( self, event): 
     93        self._handle( event, 'deleted') 
     94         
     95    def workflow( self, event): 
     96        self._handle( event, 'workflow')                 
     97 
    6198################################# 
    6299# Audit Log 
     
    81118 
    82119    def createRecord( self, change_kind): 
     120        if self.context.UID() is None: 
     121            import pdb; pdb.set_trace() 
     122             
    83123        record = AuditRecord( content_uid = self.context.UID(), 
    84124                              user_id = getSecurityManager().getUser().getId(), 
     
    93133 
    94134def handleAdd( ob, event ): 
    95     log = interfaces.IAuditLog( ob ) 
    96     log.createRecord( change_kind='added' ) 
     135    auditor = interfaces.IObjectAuditor( ob ) 
     136    auditor.added( event ) 
    97137                  
    98138def handleModified( ob, event ): 
    99     log = interfaces.IAuditLog( ob ) 
    100     log.createRecord( change_kind='modified' ) 
     139    auditor = interfaces.IObjectAuditor( ob ) 
     140    auditor.modified( event )     
    101141 
    102142def handleDeleted( ob, event ): 
    103     log = interfaces.IAuditLog( ob ) 
    104     log.createRecord( change_kind='deleted' ) 
     143    auditor = interfaces.IObjectAuditor( ob ) 
     144    auditor.deleted( event )         
     145     
     146def handleMoved( ob, event ): 
     147    auditor = interfaces.IObjectAuditor( ob ) 
     148    auditor.moved( event )             
     149     
     150def handleCopied( ob, event ): 
     151    auditor = interfaces.IObjectAuditor( ob ) 
     152    auditor.copied( event )                 
     153     
     154def handleWorkflow( ob, event ): 
     155    auditor = interfaces.IObjectAuditor( ob ) 
     156    auditor.workflow( event ) 
    105157 
    106158################################# 
    107159# Utilities 
    108160################################# 
     161 
     162def inPortalFactory( ob ):   
     163     chain = aq_chain( aq_inner( ob ) ) 
     164     print chain 
     165     # if not enough acquisition context return true 
     166     if not chain:  
     167         return True 
     168     in_factory = filter( None, map( lambda ii: isinstance(ii, PortalFactory), chain)) 
     169     print in_factory 
     170     return in_factory or False 
    109171 
    110172def extractFields( ob ): 
  • ore.auditlog/trunk/src/ore/auditlog/interfaces.py

    r2019 r2111  
    1919        """ return an iterator through the selected number of records in the audit log """ 
    2020         
     21         
    2122    def __len__( ): 
    2223        """ number of records in the audit log""" 
     24 
     25 
     26class IObjectAuditor( interface.Interface ): 
     27    """ 
     28    adapter which is responsible for logging events 
     29    """ 
     30     
     31    def modified( event ): 
     32        """ object is modified """ 
     33         
     34    def moved( event): 
     35        """ object moved """ 
     36                 
     37    def created( event ): 
     38        """ object is created """         
     39                 
     40    def copied( event ): 
     41        """ object is copied """ 
     42         
     43    def deleted( event ): 
     44        """ object is deleted """ 
     45 
     46    def workflow( event ): 
     47        """ object has a workflow state change""" 
     48     
     49class IAuditUtility( interface.Interface ): 
     50   """  utility adapter is responsible for creating 
     51   """ 
     52 
     53class IAuditClassFactory( interface.Interface ): 
     54    """ 
     55    """ 
     56 
     57class IAuditReferenceHandler( interface.Interface ): 
     58    """ 
     59    """ 
    2360         
    2461class IAuditRecord( interface.Interface ): 
Note: See TracChangeset for help on using the changeset viewer.