From 1ea8dd223afafb05b404fb766c07bce8df5072de Mon Sep 17 00:00:00 2001 From: jared Date: Tue, 30 Jan 2024 14:36:37 -0500 Subject: [PATCH 1/7] Update JotformAPIClient with teamId --- jotform.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/jotform.py b/jotform.py index a11ccd1..83249cc 100644 --- a/jotform.py +++ b/jotform.py @@ -18,11 +18,13 @@ class JotformAPIClient: __apiVersion = 'v1' __apiKey = None + __teamId = None __debugMode = False __outputType = "json" - def __init__(self, apiKey='', baseUrl=DEFAULT_BASE_URL, outputType='json', debug=False): + def __init__(self, apiKey='', teamId=None, baseUrl=DEFAULT_BASE_URL, outputType='json', debug=False): self.__apiKey = apiKey + self.__teamId = teamId self.__baseUrl = baseUrl self.__outputType = outputType.lower() self.__debugMode = debug @@ -44,7 +46,7 @@ def get_outputType(self): def set_outputType(self, value): self.__outputType = value - def fetch_url(self, url, params=None, method=None): + def fetch_url(self, url, params=None, method=None, teamId=None): if(self.__outputType != 'json'): url = url + '.xml' @@ -56,9 +58,12 @@ def fetch_url(self, url, params=None, method=None): headers = { 'apiKey': self.__apiKey, - 'User-Agent': 'JOTFORM_PYTHON_WRAPPER' + 'User-Agent': 'JOTFORM_PYTHON_WRAPPER', } + if self.__teamId != None: + headers['teamId'] = self.__teamId + if (method == 'GET'): if (params): url = url + '?' + urllib.parse.urlencode(params) From 2c2e8e246e147ab6d278db482243643ab052d71e Mon Sep 17 00:00:00 2001 From: jared Date: Tue, 30 Jan 2024 16:00:09 -0500 Subject: [PATCH 2/7] fix jf-team-id header name --- jotform.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jotform.py b/jotform.py index 83249cc..d102756 100644 --- a/jotform.py +++ b/jotform.py @@ -61,9 +61,11 @@ def fetch_url(self, url, params=None, method=None, teamId=None): 'User-Agent': 'JOTFORM_PYTHON_WRAPPER', } + print(headers) if self.__teamId != None: - headers['teamId'] = self.__teamId + headers['jf-team-id'] = self.__teamId + print(headers) if (method == 'GET'): if (params): url = url + '?' + urllib.parse.urlencode(params) From 35a25640b18fa5127ec34226217af6819c090a63 Mon Sep 17 00:00:00 2001 From: jared Date: Wed, 31 Jan 2024 11:46:29 -0500 Subject: [PATCH 3/7] Add get_teams method --- jotform.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/jotform.py b/jotform.py index d102756..e42f8e1 100644 --- a/jotform.py +++ b/jotform.py @@ -154,6 +154,23 @@ def get_forms(self, offset=None, limit=None, filterArray=None, order_by=None): return self.fetch_url('/user/forms', params, 'GET') + def get_teams(self, offset=None, limit=None, filterArray=None, order_by=None): + """Get a list of teams for this account + + Args: + offset (string): Start of each result set for form list. (optional) + limit (string): Number of results in each result set for form list. (optional) + filterArray (array): Filters the query results to fetch a specific form range.(optional) + order_by (string): Order results by a form field name. (optional) + + Returns: + Teams info. + """ + + params = self.create_conditions(offset, limit, filterArray, order_by) + + return self.fetch_url('/team/server/teams', params, 'GET') + def get_submissions(self, offset=None, limit=None, filterArray=None, order_by=None): """Get a list of submissions for this account. From 786ad38a9c56b06a383fe6b522089b0ebef20966 Mon Sep 17 00:00:00 2001 From: jared Date: Wed, 31 Jan 2024 12:39:11 -0500 Subject: [PATCH 4/7] increment version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5b0ff5d..c10ec64 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="jotform", url='http://api.jotform.com/docs/', - version='1.2', + version='1.2.1', description='JotForm API - Python Client', author='JotForm', author_email='api@jotform.com', From d9378452e36545f8564016f5d2987b795ce8595c Mon Sep 17 00:00:00 2001 From: jared Date: Wed, 31 Jan 2024 12:40:41 -0500 Subject: [PATCH 5/7] remove extraneous print statements used when testing --- jotform.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/jotform.py b/jotform.py index e42f8e1..62fc2b2 100644 --- a/jotform.py +++ b/jotform.py @@ -61,11 +61,9 @@ def fetch_url(self, url, params=None, method=None, teamId=None): 'User-Agent': 'JOTFORM_PYTHON_WRAPPER', } - print(headers) if self.__teamId != None: headers['jf-team-id'] = self.__teamId - print(headers) if (method == 'GET'): if (params): url = url + '?' + urllib.parse.urlencode(params) From a1e927e0062fd35a284db9441458048673a29fcb Mon Sep 17 00:00:00 2001 From: Rick Gerkin <113397991+rick-osmo@users.noreply.github.com> Date: Thu, 22 Feb 2024 15:22:28 -0700 Subject: [PATCH 6/7] Added support for user teams --- jotform.py | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/jotform.py b/jotform.py index 62fc2b2..54cd170 100644 --- a/jotform.py +++ b/jotform.py @@ -8,7 +8,9 @@ # version : 1.0 # package : JotFormAPI -import urllib.request, urllib.parse, urllib.error +import urllib.request +import urllib.parse +import urllib.error import json class JotformAPIClient: @@ -38,16 +40,18 @@ def set_baseurl(self, baseurl): def get_debugMode(self): return self.__debugMode + def set_debugMode(self, value): self.__debugMode = value def get_outputType(self): return self.__outputType + def set_outputType(self, value): self.__outputType = value def fetch_url(self, url, params=None, method=None, teamId=None): - if(self.__outputType != 'json'): + if (self.__outputType != 'json'): url = url + '.xml' url = self.__baseUrl + self.__apiVersion + url @@ -61,8 +65,9 @@ def fetch_url(self, url, params=None, method=None, teamId=None): 'User-Agent': 'JOTFORM_PYTHON_WRAPPER', } - if self.__teamId != None: - headers['jf-team-id'] = self.__teamId + teamId = teamId or self.__teamId + if teamId is not None: + headers['jf-team-id'] = teamId if (method == 'GET'): if (params): @@ -99,8 +104,8 @@ def create_conditions(self, offset, limit, filterArray, order_by): params = {} for key in list(args.keys()): - if(args[key]): - if(key == 'filter'): + if args[key]: + if key == 'filter' : params[key] = json.dumps(args[key]) else: params[key] = args[key] @@ -152,6 +157,23 @@ def get_forms(self, offset=None, limit=None, filterArray=None, order_by=None): return self.fetch_url('/user/forms', params, 'GET') + def get_my_teams(self, offset=None, limit=None, filterArray=None, order_by=None): + """Get a list of teams for this user + + Args: + offset (string): Start of each result set for form list. (optional) + limit (string): Number of results in each result set for form list. (optional) + filterArray (array): Filters the query results to fetch a specific form range.(optional) + order_by (string): Order results by a form field name. (optional) + + Returns: + Teams info. + """ + + params = self.create_conditions(offset, limit, filterArray, order_by) + + return self.fetch_url('/team/user/me', params, 'GET') + def get_teams(self, offset=None, limit=None, filterArray=None, order_by=None): """Get a list of teams for this account @@ -276,7 +298,7 @@ def get_form_questions(self, formID): return self.fetch_url('/form/' + formID + '/questions', method='GET') - def get_form_question(self, formID, qid): + def get_form_question(self, formID, qid): """Get details about a question Args: @@ -321,7 +343,7 @@ def create_form_submission(self, formID, submission): for key in submission.keys(): if "_" in key: - sub['submission[' + key[0:key.find("_")] + '][' + key[key.find("_")+1:len(key)] + ']'] = submission[key] + sub['submission[' + key[0:key.find("_")] + '][' + key[key.find("_") + 1:len(key)] + ']'] = submission[key] else: sub['submission[' + key + ']'] = submission[key] @@ -569,7 +591,7 @@ def edit_submission(self, sid, submission): for key in submission.keys(): if '_' in key and key != "created_at": - sub['submission[' + key[0:key.find('_')] + '][' + key[key.find('_')+1:len(key)] + ']'] = submission[key] + sub['submission[' + key[0:key.find('_')] + '][' + key[key.find('_') + 1:len(key)] + ']'] = submission[key] else: sub['submission[' + key + ']'] = submission[key] @@ -700,7 +722,7 @@ def create_form(self, form): else: v = value[k] for a in v.keys(): - params[key + '[' + k + '][' + a + ']'] =v[a] + params[key + '[' + k + '][' + a + ']'] = v[a] return self.fetch_url('/user/forms', params, 'POST') From f7d2761060f35f7f23770cfcb369542ed5cc883f Mon Sep 17 00:00:00 2001 From: jared Date: Fri, 23 Feb 2024 09:33:46 -0500 Subject: [PATCH 7/7] increment version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c10ec64..efac70e 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="jotform", url='http://api.jotform.com/docs/', - version='1.2.1', + version='1.2.2', description='JotForm API - Python Client', author='JotForm', author_email='api@jotform.com',