def test_is_many_to_many(self):
     interf = SQLAInterface(Parent)
     eq_(True, interf.is_relation('neighbours'))
     eq_(False, interf.is_relation_one_to_many('neighbours'))
     eq_(False, interf.is_relation_one_to_one('neighbours'))
     eq_(False, interf.is_relation_many_to_one('neighbours'))
     eq_(True, interf.is_relation_many_to_many('neighbours'))
     interf = SQLAInterface(Neighbour)
     eq_(True, interf.is_relation('parents'))
     eq_(False, interf.is_relation_one_to_many('parents'))
     eq_(False, interf.is_relation_one_to_one('parents'))
     eq_(False, interf.is_relation_many_to_one('parents'))
     eq_(True, interf.is_relation_many_to_many('parents'))
 def test_is_one_to_one(self):
     interf = SQLAInterface(Parent)
     eq_(True, interf.is_relation('favorite_child'))
     eq_(True, interf.is_relation_one_to_one('favorite_child'))
     eq_(False, interf.is_relation_one_to_many('favorite_child'))
     eq_(False, interf.is_relation_many_to_many('favorite_child'))
     eq_(False, interf.is_relation_many_to_one('favorite_child'))
     interf = SQLAInterface(FavoriteChild)
     eq_(True, interf.is_relation('parent'))
     eq_(True, interf.is_relation_one_to_one('parent'))
     eq_(False, interf.is_relation_one_to_many('parent'))
     eq_(False, interf.is_relation_many_to_many('parent'))
     eq_(False, interf.is_relation_many_to_one('parent'))
 def test_is_one_to_many(self):
     interf = SQLAInterface(Parent)
     eq_(True, interf.is_relation('children'))
     eq_(True, interf.is_relation_one_to_many('children'))
     eq_(False, interf.is_relation_one_to_one('children'))
     eq_(False, interf.is_relation_many_to_one('children'))
     eq_(False, interf.is_relation_many_to_many('children'))
 def test_is_many_to_one_no_backref(self):
     interf = SQLAInterface(Headache)
     eq_(True, interf.is_relation('parent'))
     eq_(False, interf.is_relation_one_to_many('parent'))
     eq_(False, interf.is_relation_one_to_one('parent'))
     eq_(True, interf.is_relation_many_to_one('parent'))
     eq_(False, interf.is_relation_many_to_many('parent'))
 def test_is_many_to_one(self):
     interf = SQLAInterface(Child)
     eq_(True, interf.is_relation('parent'))
     eq_(False, interf.is_relation_one_to_many('parent'))
     eq_(False, interf.is_relation_one_to_one('parent'))
     eq_(True, interf.is_relation_many_to_one('parent'))
     eq_(False, interf.is_relation_many_to_many('parent'))
Exemplo n.º 6
0
 def _column2relation(
     self,
     datamodel: SQLAInterface,
     column: TreeNode,
     nested: bool = False,
     parent_schema_name: Optional[str] = None,
 ):
     if nested:
         required = not datamodel.is_nullable(column.data)
         nested_model = datamodel.get_related_model(column.data)
         lst = [item.data for item in column.childs]
         nested_schema = self.convert(
             lst, nested_model, nested=False, parent_schema_name=parent_schema_name
         )
         if datamodel.is_relation_many_to_one(column.data):
             many = False
         elif datamodel.is_relation_many_to_many(column.data):
             many = True
             required = False
         elif datamodel.is_relation_one_to_many(column.data):
             many = True
         else:
             many = False
         field = fields.Nested(nested_schema, many=many, required=required)
         field.unique = datamodel.is_unique(column.data)
         return field
     # Handle bug on marshmallow-sqlalchemy
     # https://github.com/marshmallow-code/marshmallow-sqlalchemy/issues/163
     if datamodel.is_relation_many_to_many(
         column.data
     ) or datamodel.is_relation_one_to_many(column.data):
         if datamodel.get_info(column.data).get("required", False):
             required = True
         else:
             required = False
     else:
         required = not datamodel.is_nullable(column.data)
     field = field_for(datamodel.obj, column.data)
     field.required = required
     field.unique = datamodel.is_unique(column.data)
     return field