# HG changeset patch # User Nicholas Jillings # Date 1464859411 -3600 # Node ID bae25b417c2c09921ac27bd3870ef064346559d5 # Parent ad87b0d94fa99eb244b9ef90fee28b2c47d2b5b4 Tested #68 for Python 3.5 diff -r ad87b0d94fa9 -r bae25b417c2c python/pythonServer.py --- a/python/pythonServer.py Tue May 31 12:04:31 2016 +0100 +++ b/python/pythonServer.py Thu Jun 02 10:23:31 2016 +0100 @@ -10,6 +10,7 @@ import datetime import operator import xml.etree.ElementTree as ET +import copy if sys.version_info[0] == 2: # Version 2.x @@ -168,27 +169,52 @@ s.path = s.path.split("/php",1)[0]+"/tests/pool/xml" processFile(s) return + poolSize = int(poolSize) # Set up the store will all the test page key nodes pages = {}; for page in root.iter("page"): id = page.get("id") - print(id) pages[id] = 0 - # Read the saves and determine the completed pages for filename in os.listdir("../saves/"): if filename.endswith(".xml"): - print("../saves/"+filename) save = ET.parse("../saves/"+filename) save_root = save.getroot(); - if (save_root.get("url") == s.path): - for page in save_root.iter("page"): - id = page.get("id") + if (save_root.find("waet").get("url") == "http://localhost:8000/php/pool.php"): + for page in save_root.findall("./page"): + id = page.get("ref") pages[id] = pages[id] + 1 # Sort the dictionary - pages = sorted(pages.items(), key=operator.itemgetter(1)) + rot_pages = {} + for key, value in pages.items(): + if (value in rot_pages): + rot_pages[value].append(key) + else: + rot_pages[value] = [key] + + Keys = list(rot_pages) + print ("Current pool state:") + print (rot_pages) + + return_node = ET.fromstring(''); + return_node.append(copy.deepcopy(root.find("setup"))) + page_elements = root.findall("page") + # Now append the pages + i = 0 + while(len(return_node.findall("page")) < poolSize): + if (i > 0): + for page in return_node.iter("page"): + page.set("alwaysInclude","true") + for id in rot_pages[Keys[i]]: + return_node.append(copy.deepcopy(root.find('./page[@id="'+id+'"]'))) + i=i+1 + s.send_response(200) + s.send_header("Content-type", "text/xml") + s.end_headers() + s.wfile.write(ET.tostring(return_node)) + def http_do_HEAD(s): s.send_response(200) s.send_header("Content-type", "text/html") diff -r ad87b0d94fa9 -r bae25b417c2c tests/pool.xml --- a/tests/pool.xml Tue May 31 12:04:31 2016 +0100 +++ b/tests/pool.xml Thu Jun 02 10:23:31 2016 +0100 @@ -1,69 +1,69 @@ - - - - testTimer - elementTimer - elementInitialPosition - elementTracker - elementFlagListenedTo - elementFlagMoved - elementListenTracker - - - - - - - - - (1) Very Annoying - (2) Annoying - (3) Slightly Annoying - (4) Audible but not Annoying - (5) Inaudible - - - - - - - - - (1) Very Annoying - (2) Annoying - (3) Slightly Annoying - (4) Audible but not Annoying - (5) Inaudible - - - - - - - - - (1) Very Annoying - (2) Annoying - (3) Slightly Annoying - (4) Audible but not Annoying - (5) Inaudible - - - - - - - - - (1) Very Annoying - (2) Annoying - (3) Slightly Annoying - (4) Audible but not Annoying - (5) Inaudible - - - - - - + + + + testTimer + elementTimer + elementInitialPosition + elementTracker + elementFlagListenedTo + elementFlagMoved + elementListenTracker + + + + + + + + + (1) Very Annoying + (2) Annoying + (3) Slightly Annoying + (4) Audible but not Annoying + (5) Inaudible + + + + + + + + + (1) Very Annoying + (2) Annoying + (3) Slightly Annoying + (4) Audible but not Annoying + (5) Inaudible + + + + + + + + + (1) Very Annoying + (2) Annoying + (3) Slightly Annoying + (4) Audible but not Annoying + (5) Inaudible + + + + + + + + + (1) Very Annoying + (2) Annoying + (3) Slightly Annoying + (4) Audible but not Annoying + (5) Inaudible + + + + + +