示例#1
0
    def make_resource(self, name, cls, soft=False, **kw):
        # Automatic name
        if name is None:
            name = self.make_resource_name()

        # Make a resource somewhere else
        if '/' in name:
            path = dirname(name)
            name = basename(name)
            resource = self.get_resource(path)
            resource.make_resource(name, cls, soft=soft, **kw)
            return

        # Soft
        if soft is True:
            resource = self.get_resource(name, soft=True)
            if resource:
                return resource

        # Make the metadata
        metadata = Metadata(cls=cls)
        self.handler.set_handler('%s.metadata' % name, metadata)
        metadata.set_property('mtime', get_context().timestamp)
        # Initialize
        resource = self.get_resource(name)
        self.database.add_resource(resource)
        resource.init_resource(**kw)
        # Ok
        return resource
示例#2
0
    def make_resource(self, name, cls, soft=False, **kw):
        # Automatic name
        if name is None:
            name = self.make_resource_name()

        # Make a resource somewhere else
        if '/' in name:
            path = dirname(name)
            name = basename(name)
            resource = self.get_resource(path)
            resource.make_resource(name, cls, soft=soft, **kw)
            return

        # Soft
        if soft is True:
            resource = self.get_resource(name, soft=True)
            if resource:
                return resource

        # Make the metadata
        metadata = Metadata(cls=cls)
        self.handler.set_handler('%s.metadata' % name, metadata)
        metadata.set_property('mtime', get_context().timestamp)
        # Initialize
        resource = self.get_resource(name)
        resource.init_resource(**kw)
        # Ok
        self.database.add_resource(resource)
        return resource
示例#3
0
 def setUp(self):
     metadata = Metadata(cls=WebPage)
     title = MetadataProperty(u'Hello World', lang='en')
     metadata.set_property('title', title)
     self.metadata = metadata
     # Sandbox
     vfs.make_folder('sandbox')
示例#4
0
 def setUp(self):
     metadata = Metadata(cls=WebPage)
     title = MetadataProperty(u'Hello World', lang='en')
     metadata.set_property('title', title)
     self.metadata = metadata
     # Sandbox
     lfs.make_folder('sandbox')
示例#5
0
 def test_good(self):
     metadata = Metadata(string=good_metadata)
     value = metadata.get_property('free_title')
     self.assertEqual(type(value), list)
     expected = {'en': 'bye', 'fr': 'au revoir'}
     for property in value:
         language = property.get_parameter('lang')[0]
         self.assertEqual(property.value, expected[language])
示例#6
0
 def test_good(self):
     metadata = Metadata(string=good_metadata)
     value = metadata.get_property('free_title')
     self.assertEqual(type(value), list)
     expected = {'en': 'bye', 'fr': 'au revoir'}
     for property in value:
         language = property.get_parameter('lang')[0]
         self.assertEqual(property.value, expected[language])
示例#7
0
class LoadTestCase(TestCase):
    def setUp(self):
        self.metadata = Metadata(string=metadata_str, cls=WebPage)

    def test_format(self):
        format = self.metadata.format
        self.assertEqual(format, 'webpage')

    def test_version(self):
        value = self.metadata.version
        self.assertEqual(value, '20090122')

    def test_title(self):
        value = self.metadata.get_property('title', language='fr').value
        self.assertEqual(type(value), unicode)
        self.assertEqual(value, u'bonjour')
示例#8
0
class LoadTestCase(TestCase):

    def setUp(self):
        self.metadata = Metadata(string=metadata_str)


    def test_format(self):
        format = self.metadata.format
        self.assertEqual(format, 'webpage')


    def test_version(self):
        value = self.metadata.version
        self.assertEqual(value, '20090122')


    def test_title(self):
        value = self.metadata.get_property('title', language='fr').value
        self.assertEqual(type(value), unicode)
        self.assertEqual(value, u'bonjour')
示例#9
0
def create_server(target, email, password, root,  modules,
                  listen_port='8080', smtp_host='localhost', log_email=None):
    # Get modules
    for module in modules:
        exec('import %s' % module)
    # Load the root class
    if root is None:
        root_class = Root
    else:
        modules.insert(0, root)
        exec('import %s' % root)
        exec('root_class = %s.Root' % root)
    # Make folder
    try:
        mkdir(target)
    except OSError:
        raise ValueError('can not create the instance (check permissions)')

    # The configuration file
    config = template.format(
        modules=" ".join(modules),
        listen_port=listen_port or '8080',
        smtp_host=smtp_host or 'localhost',
        smtp_from=email,
        log_email=log_email)
    open('%s/config.conf' % target, 'w').write(config)

    # Create the folder structure
    database = make_database(target)
    mkdir('%s/log' % target)
    mkdir('%s/spool' % target)

    # Create a fake context
    context = get_fake_context(database)
    context.set_mtime = True

    # Make the root
    metadata = Metadata(cls=root_class)
    database.set_handler('.metadata', metadata)
    root = root_class(metadata)
    # Re-init context with context cls
    context = get_fake_context(context.database, root.context_cls)
    context.set_mtime = True
    # Init root resource
    root.init_resource(email, password)
    # Set mtime
    root.set_property('mtime', context.timestamp)
    context.root = root
    # Save changes
    context.git_message = 'Initial commit'
    database.save_changes()
    # Index the root
    catalog = database.catalog
    catalog.save_changes()
    catalog.close()
    # Bravo!
    print('*')
    print('* Welcome to ikaaro')
    print('* A user with administration rights has been created for you:')
    print('*   username: %s' % email)
    print('*   password: %s' % password)
    print('*')
    print('* To start the new instance type:')
    print('*   icms-start.py %s' % target)
    print('*')
示例#10
0
 def setUp(self):
     self.metadata = Metadata(string=metadata_str)
示例#11
0
 def setUp(self):
     self.metadata = Metadata(string=metadata_str, cls=WebPage)
示例#12
0
 def test_good(self):
     metadata = Metadata(string=good_metadata, cls=OpenWebPage)
     prop = metadata.get_property('free_title')
     self.assertEqual(prop[0].value, 'bye')
示例#13
0
 def setUp(self):
     self.metadata = Metadata(string=metadata_str)