Skip to content

Commit 6a229de

Browse files
Merge pull request #477 from appwrite/feat-py-service-level-params
Python service level parameters
2 parents 8dd3577 + a706b6f commit 6a229de

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

templates/python/package/services/service.py.twig

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,52 @@ from ..exception import AppwriteException
33

44
class {{ service.name | caseUcfirst }}(Service):
55

6+
{% if service.globalParams | length %}
7+
def __init__(self, client,{% for parameter in service.globalParams %} {{ parameter.name | caseSnake | escapeKeyword }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %},{% endif %}{% endfor %}):
8+
super({{ service.name | caseUcfirst }}, self).__init__(client)
9+
{% for parameter in service.globalParams %}
10+
self.{{ parameter.name | caseSnake | escapeKeyword }} = {{ parameter.name | caseSnake | escapeKeyword }}
11+
{% endfor %}
12+
{% else %}
613
def __init__(self, client):
714
super({{ service.name | caseUcfirst }}, self).__init__(client)
15+
{% endif %}
816
{% for method in service.methods %}
917

10-
def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}):
18+
def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all | filter((param) => not param.isGlobal) %}{{ parameter.name | escapeKeyword | caseSnake }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}):
1119
{% if method.title %}
1220
"""{{ method.title }}"""
1321

1422
{% endif %}
15-
{% for parameter in method.parameters.all %}
23+
{% for parameter in method.parameters.all %}
1624
{% if parameter.required %}
17-
if {{ parameter.name | escapeKeyword | caseSnake }} is None:
25+
if {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }} is None:
1826
raise {{spec.title | caseUcfirst}}Exception('Missing required parameter: "{{ parameter.name | escapeKeyword | caseSnake }}"')
1927

2028
{% endif %}
2129
{% endfor %}
2230
params = {}
2331
path = '{{ method.path }}'
2432
{% for parameter in method.parameters.path %}
25-
path = path.replace('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}', {{ parameter.name | escapeKeyword | caseSnake }})
33+
path = path.replace('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}', {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }})
2634
{% endfor %}
2735

2836
{% for parameter in method.parameters.query %}
29-
if {{ parameter.name | escapeKeyword | caseSnake }} is not None:
30-
params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
31-
37+
params['{{ parameter.name }}'] = {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }}
3238
{% endfor %}
3339
{% for parameter in method.parameters.body %}
34-
if {{ parameter.name | escapeKeyword | caseSnake }} is not None:
3540
{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}
36-
params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }}
41+
params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }}
3742
{% else %}
38-
params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
43+
params['{{ parameter.name }}'] = {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }}
3944
{% endif %}
4045
{% endfor %}
4146
{% for parameter in method.parameters.formData %}
42-
if {{ parameter.name | escapeKeyword | caseSnake }} is not None:
4347
{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}
44-
params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }}
48+
params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }}
4549
{% else %}
46-
params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }}
50+
params['{{ parameter.name }}'] = {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }}
4751
{% endif %}
48-
4952
{% endfor %}
5053
{% if 'multipart/form-data' in method.consumes %}
5154
{% for parameter in method.parameters.all %}
@@ -71,6 +74,7 @@ class {{ service.name | caseUcfirst }}(Service):
7174
{% endfor %}
7275
}, params, param_name, on_progress, upload_id)
7376
{% else %}
77+
7478
return self.client.call('{{ method.method | caseLower }}', path, {
7579
{% for parameter in method.parameters.header %}
7680
'{{ parameter.name }}': {{ parameter.name | escapeKeyword | caseSnake }},

tests/languages/python/tests.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
client = Client()
10-
foo = Foo(client)
10+
foo = Foo(client, 'string')
1111
bar = Bar(client)
1212
general = General(client)
1313

@@ -18,19 +18,19 @@
1818

1919
# Foo Tests
2020

21-
response = foo.get('string',123, ['string in array'])
21+
response = foo.get(123, ['string in array'])
2222
print(response['result'])
2323

24-
response = foo.post('string', 123, ['string in array'])
24+
response = foo.post( 123, ['string in array'])
2525
print(response['result'])
2626

27-
response = foo.put('string', 123, ['string in array'])
27+
response = foo.put( 123, ['string in array'])
2828
print(response['result'])
2929

30-
response = foo.patch('string', 123, ['string in array'])
30+
response = foo.patch( 123, ['string in array'])
3131
print(response['result'])
3232

33-
response = foo.delete('string', 123, ['string in array'])
33+
response = foo.delete( 123, ['string in array'])
3434
print(response['result'])
3535

3636
# Bar Tests

0 commit comments

Comments
 (0)