示例#1
0
    def testValidateNumber(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "number"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({
            "field": 5.5
        })

        self.assertEqual(5.5, m.field)
        self.assertRaises(ValidationError, Model, {
            "field": "hi"
        })

        # using an int should still work
        m = Model({
            "field": 5
        })

        self.assertEqual(5, m.field)

        # using a long should still work
        m = Model({
            "field": 10L
        })

        self.assertEqual(10L, m.field)
示例#2
0
def xmpp(ctx):
    """Hello world"""

    check_root()

    from isomer import database
    database.initialize(ctx.obj['dbhost'], ctx.obj['dbname'])

    from isomer.schemata.component import ComponentConfigSchemaTemplate
    factory = model_factory(ComponentConfigSchemaTemplate)
    bot_config = factory.find_one({'name': 'XMPPBOT'})

    if bot_config is None:
        password = std_uuid()

        bot_config = factory({
            'nick': 'claptrap',
            'name': 'XMPPBOT',
            'componentclass': 'XMPPBot',
            'jid': 'claptrap@localhost/node',
            'password': password,
            'uuid': std_uuid()
        })
        bot_config.save()

    # log(bot_config.serializablefields(), pretty=True)
    ctx.obj['bot_config'] = bot_config
示例#3
0
    def setUp(self):
        self.schema = {
            'name': 'Country',
            'properties': {
                'name': {'type': 'string'},
                'abbreviation': {'type': 'string'},
                'languages': {
                    'type': ['array', 'null'],
                    'items': {
                        'type': 'string'
                    }
                }
            },
            'additionalProperties': False,
        }

        # Connect to warmongo_test - hopefully it doesn't exist
        warmongo.connect("warmongo_test")
        self.Country = warmongo.model_factory(self.schema)

        # Drop all the data in it
        self.Country.collection().remove({})

        # Create some defaults
        self.Country({
            "name": "Sweden",
            "abbreviation": "SE",
            "languages": ["swedish"]
        })
        self.Country({
            "name": "United States of America",
            "abbreviation": "US",
            "languages": ["english"]
        })
示例#4
0
    def testCastWithObject(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "object",
                    "properties": {
                        "subfield": {"type": "integer"}
                    }
                }
            }
        }
        Model = warmongo.model_factory(schema)

        m = Model()

        old_fields = {
            "field": {
                "subfield": 5.2
            }
        }

        fields = m.cast(old_fields)

        self.assertEqual(5, fields["field"]["subfield"])
示例#5
0
文件: database.py 项目: ri0t/hfos
def profile(schemaname='sensordata', profiletype='pjs'):
    hfoslog("Profiling ", schemaname, emitter='DB')

    schema = schemastore[schemaname]['schema']

    hfoslog("Schema: ", schema, lvl=debug, emitter='DB')

    testclass = None

    if profiletype == 'warmongo':
        hfoslog("Running Warmongo benchmark", emitter='DB')
        testclass = warmongo.model_factory(schema)
    elif profiletype == 'pjs':
        hfoslog("Running PJS benchmark", emitter='DB')
        try:
            import python_jsonschema_objects as pjs
        except ImportError:
            hfoslog("PJS benchmark selected but not available. Install "
                    "python_jsonschema_objects (PJS)", emitter="DB")
        hfoslog()
        builder = pjs.ObjectBuilder(schema)
        ns = builder.build_classes()
        pprint(ns)
        testclass = ns[schemaname]
        hfoslog("ns: ", ns, lvl=warn, emitter='DB')

    if testclass is not None:
        hfoslog("Instantiating elements...", emitter='DB')
        for i in range(100):
            testclass()
    else:
        hfoslog("No Profiletype available!", emitter="DB")

    hfoslog("Profiling done", emitter='DB')
示例#6
0
文件: database.py 项目: anm/hfos
def _build_model_factories(store):
    result = {}

    for schemaname in store:

        schema = None

        try:
            schema = store[schemaname]['schema']
        except KeyError:
            hfoslog("No schema found for ",
                    schemaname,
                    lvl=critical,
                    emitter='DB')

        try:
            result[schemaname] = warmongo.model_factory(schema)
        except Exception as e:
            hfoslog("Could not create factory for schema ",
                    e,
                    type(e),
                    schemaname,
                    schema,
                    lvl=critical,
                    emitter='DB')

    return result
示例#7
0
文件: configurator.py 项目: ri0t/hfos
    def list(self, event):
        """Processes configuration list requests

        :param event:
        """

        try:

            componentlist = model_factory(Schema).find({})
            data = []
            for comp in componentlist:
                data.append({
                    'name': comp.name,
                    'uuid': comp.uuid,
                    'class': comp.componentclass,
                    'active': comp.active
                })

            data = sorted(data, key=lambda x: x['name'])

            response = {
                'component': 'hfos.ui.configurator',
                'action': 'list',
                'data': data
            }
            self.fireEvent(send(event.client.uuid, response))
            return
        except Exception as e:
            self.log("List error: ", e, type(e), lvl=error, exc=True)
示例#8
0
文件: configurator.py 项目: ri0t/hfos
    def get(self, event):
        if self._check_permission(event) is False:
            response = {
                'component': 'hfos.ui.configurator',
                'action': 'get',
                'data': False
            }
            self.log('No permission to access configuration',
                     event.user,
                     lvl=warn)

            self.fireEvent(send(event.client.uuid, response))
            return

        try:
            comp = event.data['uuid']
        except KeyError:
            comp = None

        if not comp:
            self.log('Invalid get request without schema or component',
                     lvl=error)
            return

        self.log("Config data get  request for ", event.data, "from",
                 event.user)

        component = model_factory(Schema).find_one({'uuid': comp})
        response = {
            'component': 'hfos.ui.configurator',
            'action': 'get',
            'data': component.serializablefields()
        }
        self.fireEvent(send(event.client.uuid, response))
示例#9
0
文件: configurator.py 项目: ri0t/hfos
    def put(self, event):
        self.log("Configuration put request ", event.user)

        try:
            if self._check_permission(event) is False:
                raise PermissionError

            component = model_factory(Schema).find_one(
                {'uuid': event.data['uuid']})

            component.update(event.data)
            component.save()

            response = {
                'component': 'hfos.ui.configurator',
                'action': 'put',
                'data': True
            }
            self.log('Updated component configuration:', component.name)
        except (KeyError, ValueError, ValidationError, PermissionError) as e:
            response = {
                'component': 'hfos.ui.configurator',
                'action': 'put',
                'data': False
            }
            self.log('Storing component configuration failed: ',
                     type(e),
                     e,
                     exc=True,
                     lvl=error)

        self.fireEvent(send(event.client.uuid, response))
        return
示例#10
0
    def testValidateString(self):
        schema = {"name": "Model", "properties": {"field": {"type": "string"}}}

        Model = warmongo.model_factory(schema)

        m = Model({"field": "asdf"})

        self.assertEqual("asdf", m.field)
        self.assertRaises(ValidationError, Model, {"field": 5})
示例#11
0
文件: hfos_manage.py 项目: anm/hfos
def config(ctx, dbhost):
    """Configuration management operations (GROUP)"""

    from hfos import database
    database.initialize(dbhost)
    ctx.obj['db'] = database

    from hfos.schemata.component import ComponentConfigSchemaTemplate
    ctx.obj['col'] = model_factory(ComponentConfigSchemaTemplate)
示例#12
0
    def testValidateAny(self):
        schema = {"name": "Model", "properties": {"field": {"type": "any"}}}

        Model = warmongo.model_factory(schema)

        Model({"field": ["asdf", "hello"]})
        Model({"field": "asdf"})
        Model({"field": 5})
        Model({"field": True})
        Model({"field": None})
        Model({"field": {"subfield": "asdf"}})
示例#13
0
    def testValidateDate(self):
        schema = {"name": "Model", "properties": {"field": {"type": "date"}}}

        Model = warmongo.model_factory(schema)

        m = Model({"field": datetime(2010, 5, 12)})

        self.assertEqual(2010, m.field.year)
        self.assertEqual(5, m.field.month)
        self.assertEqual(12, m.field.day)
        self.assertRaises(ValidationError, Model, {"field": "hi"})
示例#14
0
    def __init__(self, uniquename=None, *args, **kwargs):
        self.uniquename = ""

        if uniquename:
            if uniquename not in self.names:
                self.uniquename = uniquename
                self.names.append(uniquename)
            else:
                hfoslog("Unique component added twice: ",
                        uniquename,
                        lvl=critical,
                        emitter="CORE")
        else:
            while True:
                uniquename = "%s%s" % (self.name, randint(0, 32768))
                if uniquename not in self.names:
                    self.uniquename = uniquename
                    self.names.append(uniquename)

                    break

        self.configschema = deepcopy(ComponentBaseConfigSchema)

        self.configschema['schema']['properties'].update(self.configprops)

        # self.log("[UNIQUECOMPONENT] Config Schema: ", self.configschema,
        #         lvl=critical)
        # pprint(self.configschema)

        # self.configschema['name'] = self.uniquename
        # self.configschema['id'] = "#" + self.uniquename

        # schemastore[self.uniquename] = {'schema': self.configschema,
        # 'form': self.configform}

        self.componentmodel = model_factory(self.configschema['schema'])
        # self.log("Component model: ", lvl=critical)
        # pprint(self.componentmodel._schema)

        self._read_config()
        if not self.config:
            self.log("Creating initial default configuration.")
            try:
                self._set_config()
                self._write_config()
            except ValidationError as e:
                self.log("Error during configuration reading: ",
                         e,
                         type(e),
                         exc=True)
示例#15
0
文件: database.py 项目: ri0t/hfos
def test_schemata():
    objects = {}

    for schemaname in schemastore.keys():
        objects[schemaname] = warmongo.model_factory(
            schemastore[schemaname]['schema'])
        try:
            testobject = objects[schemaname]()
            testobject.validate()
        except Exception as e:
            hfoslog('Blank schema did not validate:', schemaname, e,
                    type(e), lvl=verbose, emitter='DB')

    pprint(objects)
示例#16
0
    def testValidateObjectId(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "object_id"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({"field": ObjectId("123412341234123412341234")})

        self.assertEqual(ObjectId("123412341234123412341234"), m.field)
        self.assertRaises(ValidationError, Model, {"field": "hi"})
示例#17
0
    def testValidateBool(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "boolean"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({"field": False})

        self.assertEqual(False, m.field)
        self.assertRaises(ValidationError, Model, {"field": "hi"})
示例#18
0
文件: component.py 项目: ri0t/hfos
    def __init__(self, uniquename=None, *args, **kwargs):
        self.uniquename = ""

        if uniquename:
            if uniquename not in self.names:
                self.uniquename = uniquename
                self.names.append(uniquename)
            else:
                hfoslog("Unique component added twice: ", uniquename,
                        lvl=critical, emitter="CORE")
        else:
            while True:
                uniquename = "%s%s" % (self.name, randint(0, 32768))
                if uniquename not in self.names:
                    self.uniquename = uniquename
                    self.names.append(uniquename)

                    break

        self.configschema = deepcopy(ComponentBaseConfigSchema)

        self.configschema['schema']['properties'].update(self.configprops)

        # self.log("[UNIQUECOMPONENT] Config Schema: ", self.configschema,
        #         lvl=critical)
        # pprint(self.configschema)

        # self.configschema['name'] = self.uniquename
        # self.configschema['id'] = "#" + self.uniquename

        # schemastore[self.uniquename] = {'schema': self.configschema,
        # 'form': self.configform}

        self.componentmodel = model_factory(self.configschema['schema'])
        # self.log("Component model: ", lvl=critical)
        # pprint(self.componentmodel._schema)

        self._read_config()
        if not self.config:
            self.log("Creating initial default configuration.")
            try:
                self._set_config()
                self._write_config()
            except ValidationError as e:
                self.log("Error during configuration reading: ", e, type(e),
                         exc=True)
示例#19
0
    def testValidateInteger(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "integer"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        # floats should not cause validation errors, but they do get truncated
        m = Model({"field": 7.8})

        self.assertEqual(7, m.field)
        self.assertRaises(ValidationError, Model, {"field": "hi"})
示例#20
0
文件: database.py 项目: addy2342/hfos
def _buildModelFactories():
    result = {}

    for schemaname in schemastore:

        schema = None

        try:
            schema = schemastore[schemaname]['schema']
        except KeyError:
            hfoslog("[DB] No schema found for ", schemaname, lvl=critical)

        try:
            result[schemaname] = warmongo.model_factory(schema)
        except Exception as e:
            hfoslog("[DB] Could not create factory for schema ", schemaname, schema, lvl=critical)

    return result
示例#21
0
    def testValidateAny(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "any"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        Model({"field": ["asdf", "hello"]})
        Model({"field": "asdf"})
        Model({"field": 5})
        Model({"field": True})
        Model({"field": None})
        Model({"field": {"subfield": "asdf"}})
示例#22
0
文件: database.py 项目: anm/hfos
def test_schemata():
    objects = {}

    for schemaname in schemastore.keys():
        objects[schemaname] = warmongo.model_factory(
            schemastore[schemaname]['schema'])
        try:
            testobject = objects[schemaname]()
            testobject.validate()
        except Exception as e:
            hfoslog('Blank schema did not validate:',
                    schemaname,
                    e,
                    type(e),
                    lvl=verbose,
                    emitter='DB')

    pprint(objects)
示例#23
0
    def testValidateNumber(self):
        schema = {"name": "Model", "properties": {"field": {"type": "number"}}}

        Model = warmongo.model_factory(schema)

        m = Model({"field": 5.5})

        self.assertEqual(5.5, m.field)
        self.assertRaises(ValidationError, Model, {"field": "hi"})

        # using an int should still work
        m = Model({"field": 5})

        self.assertEqual(5, m.field)

        # using a long should still work
        m = Model({"field": 10L})

        self.assertEqual(10L, m.field)
示例#24
0
    def testValidateString(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "string"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({
            "field": "asdf"
        })

        self.assertEqual("asdf", m.field)
        self.assertRaises(ValidationError, Model, {
            "field": 5
        })
示例#25
0
    def testValidateBool(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "boolean"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({
            "field": False
        })

        self.assertEqual(False, m.field)
        self.assertRaises(ValidationError, Model, {
            "field": "hi"
        })
示例#26
0
    def testValidateObjectId(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "object_id"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({
            "field": ObjectId("123412341234123412341234")
        })

        self.assertEqual(ObjectId("123412341234123412341234"), m.field)
        self.assertRaises(ValidationError, Model, {
            "field": "hi"
        })
示例#27
0
def _build_model_factories(store):
    result = {}

    for schemaname in store:

        schema = None

        try:
            schema = store[schemaname]['schema']
        except KeyError:
            hfoslog("No schema found for ", schemaname, lvl=critical,
                    emitter='DB')

        try:
            result[schemaname] = warmongo.model_factory(schema)
        except Exception as e:
            hfoslog("Could not create factory for schema ", e, type(e), schemaname, schema,
                    lvl=critical, emitter='DB')

    return result
示例#28
0
    def testValidateArray(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({"field": ["asdf", "hello"]})

        self.assertEqual(2, len(m.field))
        self.assertEqual("asdf", m.field[0])
        self.assertRaises(ValidationError, Model, {"field": "hi"})
示例#29
0
    def testValidateInteger(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "integer"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        # floats should not cause validation errors, but they do get truncated
        m = Model({
            "field": 7.8
        })

        self.assertEqual(7, m.field)
        self.assertRaises(ValidationError, Model, {
            "field": "hi"
        })
示例#30
0
    def testBasicCast(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {"type": "integer"},
                "other_field": {"type": "string"},
            }
        }
        Model = warmongo.model_factory(schema)

        m = Model()

        old_fields = {
            "field": 5.2,
            "other_field": "5"
        }

        fields = m.cast(old_fields)

        self.assertEqual(5, fields["field"])
        self.assertEqual("5", fields["other_field"])
示例#31
0
def _buildModelFactories():
    result = {}

    for schemaname in schemastore:

        schema = None

        try:
            schema = schemastore[schemaname]['schema']
        except KeyError:
            hfoslog("[DB] No schema found for ", schemaname, lvl=critical)

        try:
            result[schemaname] = warmongo.model_factory(schema)
        except Exception as e:
            hfoslog("[DB] Could not create factory for schema ",
                    schemaname,
                    schema,
                    lvl=critical)

    return result
示例#32
0
    def setUp(self):
        self.schema = {
            'name': 'Country',
            'properties': {
                'name': {
                    'type': 'string'
                },
                'abbreviation': {
                    'type': 'string'
                },
                'languages': {
                    'type': 'array',
                    'items': {
                        'type': 'string'
                    }
                }
            },
            'additionalProperties': False,
        }

        # Connect to warmongo_test - hopefully it doesn't exist
        warmongo.connect("warmongo_test")
        self.Country = warmongo.model_factory(self.schema)

        # Drop all the data in it
        self.Country.collection().remove({})

        # Create some defaults
        sweden = self.Country({
            "name": "Sweden",
            "abbreviation": "SE",
            "languages": ["swedish"]
        })
        sweden.save()
        usa = self.Country({
            "name": "United States of America",
            "abbreviation": "US",
            "languages": ["english"]
        })
        usa.save()
示例#33
0
    def testCastWithArray(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                }
            }
        }
        Model = warmongo.model_factory(schema)

        m = Model()

        old_fields = {"field": [5.2, 7]}

        fields = m.cast(old_fields)

        self.assertEqual(5, fields["field"][0])
        self.assertEqual(7, fields["field"][1])
示例#34
0
    def testBasicCast(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "integer"
                },
                "other_field": {
                    "type": "string"
                },
            }
        }
        Model = warmongo.model_factory(schema)

        m = Model()

        old_fields = {"field": 5.2, "other_field": "5"}

        fields = m.cast(old_fields)

        self.assertEqual(5, fields["field"])
        self.assertEqual("5", fields["other_field"])
示例#35
0
    def testValidateDate(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "date"
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({
            "field": datetime(2010, 5, 12)
        })

        self.assertEqual(2010, m.field.year)
        self.assertEqual(5, m.field.month)
        self.assertEqual(12, m.field.day)
        self.assertRaises(ValidationError, Model, {
            "field": "hi"
        })
示例#36
0
    def testCastWithObject(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "object",
                    "properties": {
                        "subfield": {
                            "type": "integer"
                        }
                    }
                }
            }
        }
        Model = warmongo.model_factory(schema)

        m = Model()

        old_fields = {"field": {"subfield": 5.2}}

        fields = m.cast(old_fields)

        self.assertEqual(5, fields["field"]["subfield"])
示例#37
0
文件: database.py 项目: anm/hfos
def profile(schemaname='sensordata', profiletype='pjs'):
    hfoslog("Profiling ", schemaname, emitter='DB')

    schema = schemastore[schemaname]['schema']

    hfoslog("Schema: ", schema, lvl=debug, emitter='DB')

    testclass = None

    if profiletype == 'warmongo':
        hfoslog("Running Warmongo benchmark", emitter='DB')
        testclass = warmongo.model_factory(schema)
    elif profiletype == 'pjs':
        hfoslog("Running PJS benchmark", emitter='DB')
        try:
            import python_jsonschema_objects as pjs
        except ImportError:
            hfoslog(
                "PJS benchmark selected but not available. Install "
                "python_jsonschema_objects (PJS)",
                emitter="DB")
        hfoslog()
        builder = pjs.ObjectBuilder(schema)
        ns = builder.build_classes()
        pprint(ns)
        testclass = ns[schemaname]
        hfoslog("ns: ", ns, lvl=warn, emitter='DB')

    if testclass is not None:
        hfoslog("Instantiating elements...", emitter='DB')
        for i in range(100):
            testclass()
    else:
        hfoslog("No Profiletype available!", emitter="DB")

    hfoslog("Profiling done", emitter='DB')
示例#38
0
    def testValidateArray(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        }

        Model = warmongo.model_factory(schema)

        m = Model({
            "field": ["asdf", "hello"]
        })

        self.assertEqual(2, len(m.field))
        self.assertEqual("asdf", m.field[0])
        self.assertRaises(ValidationError, Model, {
            "field": "hi"
        })
示例#39
0
    def testCastWithArray(self):
        schema = {
            "name": "Model",
            "properties": {
                "field": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                }
            }
        }
        Model = warmongo.model_factory(schema)

        m = Model()

        old_fields = {
            "field": [5.2, 7]
        }

        fields = m.cast(old_fields)

        self.assertEqual(5, fields["field"][0])
        self.assertEqual(7, fields["field"][1])
示例#40
0
        try:
            result[schemaname] = warmongo.model_factory(schema)
        except Exception as e:
            hfoslog("[DB] Could not create factory for schema ",
                    schemaname,
                    schema,
                    lvl=critical)

    return result


objectmodels = _buildModelFactories()

# TODO: Export the following automatically from the objectmodels?

userobject = warmongo.model_factory(User)
profileobject = warmongo.model_factory(Profile)
clientconfigobject = warmongo.model_factory(Clientconfig)

mapviewobject = warmongo.model_factory(MapView)

layerobject = warmongo.model_factory(Layer)
layergroupobject = warmongo.model_factory(LayerGroup)

controllerobject = warmongo.model_factory(Controller)
controllableobject = warmongo.model_factory(Controllable)

wikipageobject = warmongo.model_factory(WikiPage)

vesselconfigobject = warmongo.model_factory(VesselSchema)
radioconfigobject = warmongo.model_factory(RadioConfig)
示例#41
0
def clean_test_components():
    print("Removing test components...")
    for item in model_factory(ComponentConfigSchemaTemplate).find(
        {'componentclass': 'TestComponent'}):
        item.delete()
示例#42
0
def model_factory(schema, base_class=twisted_model.TwistedModel):
    return warmongo.model_factory(schema, base_class)
示例#43
0
文件: database.py 项目: addy2342/hfos
        except KeyError:
            hfoslog("[DB] No schema found for ", schemaname, lvl=critical)

        try:
            result[schemaname] = warmongo.model_factory(schema)
        except Exception as e:
            hfoslog("[DB] Could not create factory for schema ", schemaname, schema, lvl=critical)

    return result


objectmodels = _buildModelFactories()

# TODO: Export the following automatically from the objectmodels?

userobject = warmongo.model_factory(User)
profileobject = warmongo.model_factory(Profile)
clientconfigobject = warmongo.model_factory(Clientconfig)

mapviewobject = warmongo.model_factory(MapView)

layerobject = warmongo.model_factory(Layer)
layergroupobject = warmongo.model_factory(LayerGroup)

controllerobject = warmongo.model_factory(Controller)
controllableobject = warmongo.model_factory(Controllable)

wikipageobject = warmongo.model_factory(WikiPage)

vesselconfigobject = warmongo.model_factory(VesselSchema)
radioconfigobject = warmongo.model_factory(RadioConfig)