from zope.formlib import form from zope.formlib import namedtemplate from zope.app.pagetemplate import ViewPageTemplateFile from zopetic.interfaces import ITicket from zopetic.interfaces import ICollector from zopetic.ticketcollector import Collector from zope.app.intid.interfaces import IIntIds from zope.app.intid import IntIds from zope.component import getSiteManager from zope.app.catalog.interfaces import ICatalog from zope.app.catalog.catalog import Catalog from zope.security.proxy import removeSecurityProxy from zope.app.catalog.text import TextIndex from zope.app.container.interfaces import INameChooser class AddCollector(form.AddForm): form_fields = form.Fields(ICollector) template = namedtemplate.NamedTemplate('collector') def create(self, data): collector = Collector() collector.description = data['description'] return collector def add(self, object): ob = self.context.add(object) sm = getSiteManager(ob) rootfolder = ob.__parent__ cat = Catalog() namechooser = INameChooser(rootfolder) catname = namechooser.chooseName('Catalog', cat) rootfolder[catname] = cat if sm.queryUtility(IIntIds) is None: uid = IntIds() rootfolder['uid'] = uid sm.registerUtility(removeSecurityProxy(uid), IIntIds, '') pass #FIXME: should we use use unique name for registration? sm.registerUtility(removeSecurityProxy(cat), ICatalog, 'collectorcatalog') cat['description'] = TextIndex('description', ITicket) self._finished_add = True return ob collector_page_template = namedtemplate.NamedTemplateImplementation( ViewPageTemplateFile('collectorform.pt'), form.interfaces.IPageForm)