(
field_name: str,
explode: bool,
obj: Any,
delimiter: str,
form: Dict[str, List[str]],
)
| 22 | |
| 23 | |
| 24 | def _populate_form( |
| 25 | field_name: str, |
| 26 | explode: bool, |
| 27 | obj: Any, |
| 28 | delimiter: str, |
| 29 | form: Dict[str, List[str]], |
| 30 | ): |
| 31 | if not _is_set(obj): |
| 32 | return form |
| 33 | |
| 34 | if isinstance(obj, BaseModel): |
| 35 | items = [] |
| 36 | |
| 37 | obj_fields: Dict[str, FieldInfo] = obj.__class__.model_fields |
| 38 | for name in obj_fields: |
| 39 | obj_field = obj_fields[name] |
| 40 | obj_field_name = obj_field.alias if obj_field.alias is not None else name |
| 41 | if obj_field_name == "": |
| 42 | continue |
| 43 | |
| 44 | val = getattr(obj, name) |
| 45 | if not _is_set(val): |
| 46 | continue |
| 47 | |
| 48 | if explode: |
| 49 | form[obj_field_name] = [_val_to_string(val)] |
| 50 | else: |
| 51 | items.append(f"{obj_field_name}{delimiter}{_val_to_string(val)}") |
| 52 | |
| 53 | if len(items) > 0: |
| 54 | form[field_name] = [delimiter.join(items)] |
| 55 | elif isinstance(obj, Dict): |
| 56 | items = [] |
| 57 | for key, value in obj.items(): |
| 58 | if not _is_set(value): |
| 59 | continue |
| 60 | |
| 61 | if explode: |
| 62 | form[key] = [_val_to_string(value)] |
| 63 | else: |
| 64 | items.append(f"{key}{delimiter}{_val_to_string(value)}") |
| 65 | |
| 66 | if len(items) > 0: |
| 67 | form[field_name] = [delimiter.join(items)] |
| 68 | elif isinstance(obj, List): |
| 69 | items = [] |
| 70 | |
| 71 | for value in obj: |
| 72 | if not _is_set(value): |
| 73 | continue |
| 74 | |
| 75 | if explode: |
| 76 | if not field_name in form: |
| 77 | form[field_name] = [] |
| 78 | form[field_name].append(_val_to_string(value)) |
| 79 | else: |
| 80 | items.append(_val_to_string(value)) |
| 81 |
no test coverage detected