Mario Orlandi's Snippets

21/05/2009

newSecurityManager

Filed under: snippets — Tags: , — morlandi @ 17:43
from AccessControl.SecurityManagement import newSecurityManager, noSecurityManager
...

user = self.context.getWrappedOwner()
newSecurityManager(self.request, user)

self.doProtectedMethod()

noSecurityManager()

createPortalObject()

Filed under: snippets — Tags: , — morlandi @ 17:42
    def createPortalObject(self,folder,type_name,title):
        """ Helper per a portal object of specific type in the given folder """
        objId = None
        try:
            id = self.context.plone_utils.normalizeString(title, relaxed=True)
            objId = folder.invokeFactory(id=id,type_name=type_name)
        except Exception, e:
            self.log(str(e))
            id = folder.generateUniqueId(type_name)
            objId = folder.invokeFactory(id=id,type_name=type_name)
        self.log( 'createPortalObject(): objId = \"%s\"' % (objId) )

        obj = getattr(folder,objId,None)
        obj.setTitle(title)
        obj.reindexObject()

        return obj

transaction savepoint

Filed under: snippets — Tags: , — morlandi @ 17:41
transaction.get().savepoint(optimistic=True)

Portal Catalog samples

Filed under: snippets — Tags: , — morlandi @ 17:40
from Products.CMFCore.utils import getToolByName
catalog = getToolByName(context, 'portal_catalog')
# available indexes:
print catalog.indexes()
# available metadata columns:
print catalog.schema()

(1)
basePath = '/'.join(self.getPhysicalPath())
query = filter
query['sort_on'] = 'getObjPositionInParent'
query['sort_order'] = 'reverse'
query['path'] = {'query' : basePath, 'depth' : levels}
query['portal_type'] = types
brains = catalog.searchResults(query)

(2)
purchaseBrains = context.portal_catalog.searchResults(portal_type='Purchase',getId=id)

(3)
query = {}
query['portal_type'] = 'Purchase'
query['purchaseId'] = purchaseId
purchaseBrains = context.portal_catalog.searchResults(query)

(4)
purchaseBrains = context.portal_catalog.searchResults( portal_type='Purchase', purchaseId = purchaseId )

(5)
t = (DateTime.now() - 1).Date()
folder = getattr(portal,'downloads')
folderPath = urltool.getPortalPath() + '/' + urltool.getRelativeContentURL(folder)
query = {}
query['created'] = {'query': t, 'range': 'max'}
query['path'] = {'query' : folderPath, 'depth' : 1}
query['portal_type'] = ('Folder',)
brains = catalog.searchResults(query)

Move items between two folders

Filed under: snippets — Tags: , — morlandi @ 17:40
from Products.CMFCore.utils import getToolByName
catalog = getToolByName(context, 'portal_catalog')
urltool = getToolByName(context, "portal_url")
portal = urltool.getPortalObject()

sourceFolder = getattr(portal,'italia')
sourceFolderPath = urltool.getPortalPath() + '/' + urltool.getRelativeContentURL(sourceFolder)

targetFolder = getattr(portal,'italia2')
targetFolderPath = urltool.getPortalPath() + '/' + urltool.getRelativeContentURL(targetFolder)

print str(sourceFolder) + ' ' + sourceFolderPath
print str(targetFolder) + ' ' + targetFolderPath

query = {}
query['path'] = {'query' : sourceFolderPath, 'depth' : 2}
query['portal_type'] = ('SalesArea',)
brains = catalog.searchResults(query,sort_on='getId')
# for reverse sorting: sort_order='reverse'

for brain in brains:
    print brain.getId
    folder = brain.getObject().aq_parent
    print folder.getId
    cb = folder.manage_cutObjects(ids=[brain.getId])
    targetFolder.manage_pasteObjects(cb)

return printed

Retrieve and delete old items

Filed under: snippets — Tags: , — morlandi @ 17:39
import DateTime
from Products.CMFCore.utils import getToolByName
catalog = getToolByName(context, 'portal_catalog')
urltool = getToolByName(context, "portal_url")
portal = urltool.getPortalObject()

t = (DateTime.now() - 2).Date()
folder = getattr(portal,'downloads')
folderPath = urltool.getPortalPath() + '/' + urltool.getRelativeContentURL(folder)

print 'Deleting documents in "%s" created before %s ...' % (folderPath,t)

query = {}
query['path'] = {'query' : folderPath, 'depth' : 1}
query['created'] = {'query': t, 'range': 'max'}
query['portal_type'] = ('Folder',)
brains = catalog.searchResults(query)

ids=[]
for brain in brains:
    ids.append(brain.id)
print ids

folder.manage_delObjects(ids=ids)

return printed

Check Member Role in Context

Filed under: snippets — Tags: , — morlandi @ 17:38
# verifies if the member has expected roles in context

    def _checkMemberRole(self):
        authorized = False
        membership_tool = getToolByName(self.context, 'portal_membership')
        member = membership_tool.getAuthenticatedMember()
        if member is not None:
            roles = member.getRolesInContext(self.context)
            if 'Manager' in roles or 'UT' in roles:
                authorized = True
        return authorized

Theme: Silver is the New Black. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.