コード例 #1
0
ファイル: convert.py プロジェクト: imfht/flaskapps
 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
コード例 #2
0
ファイル: convert.py プロジェクト: imfht/flaskapps
 def _column2enum(
     self,
     datamodel: SQLAInterface,
     column: TreeNode,
     enum_dump_by_name: bool = False,
 ):
     required = not datamodel.is_nullable(column.data)
     enum_class = datamodel.list_columns[column.data].info.get(
         "enum_class", datamodel.list_columns[column.data].type
     )
     if enum_dump_by_name:
         enum_dump_by = EnumField.NAME
     else:
         enum_dump_by = EnumField.VALUE
     field = EnumField(enum_class, dump_by=enum_dump_by, required=required)
     field.unique = datamodel.is_unique(column.data)
     return field