#!/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"
return output
def clickIt(wordList):
output="\n"
return output
def puzzle(image,clicker):
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="""
"""
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)