def add_site(self): data, errors = self.extractData() if errors: return silvaforms.FAILURE self.context.manage_addProduct['Silva'].manage_addRoot( data['identifier'], data.getDefault('title')) root = self.context._getOb(data['identifier']) getUtility(IMessageService).send( _(u"New Silva site ${identifier} added.", mapping={'identifier': data['identifier']}), self.request) if data.getDefault('add_search'): # install a silva find instance factory = root.manage_addProduct['SilvaFind'] factory.manage_addSilvaFind('search', 'Search this site') if data.getDefault('add_documentation'): transaction.commit() # Be sure everything in the site is # in the DB before. install the user # documentation .zexp install_documentation(root, self.request) self.redirect(absoluteURL(root, self.request) + '/edit') return silvaforms.SUCCESS
def run(self, root, options): if options.list: logger.info('Listing silva sites') for content in root.objectValues(): if IRoot.providedBy(content): logger.info('%s (version %s)' % ( '/'.join(content.getPhysicalPath()), content.get_silva_content_version())) return if not options.identifier: fail(u"Please provide a site identifier") identifier = options.identifier if ':' in identifier: identifier, title = identifier.split(':', 1) else: title = identifier if options.delete: if identifier not in root.objectIds(): fail( u'There is no such Silva root "%s" to delete.', identifier) root.manage_delObjects([identifier]) return if options.add: if identifier in root.objectIds(): fail( u'There is already a Zope object identifier by "%s"', identifier) factory = root.manage_addProduct['Silva'] factory.manage_addRoot(identifier, title) transaction.commit() logger.info( u'Silva root "%s" added.', identifier) root = root._getOb(identifier) if options.documentation: factory = root.manage_addProduct['SilvaFind'] factory.manage_addSilvaFind('search', 'Search this site') install_documentation(root, TestRequest()) transaction.commit() logger.info( u'Silva documentation installed inside Silva root "%s".', identifier) if options.user: parts = options.user.split(':') if len(parts) < 2 or len(parts) > 3: fail('Impossible to interpret user definition') username = parts[0] password = parts[1] role = parts[2] if len(parts) == 3 else 'Manager' acl_users = root._getOb('acl_users') users = acl_users._getOb('users') roles = acl_users._getOb('roles') if not role in roles.listRoleIds(): fail(u'Role "%s" unknown.' % role) users.addUser(username, username, password) roles.assignRoleToPrincipal(role, username) transaction.commit() logger.info( u'User added to Silva root "%s".', identifier)
def test_install_documentation(self): """Test documentation installation. That should not make any error at all. """ self.assertFalse('docs' in self.root.objectIds()) install_documentation(self.root, TestRequest()) self.assertTrue('docs' in self.root.objectIds()) self.assertTrue(verifyObject(IPublication, self.root._getOb('docs')))
def add_site(self): data, errors = self.extractData() if errors: return silvaforms.FAILURE self.context.manage_addProduct['Silva'].manage_addRoot( data['identifier'], data.getDefault('title')) root = self.context._getOb(data['identifier']) getUtility(IMessageService).send( _("New Silva site ${identifier} added.", mapping={'identifier': data['identifier']}), self.request) if data.getDefault('add_search'): # install a silva find instance factory = root.manage_addProduct['SilvaFind'] factory.manage_addSilvaFind('search', 'Search this site') if data.getDefault('add_documentation'): transaction.commit() # Be sure everything in the site is # in the DB before. install the user # documentation .zexp install_documentation(root, self.request) self.redirect(absoluteURL(root, self.request) + '/edit') return silvaforms.SUCCESS