From a706b6f6aee04a34976b2e64226f3a22544939f7 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 28 Jun 2022 19:59:41 +1200 Subject: [PATCH] Service level params for Python --- .../python/package/services/service.py.twig | 32 +++++++++++-------- tests/languages/python/tests.py | 12 +++---- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index 1035c4ba3..60a59b832 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -3,18 +3,26 @@ from ..exception import AppwriteException class {{ service.name | caseUcfirst }}(Service): +{% if service.globalParams | length %} + 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 %}): + super({{ service.name | caseUcfirst }}, self).__init__(client) +{% for parameter in service.globalParams %} + self.{{ parameter.name | caseSnake | escapeKeyword }} = {{ parameter.name | caseSnake | escapeKeyword }} +{% endfor %} +{% else %} def __init__(self, client): super({{ service.name | caseUcfirst }}, self).__init__(client) +{% endif %} {% for method in service.methods %} - 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 %}): + 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 %}): {% if method.title %} """{{ method.title }}""" {% endif %} -{% for parameter in method.parameters.all %} +{% for parameter in method.parameters.all %} {% if parameter.required %} - if {{ parameter.name | escapeKeyword | caseSnake }} is None: + if {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }} is None: raise {{spec.title | caseUcfirst}}Exception('Missing required parameter: "{{ parameter.name | escapeKeyword | caseSnake }}"') {% endif %} @@ -22,30 +30,25 @@ class {{ service.name | caseUcfirst }}(Service): params = {} path = '{{ method.path }}' {% for parameter in method.parameters.path %} - path = path.replace('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}', {{ parameter.name | escapeKeyword | caseSnake }}) + path = path.replace('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}', {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }}) {% endfor %} {% for parameter in method.parameters.query %} - if {{ parameter.name | escapeKeyword | caseSnake }} is not None: - params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }} - + params['{{ parameter.name }}'] = {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }} {% endfor %} {% for parameter in method.parameters.body %} - if {{ parameter.name | escapeKeyword | caseSnake }} is not None: {% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %} - params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }} + params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }} {% else %} - params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }} + params['{{ parameter.name }}'] = {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }} {% endif %} {% endfor %} {% for parameter in method.parameters.formData %} - if {{ parameter.name | escapeKeyword | caseSnake }} is not None: {% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %} - params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }} + params['{{ parameter.name }}'] = str({{ parameter.name | escapeKeyword | caseSnake }}).lower() if type({{ parameter.name | escapeKeyword | caseSnake }}) is bool else {{ parameter.name | escapeKeyword | caseSnake }} {% else %} - params['{{ parameter.name }}'] = {{ parameter.name | escapeKeyword | caseSnake }} + params['{{ parameter.name }}'] = {% if parameter.isGlobal %}self.{% endif %}{{ parameter.name | escapeKeyword | caseSnake }} {% endif %} - {% endfor %} {% if 'multipart/form-data' in method.consumes %} {% for parameter in method.parameters.all %} @@ -71,6 +74,7 @@ class {{ service.name | caseUcfirst }}(Service): {% endfor %} }, params, param_name, on_progress, upload_id) {% else %} + return self.client.call('{{ method.method | caseLower }}', path, { {% for parameter in method.parameters.header %} '{{ parameter.name }}': {{ parameter.name | escapeKeyword | caseSnake }}, diff --git a/tests/languages/python/tests.py b/tests/languages/python/tests.py index d42a9f2f6..8fb7e91fc 100644 --- a/tests/languages/python/tests.py +++ b/tests/languages/python/tests.py @@ -7,7 +7,7 @@ client = Client() -foo = Foo(client) +foo = Foo(client, 'string') bar = Bar(client) general = General(client) @@ -18,19 +18,19 @@ # Foo Tests -response = foo.get('string',123, ['string in array']) +response = foo.get(123, ['string in array']) print(response['result']) -response = foo.post('string', 123, ['string in array']) +response = foo.post( 123, ['string in array']) print(response['result']) -response = foo.put('string', 123, ['string in array']) +response = foo.put( 123, ['string in array']) print(response['result']) -response = foo.patch('string', 123, ['string in array']) +response = foo.patch( 123, ['string in array']) print(response['result']) -response = foo.delete('string', 123, ['string in array']) +response = foo.delete( 123, ['string in array']) print(response['result']) # Bar Tests