class Organisation(MongoModel): name = CharField() member = ListField(ReferenceField(User)) projects = ListField(ReferenceField(Project)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class IfcGroup(MongoModel): pid = IntegerField() ptype = CharField() name = CharField(blank=True) pset = ListField(ReferenceField(IfcSingleProperty)) version = ListField(ReferenceField(Version)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class ProductType(MongoModel): name = CharField() producer = CharField() connection = ListField(ReferenceField(ProductSignal)) power = ListField(ReferenceField(ProductPower)) shape = ReferenceField(IfcShapeRepresentation) verified = BooleanField(default=False) pset = ListField(ReferenceField(IfcSingleProperty)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class IfcShapeRepresentation(EmbeddedMongoModel): pid = IntegerField() identifier = CharField() RepresentationType = CharField() footprint = ListField(ListField()) footprint_react = DictField() top = FloatField() bottom = FloatField() center = ListField() class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class IfcProductType(MongoModel): pid = IntegerField() guid = CharField() ptype = CharField() name = CharField(blank=True) predefined = CharField(blank=True) tag = CharField(blank=True) pset = ListField(ReferenceField(IfcSingleProperty)) material = ListField(ReferenceField(IfcMaterial)) shape = EmbeddedDocumentField(IfcShapeRepresentation) version = ListField(ReferenceField(Version)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class IfcBuilding(MongoModel): pid = IntegerField() guid = CharField() ptype = CharField(blank=True) name = CharField(blank=True) description = CharField(blank=True) longName = CharField(blank=True) site = ReferenceField(IfcSite) pset = ListField(ReferenceField(IfcSingleProperty)) shape = EmbeddedDocumentField(IfcShapeRepresentation) version = ListField(ReferenceField(Version)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class ListFieldTestCase(FieldTestCase): field = ListField(IntegerField(min_value=0)) def test_conversion(self): self.assertConversion(self.field, [1, 2, 3], [1, 2, 3]) self.assertConversion(self.field, [1, 2, 3], ['1', '2', '3']) def test_validate(self): with self.assertRaisesRegex(ValidationError, 'less than minimum'): self.field.validate([-1, 3, 4]) self.field.validate([1, 2, 3]) def test_get_default(self): self.assertEqual([], self.field.get_default()) def test_generic_list_field(self): class MyModel(MongoModel): data = ListField() mydata = [1, 'hello', {'a': 1}] mymodel = MyModel(data=mydata).save() mymodel.refresh_from_db() self.assertEqual(mymodel.data, mydata) def test_field_validation_on_initialization(self): # Initializing ListField with field type raises exception. with self.assertRaisesRegex( ValueError, "field must be an instance of MongoBaseField"): _ = ListField(CharField)
class IfcProject(MongoModel): pid = IntegerField() guid = CharField() ptype = CharField() name = CharField(blank=True) longName = CharField(blank=True) description = CharField(blank=True) phase = CharField(blank=True) lengthUnit = CharField(blank=True) lengthPrefix = CharField(blank=True) dir = ListField(FloatField(blank=True)) pset = ListField(ReferenceField(IfcSingleProperty)) version = ListField(ReferenceField(Version)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class IfcSite(MongoModel): pid = IntegerField() guid = CharField() ptype = CharField() name = CharField(blank=True) description = CharField(blank=True) refLatitude = ListField(blank=True) refLongitude = ListField(blank=True) refElevation = FloatField(blank=True) LandTitleNumber = CharField(blank=True) #quitself.SiteAddress = element.SiteAddress pset = ListField(ReferenceField(IfcSingleProperty)) project = ReferenceField(IfcProject) version = ListField(ReferenceField(Version)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class User(MongoModel): email = EmailField(primary_key=True) first_name = CharField() last_name = CharField() projects = ListField(ReferenceField(Project)) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class ProductSignal(MongoModel): name = CharField() signalType = CharField() terminals = ListField() wires = IntegerField() min_value = FloatField() max_value = FloatField() class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class DataFrame(MongoModel): from_model = BooleanField() pset = BooleanField(blank=True) type = CharField(blank=True) name = CharField(blank=True) calculation = ListField(ReferenceField(Calculation)) version = ReferenceField(Version) excelfile = ReferenceField(ExcelFile) header = IntegerField(blank=True) sheetname = CharField(blank=True) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class ListFieldTestCase(FieldTestCase): field = ListField(IntegerField(min_value=0)) def test_conversion(self): self.assertConversion(self.field, [1, 2, 3], [1, 2, 3]) self.assertConversion(self.field, [1, 2, 3], ['1', '2', '3']) def test_validate(self): with self.assertRaisesRegex(ValidationError, 'less than minimum'): self.field.validate([-1, 3, 4]) self.field.validate([1, 2, 3]) def test_get_default(self): self.assertEqual([], self.field.get_default())
class IfcProduct(MongoModel): pid = IntegerField(blank=True) guid = CharField(blank=True) ptype = CharField(blank=True) name = CharField(blank=True) description = CharField(blank=True) pset = ListField(ReferenceField(IfcSingleProperty)) group = ListField(ReferenceField(IfcGroup)) material = ListField(ReferenceField(IfcMaterial)) building = ListField(ReferenceField(IfcBuilding)) storey = ListField(ReferenceField(IfcStorey)) shape = EmbeddedDocumentField(IfcShapeRepresentation) space = ListField(ReferenceField(IfcSpace)) system = ListField(ReferenceField(IfcSystem)) productType = ReferenceField(IfcProductType) product = ReferenceField(ProductType) version = ListField(ReferenceField(Version)) filepath = CharField(blank=True) class Meta: write_concern = WriteConcern(j=True) connection_alias = 'my-app'
class MyModel(MongoModel): data = ListField()
def test_field_validation_on_initialization(self): # Initializing ListField with field type raises exception. with self.assertRaisesRegex( ValueError, "field must be an instance of MongoBaseField"): _ = ListField(CharField)
class SpaceFunction(MongoModel): space = ReferenceField(IfcSpace) text = CharField() signal = ListField(ReferenceField(ProductSignal))