Skip to content

Commit cd71267

Browse files
authored
Merge pull request #1245 from appwrite/fix-passing-none-values-python
fix (python): skip passing None to non nullable params
2 parents ad352a2 + 530ca3b commit cd71267

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

src/SDK/Language/Python.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,12 @@ public function getFilters(): array
399399
new TwigFilter('getPropertyType', function ($value, $method = []) {
400400
return $this->getTypeName($value, $method);
401401
}),
402+
new TwigFilter('formatParamValue', function (string $paramName, string $paramType, bool $isMultipartFormData) {
403+
if ($isMultipartFormData && $paramType === self::TYPE_BOOLEAN) {
404+
return "str({$paramName}).lower() if type({$paramName}) is bool else {$paramName}";
405+
}
406+
return $paramName;
407+
}),
402408
];
403409
}
404410
}

templates/python/base/params.twig

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,22 @@
1212
{% endfor %}
1313

1414
{% for parameter in method.parameters.query %}
15-
api_params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
16-
{% endfor %}
17-
{% for parameter in method.parameters.body %}
18-
{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}
19-
api_params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }}
15+
{% if not parameter.nullable and not parameter.required %}
16+
if {{ parameter.name | escapeKeyword | caseSnake }} is not None:
17+
api_params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
2018
{% else %}
2119
api_params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
2220
{% endif %}
2321
{% endfor %}
24-
{% for parameter in method.parameters.formData %}
25-
{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}
26-
api_params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }}
22+
{% for parameter in method.parameters.body|merge(method.parameters.formData|default([])) %}
23+
{% set paramName = parameter.name | escapeKeyword | caseSnake %}
24+
{% set isMultipart = method.consumes|length > 0 and method.consumes[0] == "multipart/form-data" %}
25+
{% set formattedValue = paramName | formatParamValue(parameter.type, isMultipart) %}
26+
{% if not parameter.nullable and not parameter.required %}
27+
if {{ paramName }} is not None:
28+
api_params['{{ parameter.name }}'] = {{ formattedValue }}
2729
{% else %}
28-
api_params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
30+
api_params['{{ parameter.name }}'] = {{ formattedValue }}
2931
{% endif %}
3032
{% endfor %}
3133
{% endif %}

0 commit comments

Comments
 (0)