diff --git a/jotform.py b/jotform.py index a11ccd1..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: @@ -18,11 +20,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 @@ -36,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): - if(self.__outputType != 'json'): + def fetch_url(self, url, params=None, method=None, teamId=None): + if (self.__outputType != 'json'): url = url + '.xml' url = self.__baseUrl + self.__apiVersion + url @@ -56,9 +62,13 @@ def fetch_url(self, url, params=None, method=None): headers = { 'apiKey': self.__apiKey, - 'User-Agent': 'JOTFORM_PYTHON_WRAPPER' + 'User-Agent': 'JOTFORM_PYTHON_WRAPPER', } + teamId = teamId or self.__teamId + if teamId is not None: + headers['jf-team-id'] = teamId + if (method == 'GET'): if (params): url = url + '?' + urllib.parse.urlencode(params) @@ -94,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] @@ -147,6 +157,40 @@ 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 + + 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. @@ -254,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: @@ -299,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] @@ -547,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] @@ -678,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') diff --git a/setup.py b/setup.py index 5b0ff5d..efac70e 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.2', description='JotForm API - Python Client', author='JotForm', author_email='api@jotform.com',