import AccessControl import OFS, Globals import types import YlTest #from YlTyybid import ValikYlesanne from OFS import SimpleItem from TraversableWrapper import Traversable from Globals import Persistent from AccessControl import ClassSecurityInfo from Cruft import Cruft from common import add_dtml #from YlTest import asendaHTML #from YlTyybid import ValikYlesanne class YlAlus( Persistent, OFS.SimpleItem.Item, Traversable, AccessControl.Role.RoleManager ): "Testi ülesanne" meta_type="YlAlus" kysimus="Ülesande küsimus" viiteURL="" viiteTekst="" pilt=None kirjeldavTekst="" vastusPakutud=0 tostuTundlik=1 opetajaPunktid=None opetajaKommentaar="" normPunktid=10 punktiArvutus=1 def ylesandeNimetus(self, REQUEST): "Ülesande tüübi nimi" # return self.meta_type def punkte(self): "Arvestatavate punktide arv" if self.kasPunktiArvutus(): if self.annaOpetajaPunktid() is not None: return self.annaOpetajaPunktid() else: return self.automaatPunkte() def automaatPunkte(self): "Kaetakse punktiarvutusel üle" return "X" def annaNormPunktid(self): "Võimalik normijärgsete maksimumpunktide arv vastavas ülesandes" return self.normPunktid def normPunktidHTML(self, REQUEST): "Väljund tabelisse" if self.kasPunktiArvutus(): return str(self.annaNormPunktid()) else: return "-/"+str(self.annaNormPunktid()) def seaNormPunktid(self, REQUEST, punktid): "Normpunktide salvestus" try: self.normPunktid=int(punktid) return "" except: self.normPunktid=0 return REQUEST['L_incorrect_point_count'] def kasPunktiArvutus(self): "Kas vastav ülesanne on punktiarvutuse osa" return self.punktiArvutus def seaPunktiArvutus(self, olek): "Punktiarvutus" if olek: self.punktiArvutus=1 else: self.punktiArvutus=0 def seaOpetajaKommentaar(self, kommentaar): "Õpetaja kommentaar lahendusele" self.opetajaKommentaar=kommentaar def annaOpetajaKommentaar(self): "Antakse kui on" if hasattr(self, "opetajaKommentaar"): # if type(self.opetajaKommentaar) is types.StringType: return self.opetajaKommentaar # return "Vigane kommentaar" else: return "" def opetajaKommentaarHTML(self, REQUEST): "Kodeeritult" return YlTest.asendaHTML(self.annaOpetajaKommentaar()) def seaOpetajaPunktid(self, punktid): "Õpetaja pakutud punktid lahendusele" if punktid is None: self.opetajaPunktid=None return try: self.opetajaPunktid=int(punktid) except: pass def annaOpetajaPunktid(self): "Antakse kui on" if self.kasPunktiArvutus(): if hasattr(self, "opetajaPunktid"): return self.opetajaPunktid else: return None return "-" def kysimusHTML(self, REQUEST): "Küsimus HTML-kodeeritult" import YlTest return YlTest.asendaHTML(self.kysimus) def viideHTML(self, REQUEST): "Vajutatav viide HTML-kodeeritult" try: if self.viiteURL=="" or self.viiteTekst=="": return "" return "
"+YlTest.asendaHTML(self.viiteTekst)+"" except: return "" def annaKirjeldavTekst(self, REQUEST): "Kirjeldav tekst" if hasattr(self, 'kirjeldavTekst'): return self.kirjeldavTekst else return "" def kirjeldavTekstHTML(self, REQUEST): "Kirjeldav tekst kodeeritult" return YlTest.asendaHTML(self.annaKirjeldavTekst(REQUEST)) def piltHTML(self, REQUEST): if self.kasPilt(): return "
" else: return "" def esitlusHTML(self, REQUEST): "Küsimus koos ilustustega" return self.kysimusHTML(REQUEST)+self.viideHTML(REQUEST)+self.piltHTML(REQUEST) def taitmineHTML(self, REQUEST, elemendinimi): "Vastuse sisestamise koht" return "Täitmiseks mõeldud osa" def vaatamineHTML(self, REQUEST): "Koostaja poolt lahenduskoha vaatamine" return "Variantide vaatamiseks mõeldud osa" def kasPihtasArvutus(self): "Kas uuritakse tabamust" return 0 def kasPihtasHTML(self, REQUEST): "Kas saadi vastusega pihta" if self.kasPihtasArvutus(): if self.kasPihtas(): return "+" else: return "-" else: return "Tabamust ei uurita" def kasPihtas(self): "Sisemine uuring alamklassis" return 0 def tegelikHTML(self, REQUEST): "Opetaja pakutud oige vastus" return "Ainuoige lahendus puudub" def kirjeldavTekstVormis(self, REQUEST, elemendiNimi="kirjeldavtekst") return "Kirjeldav tekst:
\n" def kysimusVormis(self, REQUEST, elemendiNimi="kysimus"): return REQUEST['L_it_ex_question']+""":
""" % (elemendiNimi, self.kysimusHTML(REQUEST)) def viideVormis(self, REQUEST): "Viite vorm" self.get_lang(('ivatests',), REQUEST) url=tekst="" try: url=self.viiteURL tekst=self.viiteTekst except: pass return """
%s:
%s:
""" % (REQUEST['L_it_link_url'], url, REQUEST['L_it_link_text'], tekst) def piltVormis(self, REQUEST): "Pildi vorm" self.get_lang(('ivatests',), REQUEST) return """ Pilt:

"""+REQUEST['L_it_delete_picture']+"""
""" + self.piltHTML(REQUEST) def normPunktidVormis(self, REQUEST): "Täispunktide sisestusvorm" self.get_lang(('ivatests',), REQUEST) arvutus="" if not self.kasPunktiArvutus(): arvutus="
"+REQUEST['L_it_no_automatic_point_calculating'] return "
"+REQUEST['L_it_nominal_points']+":
"+\ " %s" % (str(self.annaNormPunktid()), arvutus) def kasPilt(self): "Kas pilt olemas" if not hasattr(self, "pilt"): return 0 if self.pilt is None: return 0 return 1 def naitaPilti(self, REQUEST): "Pildiväljastus" if self.kasPilt(): REQUEST.RESPONSE.setHeader('content-type', 'image/jpeg') return self.pilt else: return "Pilt puudub" def vastuseMuutmisVorm(self, REQUEST): "Muutmisvormi elemendid vastusepoole andmete näitamiseks, soovitav üle katta, elemendi nimeks vastus" return "Vastamiskoht" def leivaPuru(self, REQUEST, viimane=0): "Teekond üles" nimi=self.id if viimane: tekst=self.id else: tekst=""+str(self.id)+"" return self.aq_parent.leivaPuru(REQUEST)+" > "+tekst def muutmisVorm(self, REQUEST, liikumisURL=None): "Testi muutmiseks mõeldud leht, üle katta vaid juhul, kui vaja muuta enam kui ühe elemendinimega vastuseosa" self.get_lang(('ivatests',), REQUEST) liiguvali="" if liikumisURL is not None: liiguvali="" tulemus=YlTest.leheAlgus(self, REQUEST)+\ "
"+liiguvali+\ kirjeldavTekstVormis()+\ ""+\ ""+\ ""+\ "
"+self.kysimusVormis(REQUEST)+""+self.vastuseMuutmisVorm(REQUEST)+"

"+self.viideVormis(REQUEST)+"
"+\ self.piltVormis(REQUEST)+self.normPunktidVormis(REQUEST)+\ "
" return tulemus+YlTest.leheLopp(self, REQUEST) def muutmisLeht(self, REQUEST, kysimus=None, vastus=None, viiteURL=None, viiteTekst=None, pilt=None, kustutaPilt=0, normPunktid=0, liikumisURL='muutmisVorm', kirjeldavTekst=''): "Muutmisvormi andmete püüdja" probleem="" if kysimus: self.kysimus=kysimus try: self.vastuseMuutmisLeht(REQUEST, vastus) except: self.vastuseMuutmisLeht(vastus) self.kirjeldavTekst=kirjeldavTekst probleem=probleem+self.viiteSalvestusLeht(REQUEST, viiteURL, viiteTekst) probleem=probleem+self.pildiSalvestusLeht(pilt, kustutaPilt) probleem=probleem+self.seaNormPunktid(REQUEST, normPunktid) if probleem: return probleem REQUEST.RESPONSE.redirect(liikumisURL) def vastuseMuutmisLeht(self, vastus): "Leht vastuse muutmiseks, soovitav üle katta" pass def viiteSalvestusLeht(self, REQUEST, viiteURL, viiteTekst): self.get_lang(('ivatests',), REQUEST) if (viiteURL is None or viiteURL==""): if(viiteTekst is None or viiteTekst==""): return "" else: return REQUEST['L_it_no_link_address'] if not self.viiteSobivusKontroll(viiteURL): return REQUEST['L_it_incorrect_URL'] if viiteTekst is None or viiteTekst=="": viiteTekst=viiteURL self.viiteURL=viiteURL self.viiteTekst=viiteTekst return "" def pildiSalvestusLeht(self, pilt, kustutaPilt): if kustutaPilt: self.pilt=None if pilt is None: return "" try: if len(pilt.filename)>0: self.pilt=pilt.read() else: self.pilt=None except: pass return "" def viiteSobivusKontroll(self, viiteURL): return 1 def index_html(self, REQUEST): "Peegel veebis" import YlTest return YlTest.leheAlgus(self, REQUEST)+\ self.kirjeldavTekstHTML(REQUEST)+\ ""+\ "
"+self.esitlusHTML(REQUEST)+""+self.vaatamineHTML(REQUEST)+"
"+YlTest.leheLopp(self, REQUEST) def kustuta(self): "Ülesanne kustutatakse" self.aq_parent._delObject(self.id) def koopia(self): "samade andmetega ülesanne" import copy return copy.copy(self) def loeTekstistYlesanne(self, reamassiiv): "Loeb andmed saadetud tekstist, üle katta" def kirjutaYlesanneTekstiks(self, testinimi, nr): "Väljastab ülesande tekstina, üle katta" return "" def salvestaPakutu(self, andmed): "Loob koopia ülesandest koos pakutud vastusega" k=self.koopia() k.vastusPakutud=1 k.pakutudAndmed=andmed return k Globals.InitializeClass(YlAlus) Globals.default__class_init__(YlAlus)