From bc4c29f8b69130614d893b9cc3560a108d0b1ee8 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sat, 19 Jul 2014 15:44:17 +0200 Subject: [PATCH] support room filter --- c3t_rpc_client.py | 14 ++++++++++---- script-Z-preroll-generator.py | 6 +++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/c3t_rpc_client.py b/c3t_rpc_client.py index 211aad1..2092659 100644 --- a/c3t_rpc_client.py +++ b/c3t_rpc_client.py @@ -49,14 +49,20 @@ def C3TClient(url, method, group, host, secret, args): if len(args) > 0: i = 0 while i < len(args): - sig_args = str(sig_args) + str(args[i]) + arg = args[i] + if isinstance(arg, dict): + for k in arg: + sig_args = str(sig_args) + "[" + str(k) + "]=" + str(arg[k]) + else: + sig_args = str(sig_args) + str(arg) + if i < (len(args) -1): sig_args = sig_args + "&" i = i + 1 ##### quote URL and generate the hash #hash signature - sig_args_enc = urllib.parse.quote_plus(sig_args) + sig_args_enc = urllib.parse.quote_plus(sig_args, "=") #### generate the hmac hash with key hash = hmac.new(bytes(secret, 'utf-8'), bytes(sig_args_enc, 'utf-8'), hashlib.sha256) @@ -122,8 +128,8 @@ def getVersion(): return str(open_rpc("C3TT.getVersion",tmp_args)) ### check for new ticket on tracker an get assignement -def assignNextUnassignedForState(from_state, to_state, url, group, host, secret): - tmp_args = [from_state, to_state] +def assignNextUnassignedForState(from_state, to_state, url, group, host, secret, filter = {}): + tmp_args = [from_state, to_state, filter] xml = open_rpc("C3TT.assignNextUnassignedForState",tmp_args,url, group, host, secret) # if get no xml there seems to be no ticket for this job if xml == False: diff --git a/script-Z-preroll-generator.py b/script-Z-preroll-generator.py index 3f66d4d..fb3f1a1 100755 --- a/script-Z-preroll-generator.py +++ b/script-Z-preroll-generator.py @@ -20,13 +20,17 @@ url = os.environ['CRS_TRACKER'] token = os.environ['CRS_TOKEN'] secret = os.environ['CRS_SECRET'] +filter = {} +if not os.environ.get('CRS_ROOM') is None: + filter['Fahrplan.Room'] = os.environ['CRS_ROOM'] + def generatePreroll(ticket): print('generating preroll for', ticket) while True: print('Asking RPC for {0}-tickets which are ready for state {1}'.format(ticket_type, ticket_state)) - ticket_id = rpc.assignNextUnassignedForState(ticket_type, ticket_state, url, token, host, secret) + ticket_id = rpc.assignNextUnassignedForState(ticket_type, ticket_state, url, token, host, secret, filter) if ticket_id != False: ticket = rpc.getTicketProperties(str(ticket_id), url, token, host, secret) generatePreroll(ticket)