Skip to content

Instantly share code, notes, and snippets.

@tcurvelo
Created April 25, 2013 17:41
Show Gist options
  • Save tcurvelo/5461583 to your computer and use it in GitHub Desktop.
Save tcurvelo/5461583 to your computer and use it in GitHub Desktop.
Indexing an arbitrary content in portal_catalog.
import transaction
from AccessControl.SecurityManagement import newSecurityManager
from DateTime import DateTime
from Testing.makerequest import makerequest
app = makerequest(app)
newSecurityManager(None, app.acl_users.getUserById('admin'))
site = app.plone
ct = site.portal_catalog
person = {
'Description': 'A dude',
'title': 'John Doe',
'url': 'http://localhost:8080/plone/person/1',
'text': 'John Doe',
'portal_type': 'Document',
'getId': '1',
'id': '1',
'meta_type': 'Document',
'__roles__': ('Manager', 'Owner', 'Editor', 'Reader', 'Contributor'),
'path': ('', 'plone', 'person', '1'),
'_Access_contents_information_Permission': ('Manager', 'Owner', 'Editor', 'Reader', 'Contributor'),
'Type': 'Document',
'email': '',
'_View_Permission': ('Manager', 'Owner', 'Editor', 'Reader', 'Contributor')
}
class Person():
data = DateTime()
def getPhysicalPath(self,**kw):
return tuple(self.path)
def Data(self):
return self.data
def ModificationDate(self):
return self.data
def modified(self):
return self.data
def created(self):
return self.data
def Title(self):
return self.title
def SearchableText(self,**kw):
return self.text
def absolute_url(self,**kw):
return self.url
def allowedRolesAndUsers(self):
return self._roles_
new_person = Person()
for k,v in person.items():
setattr(new_person, k, v)
ct.catalog_object(new_person,uid='/'.join(new_person.getPhysicalPath()))
transaction.commit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment