import AccessControl
import OFS, Globals
from OFS import SimpleItem
import types
import time
from TraversableWrapper import Traversable
from Globals import Persistent
from AccessControl import ClassSecurityInfo
from Cruft import Cruft
from common import add_dtml
#import TestiYlesanne
import YlVahendus
from YlVahendus import YlVahendus
#from TestiYlesanne import TestiYlesanne
class YlTest(
OFS.Folder.Folder,
OFS.SimpleItem.Item,
Persistent,
AccessControl.Role.RoleManager,
Traversable,
Cruft
):
"Ülesannetest koosnev test"
meta_type='YlTest'
pealkiri=""
nr=0
avatudTaitmiseks=0
juhuslikJarjekord=0
security=ClassSecurityInfo()
security.declareObjectPublic()
def __init__(self):
"Alustus"
self.koigiLuba=LahendusLuba()
self.koigiLuba.id='koigiLuba'
self.grupiLoad=LahendusLoad()
self.grupiLoad.id='grupiLoad'
self.isikuLoad=LahendusLoad()
self.isikuLoad.id='isikuLoad'
self.vahendus=YlVahendus()
self.vahendus.id='vahendus'
def lisaYlesanne(self, yl):
"uus ülesanne testis"
if yl is None: return
self.nr=self.nr+1
yl.id="yl"+str(self.nr)
self._setObject(yl.id, yl)
def lisaYlesanded(self, ylmassiiv):
"Lisatakse ülesannete massiiv"
for x in ylmassiiv:
self.lisaYlesanne(x)
def ylesandedTekstina(self):
"Väljastab ülesanded HotPotatos ekspordina"
tulemus=""
yl=self.ylesanded()
for i in range(len(yl)):
tulemus=tulemus+yl[i].kirjutaYlesanneTekstiks(self.pealkiri, i+1)
return tulemus
def kysimused(self):
"Küsimuste loetelu"
k=[]
for x in self.ylesanded():
k.append(x.kysimus)
return k
def ylesanded(self):
"Ülesannete loetelu"
return self.objectValues()
def annaPealkiri(self):
"Testi nimi"
try:
return self.pealkiri
except:
return ""
def pealkiriHTML(self, REQUEST):
"Pealkiri HTMLina"
return asendaHTML(self.annaPealkiri())
def pealkirjaEsitlus(self, REQUEST):
"Nimi menüüs"
if self.pealkiriHTML(REQUEST)!="":
return self.pealkiriHTML(REQUEST)+" ("+self.getId()+")"
else:
return self.getId()
def seaPealkiri(self, pealkiri):
"Pealkirja salvestus"
self.pealkiri=pealkiri
def pealkirjaMuutmisVormHTML(self, REQUEST, liikumisURL):
"Leht pealkirja muutuse sisestuseks"
tulemus=leheAlgus(self, REQUEST)
tulemus=tulemus+self.pealkirjaMuutmisVorm(REQUEST, liikumisURL)
tulemus=tulemus+leheLopp(self, REQUEST)
return tulemus
def pealkirjaMuutmisVorm(self, REQUEST, liikumisURL=""):
"Vorm pealkirja muutmiseks"
self.get_lang(('ivatests',), REQUEST)
return "
"
def pealkirjaMuutmisLeht(self, REQUEST, pealkiri, liikumisURL=""):
"Pealkirja salvestus"
self.seaPealkiri(pealkiri)
if liikumisURL=='':
liikumisURL='ylesandedMuutmisTabelina';
# REQUEST.RESPONSE.redirect('ylesandedMuutmisTabelina')
REQUEST.RESPONSE.redirect(liikumisURL)
def ylesanneteArv(self):
"Ülesannete arv"
return len(self.ylesanded())
def tutvustus(self):
"Testi tutvutus"
return "Lahendamiseks mõeldud test"
def kasKysimusteJuhuslikJarjekord(self):
"Kas lahendamisel järjestatakse küsimused juhuslikult"
if hasattr(self, 'juhuslikJarjekord'):
return self.juhuslikJarjekord
return 0
def seaKysimusteJuhuslikJarjekord(self, jarjekord):
"Muutuja seadmine"
if jarjekord:
self.juhuslikJarjekord=1
else:
self.juhuslikJarjekord=0
return str(self.juhuslikJarjekord)
def kasLubatudLahendada(self, REQUEST):
"Arvutus lubade kaudu"
n=self.lahendusKordadeArv(REQUEST)
if self.koigiLuba.kasLubatudLahendada(REQUEST, n):return 1
if hasattr(self.isikuLoad, str(REQUEST.AUTHENTICATED_USER)):
if getattr(self.isikuLoad, str(REQUEST.AUTHENTICATED_USER)).kasLubatudLahendada(REQUEST, n):
return 1
for x in self.find_course().sisegrupid.objectValues():
if str(REQUEST.AUTHENTICATED_USER) in x.get_local_roles():
if hasattr(self.grupiLoad, x.id):
if getattr(self.grupiLoad, x.id).kasLubatudLahendada(REQUEST, n):
return 1
return 0
def lubadeViited(self, REQUEST):
"Viited lubadele"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+""+REQUEST['L_it_description_of_permissions']+"
"+leheLopp(self, REQUEST)
return tulemus
def lubadeKustutusLeht(self, REQUEST):
"Lubade eemaldamine"
if hasattr(REQUEST, 'chkavatudtaitmiseks'):
self.avatudTaitmiseks=0
if hasattr(REQUEST, 'chkkoigiluba'):
self.koigiLuba.algusAeg=-1
for x in self.isikuLoad.nimedeLoetelu():
if hasattr(REQUEST, 'isik'+x):
self.isikuLoad._delObject(x)
for x in self.grupiLoad.nimedeLoetelu():
if hasattr(REQUEST, 'grupp'+x):
self.grupiLoad._delObject(x)
REQUEST.RESPONSE.redirect('lubadeViited')
def kasLeidubLoataIsikuid(self):
"jah/ei"
return len(self.find_course().get_all_users_id())>len(self.isikuLoad.nimedeLoetelu())
def isikuLubadeLisamisVorm(self, REQUEST):
"Valida, kellel lubada"
self.get_lang(('ivatests',),REQUEST)
tulemus=leheAlgus(self, REQUEST)+""+leheLopp(self, REQUEST)
def isikuLubadeLisamisLeht(self, REQUEST, nimed=None):
"Nimede salvestus"
if nimed is not None:
if type(nimed) is types.StringType:
nimed=(nimed,)
for x in nimed:
luba=LahendusLuba()
luba.id=x
self.isikuLoad._setObject(luba.id, luba)
REQUEST.RESPONSE.redirect('lubadeViited')
def kasLeidubLoataGruppe(self):
"jah/ei"
return len(self.find_course().sisegrupid.objectValues())>len(self.grupiLoad.nimedeLoetelu())
def grupiLubadeLisamisVorm(self, REQUEST):
"Valida, kellel lubada"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+""+leheLopp(self, REQUEST)
def grupiLubadeLisamisLeht(self, REQUEST, nimed=None):
"Lahendusloa lisamine grupile"
if nimed is not None:
if type(nimed) is types.StringType:
nimed=(nimed,)
for x in nimed:
luba=LahendusLuba()
luba.id=x
self.grupiLoad._setObject(luba.id, luba)
REQUEST.RESPONSE.redirect('lubadeViited')
def kustutaLahendusload(self):
"Kustutatakse lahendusload"
self.grupiLoad.kustutaKoikLoad()
self.isikuLoad.kustutaKoikLoad()
self.koigiLuba.algusAeg=-1
def kasLeidubLubasid(self):
"Lubade olemasolu otsing"
if len(self.grupiLoad.objectValues())>0: return 1
if len(self.isikuLoad.objectValues())>0: return 1
if self.koigiLuba.algusAeg!=-1: return 1
return 0
def taitmisAvatusSymbol(self):
"Sümbol vastavalt ligipääsuseisundile"
if self.kasAvatudTaitmiseks()==1:
return "+"
if self.kasAvatudTaitmiseks()==2:
return "|"
return "-"
def kasAvatudTaitmiseks(self):
"Teatab, kas opilastele on test nahtav"
try:
if self.avatudTaitmiseks:
return 1
if self.kasLeidubLubasid(): return 2
return 0
except:
return 0
def seaAvatudTaitmiseks(self, seisund, REQUEST):
"Saab oelda, kas avatud"
if int(seisund)==1:
self.avatudTaitmiseks=1
else:
self.avatudTaitmiseks=0
self.kustutaLahendusload()
#return str(self.avatudTaitmiseks)
REQUEST.RESPONSE.redirect('index_html')
def muudaAvatudTaitmiseks(self, REQUEST):
"Vahetab seisundi"
if self.avatudTaitmiseks==1:
self.seaAvatudTaitmiseks(0, REQUEST)
else:
self.seaAvatudTaitmiseks(1, REQUEST)
return str(self.avatudTaitmiseks)+" kuku"
def ylesanneteTyypideLoetelu(self, REQUEST):
"Väljakutse"
return leheAlgus(self, REQUEST)+self.vahendus.ylesanneteTyypideLoetelu(REQUEST)+leheLopp(self, REQUEST)
def lisaUusYlesanne(self, REQUEST, tyyp):
"Ülesande lisamine"
yl=self.vahendus.lisaUusYlesanne(REQUEST, tyyp)
# return "Jah 2"
self.lisaYlesanne(yl)
REQUEST.RESPONSE.redirect(self.absolute_url()+"/"+yl.id+"/muutmisVorm?liikumisURL="+self.absolute_url())
#return (self.absolute_url()+yl.id+"/muutmisVorm&liikumisURL="+self.absolute_url())
#REQUEST.RESPONSE.redirect('ylesandedMuutmisTabelina')
def ylesandedTabelina(self, REQUEST):
"Ülesanded tabelina"
m=self.ylesanded()
tulemus=leheAlgus(self, REQUEST)+self.pealkirjaEsitlus(REQUEST)+""
for x in m:
tulemus=tulemus+"\n| "+x.esitlusHTML(REQUEST)+" | "+\
" | "+x.vaatamineHTML(REQUEST)+" | "+\
""+x.marksonadHTML(REQUEST)+" | "+\
""+x.ylesanne.ylesandeNimetus(REQUEST)+" |
"
tulemus=tulemus+"
"
return tulemus+leheLopp(self, REQUEST)
def ylesandedMuutmisTabelina(self, REQUEST):
"Ülesanded koos viidetega kustutamiseks ja muutmiseks"
#import urllib
#return "Tere"
# from TestiYlesanne import TestiYlesanne
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+self.vahendus.ylesanneteTyybidValikuna(REQUEST)
if len(self.ylesanded())>0:
tulemus=tulemus+""+\
"\n
"
# avatuArv=1
# avatuTekst=REQUEST['L_it_make_public']
# if self.avatudTaitmiseks:
# avatuArv=0
# avatuTekst=REQUEST['L_it_hide']
# tulemus=tulemus+""+REQUEST['L_it_add_exercise']+""+\
# "
"+avatuTekst+" test"+\
# "
"+REQUEST['L_it_results_from_users']+"
"
# tulemus=tulemus+"
"+self.vahendus.ylesanneteTyypideLoetelu(REQUEST)+"
"+\
# ""+REQUEST['L_it_import_from_hotpotatoes']+"
"+\
# ""+REQUEST['L_it_export_to_web_ct']+""
# return "Terekest 3"
return tulemus+leheLopp(self, REQUEST)
def kustuta_leht(self, REQUEST, kustuta=None):
"ülesannete kustutamise leht"
if kustuta is None:
kustuta=()
if type(kustuta) is types.StringType:
kustuta=(kustuta,)
for x in kustuta:
self._delObject(x)
REQUEST.RESPONSE.redirect('ylesandedMuutmisTabelina')
def ylTyyp(self, REQUEST, ylid):
"Küsitud ID-ga ülesande tüüp"
if hasattr(self, ylid):
return self.ylid.ylesandeNimetus(REQUEST)
return None
def taidaVorm(self, REQUEST):
"Täitmisvorm"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+""
tulemus=tulemus+REQUEST['L_it_solving_test'] % self.pealkirjaEsitlus(REQUEST)
tulemus=tulemus+"""
"""
return tulemus+leheLopp(self, REQUEST)
def index_html(self, REQUEST):
"Peegel veebi"
if self.kas_opetaja(self, REQUEST):
#return self.ylesandedMuutmisTabelina(REQUEST)
REQUEST.RESPONSE.redirect(self.absolute_url()+"/ylesandedMuutmisTabelina")
else:
return self.taidaVorm(REQUEST)
def loeAndmedLehelt(self, REQUEST):
"Veebilt tulevad andmed talde"
self.get_lang(('ivatests',), REQUEST)
tulemus=""
t=TestiVastused()
t.testinimi=self.id
for x in self.ylesanded():
vastus=None
if hasattr(REQUEST, x.id):
vastus=getattr(REQUEST, x.id)
tulemus=tulemus+"!"+x.id+" "+str(vastus)
t._setObject(x.id, x.salvestaPakutu(vastus))
self.paigutaTestiVastus(REQUEST, t)
return leheAlgus(self, REQUEST)+"
"+REQUEST['L_it_answers_saved']+""+leheLopp(self, REQUEST)
# def salvestusAsukoht(self, REQUEST, testinimi='nimetu'):
# "Koht testi tulemuste salvestamiseks"
# kasutaja=getattr(getattr(self.fle_root().fle_users, str(REQUEST.AUTHENTICATED_USER)).webtop, 'wt5')
# if not hasattr(kasutaja, 'testid'):
# kasutaja.manage_addProduct['OFSP'].manage_addFolder('testid')
# #kasutaja._setObject('testid', TestiVastused())
# if not hasattr(kasutaja.testid, testinimi):
# kasutaja.testid.manage_addProduct['OFSP'].manage_addFolder(testinimi)
# testikataloog=getattr(kasutaja.testid, testinimi)
# testikataloog.variandinr=0
# testikataloog=getattr(kasutaja.testid, testinimi)
# #return self.get_url_to_object(testikataloog)
# return testikataloog
def salvestusAsukoht(self, REQUEST, testinimi='nimetu'):
"Koht testi tulemuste salvestamiseks"
kasutajajuur=getattr(self.fle_root().fle_users,\
str(REQUEST.AUTHENTICATED_USER))
try:
kasutaja=getattr(kasutajajuur.webtop,\
'c'+kasutajajuur.get_jooksev_kursus())
except:
kasutaja=kasutajajuur.webtop
if not hasattr(kasutaja, 'testivastused'):
kasutaja.manage_addProduct['OFSP'].manage_addFolder('testivastused')
kasutaja.testivastused.id='testivastused'
if not hasattr(kasutaja.testivastused.aq_self, testinimi):
kasutaja.testivastused.manage_addProduct['OFSP'].manage_addFolder(testinimi)
testikataloog=getattr(kasutaja.testivastused, testinimi)
testikataloog.id=testinimi
testikataloog.variandinr=0
testikataloog=getattr(kasutaja.testivastused, testinimi)
#return self.get_url_to_object(testikataloog)
return testikataloog
def paigutaTestiVastus(self, REQUEST, vastus):
"Paigutab variandi uue id alla"
self.get_lang(('ivatests',), REQUEST)
k=self.salvestusAsukoht(REQUEST, vastus.testinimi)
# if not hasattr(k, 'variandinr'):
# k.variandinr=0
k.variandinr=k.variandinr+1
vastus.id="variant"+str(k.variandinr)
# vastus.id=REQUEST['L_it_answer_instance']+str(k.variandinr)
k._setObject(vastus.id, vastus)
print "salvestati "+vastus.id+" "+k.absolute_url()
return str(k.variandinr)
def lahendusKordadeArv(self, REQUEST):
"Mitu varianti on kasutaja vastavat testi lahendanud"
k=self.salvestusAsukoht(REQUEST, self.id)
return len(k.objectValues())
def kasutajateTulemused(self, REQUEST, kommentaarid=0):
"Testi tulemused"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+""+(REQUEST['L_it_test_answers'] % self.id)+"
"
try:
kasutajad=self.get_all_users()
except:
return tulemus+REQUEST['L_it_problem_in_finding_user']
for x in kasutajad:
tulemus=tulemus+"- "+str(x.id)+"
"
# try:
k=getattr(x.webtop, 'c'+str(self.find_course().get_id()))
#tulemus=tulemus+"j"+k.absolute_url()
if hasattr(k, 'testivastused'):
#tulemus=tulemus+"k"
if hasattr(k.testivastused, self.id):
t=getattr(k.testivastused, self.id)
tulemus=tulemus+""
for y in t.objectValues():
print type(y)
tulemus=tulemus+"- "+str(y.id)+" "
if kommentaarid:
tulemus=tulemus+str(y.lyhiKokkuvoteOpetajale(REQUEST))
else:
tulemus=tulemus+str(y.punktiArvutusHTML(REQUEST))
tulemus=tulemus+"
"
tulemus=tulemus+"
"
# except Exception, probleem:
# tulemus=tulemus+" "+str(probleem)
return tulemus+"
"+leheLopp(self, REQUEST)
def leivaPuru(self, REQUEST, viimane=0):
"Teekond üles"
self.get_lang(('ivatests',),REQUEST)
nimi=self.id
if viimane:
tekst=nimi
else:
tekst=""+nimi+""
if self.kas_opetaja(self, REQUEST):
# pass
return " > "+REQUEST["L_it_hdr_tests"]+" > " + tekst
return " > "+tekst
# def paigutaTestiVastus(self, REQUEST, vastus):
# "Paigutab variandi uue id alla"
# k=self.salvestusAsukoht(REQUEST, vastus.id)
# k.variandinr=k.variandinr+1
# #vastus=ValikTest()
# k._setObject("variant"+str(k.variandinr), vastus)
# return str(k.variandinr)
#Globals.default__class_init__(YlTest)
Globals.InitializeClass(YlTest)
class LahendusLoad(Persistent, OFS.Folder.Folder, Traversable):
"Lahenduslubade kogum"
def leivaPuru(self, REQUEST, viimane=0):
"Teekond üles"
nimi=self.id+" "
if viimane:
tekst=nimi
else:
tekst=""+nimi+""
return self.aq_parent.leivaPuru(REQUEST)+" > "+tekst
def kustutusleht(self, REQUEST, kustuta=None):
"õiguslubade kustutamine"
if kustuta is not None:
if type(kustuta)==types.StringType:
kustuta=(kustuta,)
for x in kustuta:
self._delObject(x)
REQUEST.RESPONSE.redirect('index_html')
def kustutaKoikLoad(self):
"Plats puhtaks"
for x in self.nimedeLoetelu():
self._delObject(x)
def nimedeLoetelu(self):
"Elementide nimed tekstina"
nimed=[]
for x in self.objectValues():
nimed.append(x.id)
return nimed
def index_html(self, REQUEST):
"Lubade loetelu"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+""+leheLopp(self, REQUEST)
return tulemus
class LahendusLuba(Persistent, OFS.SimpleItem.Item, Traversable):
"õigused testi lahendamiseks"
kordadeArv=-1 #arvu ei piirata
algusAeg=-1 #Pole avatud lahendamiseks
loppAeg=-1 #Kestust ei piirata
import time
def kasLahendusAeg(self):
"jah/ei praeguse hetke kohta"
if algusAeg==-1: return 0
if algusAeg>time.time():return 0
if loppAeg==-1:return 1
if loppAeg>time.time():return 1
else: return 0
def kasLubatudLahendada(self, tehtudKordadeArv):
"Jah/ei"
if self.kasLahendusAeg()==0:return 0
if self.kordadeArv==-1: return 1
return tehtudKordadeArv"
for x in range(algus, ots):
tulemus=tulemus+"\n "
tulemus=tulemus+"\n"
return tulemus
def aegTekstina(self, REQUEST, aeg):
"tekstiesitus"
self.get_lang(('common',), REQUEST)
if aeg==-1: return "*"
return time.strftime(REQUEST['L_timestamp_format'], time.localtime(aeg))
def loaAndmedTekstina(self, REQUEST):
"Loa kirjeldus ekraanil. Ajavahemik, kordade arv."
tulemus=""
if self.algusAeg==-1:
tulemus=tulemus+"avamata "
return tulemus
tulemus=tulemus+self.aegTekstina(REQUEST, self.algusAeg)+"-"
if self.loppAeg==-1:
tulemus="igavesti"
else:
tulemus=tulemus+self.aegTekstina(REQUEST, self.loppAeg)
if self.kordadeArv==-1:
tulemus=tulemus+" piiramata arv"
else:
tulemus=tulemus+" "+str(self.kordadeArv)
tulemus=tulemus+" x"
return tulemus
def ajaMuutmisElemendid(self, elemendinimi, aeg=time.time()):
"Valikute kogum"
if aeg==-1:aeg=time.time()
m=time.localtime(aeg)
tulemus=self.looValik(elemendinimi+"Aasta", m[0]-1, m[0]+10, m[0])
tulemus=tulemus+"-"+\
self.looValik(elemendinimi+"Kuu", 1, 12, m[1])
tulemus=tulemus+"-"+\
self.looValik(elemendinimi+"Paev", 1, 31, m[2])
tulemus=tulemus+" "+\
self.looValik(elemendinimi+"Tund", 0, 23, m[3])
tulemus=tulemus+":"+\
self.looValik(elemendinimi+"Minut", 0, 59, m[4])
return tulemus
def ajaPyydmisLeht(self, REQUEST, elemendinimi):
"Saabuvad parameetrid ajaks"
m=(int(getattr(REQUEST, elemendinimi+"Aasta")),
int(getattr(REQUEST, elemendinimi+"Kuu")),
int(getattr(REQUEST, elemendinimi+"Paev")),
int(getattr(REQUEST, elemendinimi+"Tund")),
int(getattr(REQUEST, elemendinimi+"Minut")),0,0,0,0)
return time.mktime(m)
def muutmisVorm(self, REQUEST):
"Väljund veebilehele"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+\
""+leheLopp(self, REQUEST)
return tulemus
def muutmisLeht(self, REQUEST):
"Tulemuste talletus"
self.algusAeg=self.ajaPyydmisLeht(REQUEST, "algusAeg")
self.loppAeg=self.ajaPyydmisLeht(REQUEST, "loppAeg")
try:
self.kordadeArv=int(REQUEST['kordadearv'])
except:
self.kordadeArv=-1
REQUEST.RESPONSE.redirect('muutmisVorm')
def index_html(self, REQUEST):
"Avaleht"
return self.muutmisVorm(REQUEST)
def leivaPuru(self, REQUEST, viimane=0):
"Teekond üles"
nimi=self.id+" lahendusaeg"
if viimane:
tekst=nimi
else:
tekst=""+nimi+""
return self.aq_parent.leivaPuru(REQUEST)+" > "+tekst
class TestiVastused(
OFS.Folder.Folder,
Persistent,
AccessControl.Role.RoleManager,
Traversable,
Cruft
):
"Testi vastusvariant"
testinimi=""
koguKommentaar=""
def ylesanded(self):
"Ülesannete kogum"
return self.objectValues()
def vastusteTabel(self, REQUEST):
"Ülesannete vastused tabelina"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)
tulemus=tulemus+"
"+\
"| "+REQUEST['L_it_an_question']+" | "+REQUEST['L_it_an_user_answer']+" | "+REQUEST['L_it_an_teacher_answer']+" | "+REQUEST['L_it_an_points']+" | "+REQUEST['L_it_an_comment']+" |
"
for x in self.ylesanded():
p="x"
if x.kasPunktiArvutus():
p=str(x.punkte())+"/"+str(x.normPunktid)
tulemus=tulemus+"\n| "+x.esitlusHTML(REQUEST)+" | "+\
x.pakutudHTML(REQUEST)+" | "+x.tegelikHTML(REQUEST)+" | "+p+" | "+x.opetajaKommentaarHTML(REQUEST)+" |
"
tulemus=tulemus+"
"+self.punktiArvutusHTML(REQUEST)+"
"+self.koguKommentaarHTML(REQUEST)+"
"
if self.kas_opetaja(self, REQUEST):
tulemus=tulemus+""+REQUEST['L_it_an_answer_commenting_table']+""
return tulemus+leheLopp(self, REQUEST)
def vastusteKommenteeritavTabel(self, REQUEST):
"Ülesannete vastused tabelina"
self.get_lang(('ivatests',), REQUEST)
tulemus=leheAlgus(self, REQUEST)+\
""
return tulemus+leheLopp(self, REQUEST)
def kommentaarideSalvestusLeht(self, REQUEST):
"Õpetaja kommentaaride salvestus"
for x in self.ylesanded():
if hasattr(REQUEST, 'opetajapunktid'+x.id) and len(getattr(REQUEST,'opetajapunktid'+x.id))>0:
try:
x.seaOpetajaPunktid(int(getattr(REQUEST,'opetajapunktid'+x.id)))
x.seaPunktiArvutus(1)
except:
x.seaPunktiArvutus(0)
else:
x.seaOpetajaPunktid(None)
x.seaPunktiArvutus(0)
if hasattr(REQUEST, 'opetajakommentaar'+x.id):
x.seaOpetajaKommentaar(getattr(REQUEST, 'opetajakommentaar'+x.id))
self.seaKoguKommentaar(REQUEST.koguKommentaar)
REQUEST.RESPONSE.redirect('vastusteKommenteeritavTabel')
def seaKoguKommentaar(self, koguKommentaar):
"Salvestatakse õpetaja kommentaar kogu lahendusvariandile"
self.koguKommentaar=koguKommentaar
def annaKoguKommentaar(self):
"Kommentaari väljastus"
return self.koguKommentaar
def koguKommentaarHTML(self, REQUEST):
"Kogu kommentaar HTML-ina"
return asendaHTML(self.annaKoguKommentaar())
def lyhiKokkuvoteOpetajale(self, REQUEST):
"Kokkuvote"
tulemus=self.punktiArvutusHTML(REQUEST)
for x in self.ylesanded():
if len(x.annaOpetajaKommentaar())>0:
tulemus=tulemus+"
\n"+x.opetajaKommentaarHTML(REQUEST)
if len(self.koguKommentaarHTML(REQUEST))>0:
tulemus=tulemus+"
"+self.koguKommentaarHTML(REQUEST)
return tulemus
def pihtasSumma(self):
"Tabamusega ylesannete summa"
summa=0
for x in self.ylesanded():
if x.kasPihtas():
summa=summa+1
return summa
def punktiSumma(self):
"Ülesannete punktisumma"
summa=0
for x in self.ylesanded():
if x.kasPunktiArvutus():
try:
summa=summa+x.punkte()
except Exception, probleem:
print probleem
return summa
def normPunktiSumma(self):
"100%"
summa=0
for x in self.ylesanded():
if x.kasPunktiArvutus():
summa=summa+x.annaNormPunktid()
return summa
def punktiProtsent(self, REQUEST):
"%"
self.get_lang(('ivatests',), REQUEST)
if self.normPunktiSumma()==0:
return "Protsendiarvutus puudub"
return str(self.punktiSumma()*100/self.normPunktiSumma())+" %"
def punktiArvutusHTML(self, REQUEST):
"Tulemuste väljastus"
self.get_lang(('ivatests',), REQUEST)
return str(self.punktiSumma())+" / "+str(self.normPunktiSumma())+\
", "+self.punktiProtsent(REQUEST)
def leivaPuru(self, REQUEST, viimane=0):
"Teekond üles"
self.get_lang(('ivatests',),REQUEST)
nimi=self.testinimi
if viimane:
tekst=nimi
else:
tekst=""+nimi+""
return " > "+REQUEST['L_it_tests']+" > "+tekst+" > "+REQUEST['L_it_answers']+" "
def index_html(self, REQUEST):
"Peegel veebi"
return self.vastusteTabel(REQUEST)
Globals.InitializeClass(TestiVastused)
Globals.default__class_init__(TestiVastused)
def asendaHTML(sona):
try:
sona=sona.replace("&", "&")
sona=sona.replace(">", ">")
sona=sona.replace("<", "<")
return sona;
except:
return "kala: "+sona
def leheAlgus(obj, REQUEST):
return obj.hdr(obj, REQUEST)+obj.leivaPuru(REQUEST)+"
"
def leheLopp(obj, REQUEST):
return obj.fle_html_footer(obj, REQUEST)