Beispiel #1
0
def register(klass):
    global documents
    if klass.document_type in documents:
        raise ValueError("document_type %s already registered!" % klass.document_type)
    documents[klass.document_type] = klass
    klass.type_name = klass.document_type
    serialization.register(klass)
    return klass
Beispiel #2
0
def register(klass, name, configuration_id=None):
    global registry
    registry[name] = klass
    doc_id = configuration_id or name + "_conf"
    klass.descriptor_type = name
    klass.type_name = name + ":data"
    klass.configuration_doc_id = doc_id
    serialization.register(klass)
    return klass
Beispiel #3
0
    def __class__init__(cls, name, bases, dct):
        # agent.descriptor_type -> HandlerFactory
        cls._handlers = dict()
        # name -> Relation
        cls._relations = dict()

        for base in bases:
            cls._relations.update(getattr(base, '_relations', dict()))
            cls._handlers.update(getattr(base, '_handlers', dict()))

        cls._define_default_handler(cls.default_handler)
        serialization.register(cls)
Beispiel #4
0
    def testMigrating(self):
        serialization.register(VersionedTest1)
        feat.initial_data(VersionedTest1)
        yield tools.push_initial_data(self.connection)
        doc = yield self.connection.get_document('testdoc')
        self.assertEqual('default', doc.field1)

        serialization.register(VersionedTest2)
        yield tools.migration_script(self.connection)

        doc = yield self.connection.get_document('testdoc')
        self.assertEqual('default upgraded', doc.field1)
Beispiel #5
0
    def testComplexMigration(self):
        migration.register(ComplexMigration(type_name=VersionedTest2.type_name,
                                            source_ver=1, target_ver=2))

        serialization.register(VersionedTest2)
        doc = yield self.connection.save_document(VersionedTest1())
        self.assertEqual('default', doc.field1)

        yield tools.migration_script(self.connection)
        self.assertTrue(self.run)

        doc = yield self.connection.get_document('testdoc')
        self.assertEqual('default upgraded', doc.field1)
        self.assertTrue('attachment' in doc.attachments)
Beispiel #6
0
    def testMigrating(self):
        serialization.register(VersionedTest1)
        feat.initial_data(VersionedTest1)
        yield tools.push_initial_data(self.connection)
        doc = yield self.connection.get_document('testdoc')
        self.assertEqual('default', doc.field1)

        serialization.register(VersionedTest2)
        migration.register(SimpleMigration(type_name=VersionedTest2.type_name,
                                           source_ver=1,
                                           target_ver=2))
        yield tools.migration_script(self.connection)

        doc = yield self.connection.get_document('testdoc')
        self.assertEqual('default upgraded', doc.field1)
Beispiel #7
0
    def testComplexMigration(self):
        mig = migration.Migration()

        self.run = False

        def handler(connection, unparsed):
            doc = connection._unserializer.convert(unparsed)
            self.run = True
            doc.create_attachment('attachment', 'Hi!')
            return connection.save_document(doc)

        mig.registry.register(VersionedTest2)
        mig.migrate_type(VersionedTest2, handler)
        r = applications.get_application_registry()
        snapshot = r.get_snapshot()
        self.addCleanup(r.reset, snapshot)
        r.reset([])
        app = applications.Application()
        app.name = u'test'
        r.register(app)
        app.register_migration('1.0', mig)

        serialization.register(VersionedTest2)
        doc = yield self.connection.save_document(VersionedTest2())
        self.assertEqual('default', doc.field1)

        yield tools.migration_script(self.connection)
        self.assertTrue(self.run)

        doc = yield self.connection.get_document('testdoc')
        self.assertEqual('default', doc.field1)
        self.assertTrue('attachment' in doc.attachments)

        version_doc = yield self.connection.query_view(
            tools.ApplicationVersions, key='test', include_docs=True)
        self.assertEquals(1, len(version_doc))
        self.assertEquals('1.0', version_doc[0].version)
        self.assertEquals('test', version_doc[0].name)
Beispiel #8
0
 def setUp(self):
     self.serializer = json.Serializer()
     register(TestDocument)
     self.unserializer = json.PaisleyUnserializer()
Beispiel #9
0
 def setUp(self):
     self.serializer = json.Serializer()
     register(TestDocument)
     self.unserializer = dcommon.CouchdbUnserializer()
Beispiel #10
0
 def __init__(cls, name, bases, dct):
     cls.type_name = reflect.canonical_name(cls)
     serialization.register(cls)
     super(MetaReplier, cls).__init__(name, bases, dct)
Beispiel #11
0
 def __init__(self, instance):
     self.instance = instance
     self.type_name = instance.type_name
     serialization.register(self)
Beispiel #12
0
 def __init__(self, replay, type_name, cls):
     self.replay = replay
     self.type_name = type_name
     self.cls = cls
     serialization.register(self)