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']+"