#!/usr/bin/python print "Content-Type: text/html\n\n" import socket import cgi import re import sys import traceback from types import * TemplateFile="annotator.html" #basepath="/home/thomasd/tmp/test/" basepath="/u/deselaers/data/WASH/groundtruth/" WordListFileName=basepath+"wordlist" FileListFileName=basepath+"without-description" DoneListFileName=basepath+"annotated" sys.stderr=sys.stdout def Display(Content): TemplateHandle = open(TemplateFile, "r") # open in read only mode # read the entire file as a string TemplateInput = TemplateHandle.read() TemplateHandle.close() # close the file # this defines an exception string in case our # template file is messed up BadTemplateException = "There was a problem with the HTML template." SubResult = re.subn("INSERT CONTENT HERE",Content,TemplateInput) if SubResult[1] == 0: raise BadTemplateException print SubResult[0] def readFileList(filename): flHandle=open(filename,"r") flInput=flHandle.read() flHandle.close() list=[] for i in re.split("\n",flInput): if i!="": list=list+[i] return list def readWordList(filename): wlHandle=open(filename,"r") wlInput=wlHandle.read() wlHandle.close() list=[] for i in re.split("\n",wlInput): if i!= "": list=list+[i] list.sort() return list def readAnnotatedList(filename): alHandle=open(filename,"r") alInput=alHandle.read() alHandle.close() annlist=[] for line in re.split("\n",alInput): list=[] for j in re.split(" ",line): if j!="": list=list+[j] if list!=[]: annlist=annlist+[list] return annlist def nextImage(fileList, doneList): i=len(doneList) imgName=fileList[i] output="\n\n\n\n" output=output+"\n\n\n
\n" output=output+"" output=output+"\n" output=output+"
" output=output+imgName output=output+"
\n" return output def clickIt(wordList): output="\n" for i in wordList: output=output+"\n" i=0 while i<10: output=output+"\n" i=i+1 output=output+"
"+i+"
\n" output=output+" \n" output=output+"
\n" return output def puzzle(image,clicker): output="
" output=output+"" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"
\n"+image+"\n\n"+clicker+"\n
\n" output=output+"\n" output=output+"
\n" return output def processForm(form): listOfClicked=[] listOfAdded=[] oldImage="" if form.has_key("oldImage"): oldImage=form["oldImage"].value for name in form.keys(): field=form[name] #print "Input: " + name #if type(field) == ListType: # print "ListType:" # for subfield in field: # print subfield #else: # print field.value if name=="clicked": if(type(field)==ListType): for subfield in field: listOfClicked=listOfClicked+[ subfield.value ] else: listOfClicked=listOfClicked+[ form[name].value ] elif name=="clicked0": if form.has_key("added0"): listOfAdded=listOfAdded+[ form["added0"].value ] elif name=="clicked1": if form.has_key("added1"): listOfAdded=listOfAdded+[ form["added1"].value ] elif name=="clicked2": if form.has_key("added2"): listOfAdded=listOfAdded+[ form["added2"].value ] elif name=="clicked3": if form.has_key("added3"): listOfAdded=listOfAdded+[ form["added3"].value ] elif name=="clicked4": if form.has_key("added4"): listOfAdded=listOfAdded+[ form["added4"].value ] elif name=="clicked5": if form.has_key("added5"): listOfAdded=listOfAdded+[ form["added5"].value ] elif name=="clicked6": if form.has_key("added6"): listOfAdded=listOfAdded+[ form["added6"].value ] elif name=="clicked7": if form.has_key("added7"): listOfAdded=listOfAdded+[ form["added7"].value ] elif name=="clicked8": if form.has_key("added8"): listOfAdded=listOfAdded+[ form["added8"].value ] elif name=="clicked9": if form.has_key("added9"): listOfAdded=listOfAdded+[ form["added9"].value ] ##print "CLICKED WAS: " ##print listOfClicked ##print "ADDED WAS: ##print listOfAdded return oldImage,listOfClicked, listOfAdded def processLists(listOfClicked, listOfAdded, oldImage): print oldImage print listOfClicked print listOfAdded doneHandle=open(DoneListFileName+"-"+username,"a") doneHandle.write(oldImage+" ") for i in listOfClicked+listOfAdded: doneHandle.write(i+" ") doneHandle.write("\n") doneHandle.close() wordHandle=open(WordListFileName+"-"+username,"a") for i in listOfAdded: wordHandle.write(i+"\n") wordHandle.close() print "
"
form=cgi.FieldStorage()

userName=""
if not(form.has_key("user")):
    output="""
    
Username
""" else: username=form["user"].value oldImage,listOfClicked,listOfAdded=processForm(form) processLists(listOfClicked, listOfAdded, oldImage) fileList=readFileList(FileListFileName+"-"+username) wordList=readWordList(WordListFileName+"-"+username) doneList=readAnnotatedList(DoneListFileName+"-"+username) image=nextImage(fileList, doneList) clicker=clickIt(wordList) output=puzzle(image,clicker) print "
" Display(output)