import AccessControl
import OFS, Globals
from OFS import SimpleItem
import types
from TraversableWrapper import Traversable
from Globals import Persistent
from AccessControl import ClassSecurityInfo
from Cruft import Cruft

class IsikuAndmed(
   OFS.SimpleItem.Item,
   Persistent, 
   AccessControl.Role.RoleManager,
   Traversable,
   Cruft
   ):
   "Klass isiku andmete hoidmiseks"
   eesnimi=""
   perenimi=""
   sugu=""
   synnip2ev=""
   aadress=""
   telefon=""
   email=""

   meta_type="IsikuAndmed"

   def __init__(self, eesnimi, perenimi, sugu, synnip2ev, aadress, telefon, email):
     "Algväärtustamine"
     self.eesnimi=eesnimi
     self.perenimi=perenimi
     self.sugu=sugu
     self.synnip2ev=synnip2ev
     self.aadress=aadress
     self.telefon=telefon
     self.email=email

   def index_html(self, REQUEST):
     "Andmete väljastus veebis"
     t=self.hdr(self, REQUEST)+"<h2>S&otilde;bra vaatamine</h2><table>\n"+\
       "<tr><td>Eesnimi: </td><td>"+self.eesnimi+"</td></tr>"+\
       "<tr><td>Perekonnanimi: </td><td>"+self.perenimi+"</td></tr>"+\
       "<tr><td>Sugu: </td><td>"+self.sugu+"</td></tr>"+\
       "<tr><td>S&uuml;nnip&auml;ev: </td><td>"+self.synnip2ev+"</td></tr>"+\
       "<tr><td>Aadress: </td><td>"+self.aadress+"</td></tr>"+\
       "<tr><td>Telefon: </td><td>"+self.telefon+"</td></tr>"+\
       "<tr><td>E-mail: </td><td>"+self.email+"</td></tr>"+\
       "<tr><td><a href='../'>Tagasi nimistusse</a></td><td><a href=muutmisVorm>Muuda</a></td></tr>"+\
       "</table>\n"+self.fle_html_footer(self, REQUEST)
     return t

   def muutmisVorm(self, REQUEST):
     "Vorm andmete muutmiseks"
     t=self.hdr(self, REQUEST)+"<h2>S&otilde;bra andmete muutmine</h2>"+\
       "<form action='muutmisLeht'><table>"+\
       "<tr><td>Eesnimi: </td><td><input type='text' name='eesnimi' value='"+self.eesnimi+"' /></td></tr>\n"+\
       "<tr><td>Perekonnanimi: </td><td><input type='text' name='perenimi' value='"+self.perenimi+"' /></td></tr>\n"+\
       "<tr><td>Sugu: </td><td><select name='sugu'><option value='mees'"
     if self.sugu=="mees":
       t=t+" selected"
     t=t+">Mees</option><option value='naine'"
     if self.sugu=="naine":
       t=t+" selected"
     t=t+">Naine</option></select></td></tr>\n"+\
       "<tr><td>S&uuml;nnip&auml;ev: </td><td><input type='text' name='synnip2ev' value='"+self.synnip2ev+"' /></td></tr>\n"+\
       "<tr><td>Aadress: </td><td><input type='text' name='aadress' value='"+self.aadress+"' /></td></tr>\n"+\
       "<tr><td>Telefon: </td><td><input type='text' name='telefon' value='"+self.telefon+"' /></td></tr>\n"+\
       "<tr><td>E-mail: </td><td><input type='text' name='email' value='"+self.email+"' /></td></tr>\n"
     t=t+"<tr><td><a href='../'>Tagasi nimistusse</a></td><td><input type='submit' value='Muuda' /></td></tr></table></form>"+self.fle_html_footer(self, REQUEST)
     return t
     
   def muutmisLeht(self, REQUEST, eesnimi, perenimi, sugu, synnip2ev, aadress, telefon, email):
     "Leht andmete salvestamiseks"
     self.eesnimi=eesnimi
     self.perenimi=perenimi
     self.sugu=sugu
     self.synnip2ev=synnip2ev
     self.aadress=aadress
     self.telefon=telefon
     self.email=email
     REQUEST.RESPONSE.redirect('index_html')

Globals.InitializeClass(IsikuAndmed)
   
class SobraList(    
   OFS.Folder.Folder,
   OFS.SimpleItem.Item,
   Persistent,
   AccessControl.Role.RoleManager):
   "Kataloog iskuandmete hoidmiseks, otsimiseks, vaatamiseks ja muutmiseks"     
   meta_type="SõbraList"
   loendur=0

   def index_html(self, REQUEST, eesnimi="", perenimi=""):
     "Andmete väljastus veebis"
     t=self.hdr(self, REQUEST)+"<h1>Minu s&otilde;prade nimistu!</h1><a href='lisamisVorm'>Lisa uus s&otilde;ber</a><form action='index_html'><table>\n"
     t=t+"<tr><td><input type='text' name='eesnimi' /></td><td><input type='text' name='perenimi' /></td><td><input type='submit' value='Otsi' /></td><td></td></tr>\n"
     t=t+"<tr><td>Eesnimi</td><td>Perekonnanimi</td><td>E-mail</td><td></td></tr>\n"
     m=self.objectValues('IsikuAndmed')
     for isik in m:
       if isik.eesnimi.startswith(eesnimi) and isik.perenimi.startswith(perenimi):  
         t=t+"<tr><td>"+isik.eesnimi+"</td><td>"+\
           isik.perenimi+"</td><td>"+\
           isik.email+"</td><td><a href='"+isik.id+"'>Vaata</a></td><td><a href='kustutamisLeht?id="+isik.id+"'>Kustuta</a></td></tr>\n"
     t=t+"</table></form>\n"+self.fle_html_footer(self, REQUEST)
     return t

   def lisamisVorm(self, REQUEST):
     "Vorm sõprade lisamiseks"
     t=self.hdr(self, REQUEST)+\
       "<body><form action='lisamisLeht' ><table>"+\
       "<tr><td>Eesnimi: </td><td><input type='text' name='eesnimi' /></td></tr>"+\
       "<tr><td>Perekonnanimi: </td><td><input type='text' name='perenimi' /></td></tr>"+\
       "<tr><td>Sugu: </td><td><select name='sugu'><option value='mees'>Mees</option><option value='naine'>Naine</option></select></td></tr>"+\
       "<tr><td>S&uuml;nnip&auml;ev: </td><td><input type='text' name='synnip2ev' /></td></tr>"+\
       "<tr><td>Aadress: </td><td><input type='text' name='aadress' /></td></tr>"+\
       "<tr><td>Telefon: </td><td><input type='text' name='telefon' /></td></tr>"+\
       "<tr><td>E-mail: </td><td><input type='text' name='email' /></td></tr>"+\
       "<tr><td></td><td><input type='submit' value='Lisa' /></td></tr></table></form>"+self.fle_html_footer(self, REQUEST)
     return t

   def lisamisLeht(self, REQUEST, eesnimi, perenimi, sugu, synnip2ev, aadress, telefon, email):
     "Sõbra lisamine"
     r=IsikuAndmed(eesnimi, perenimi, sugu, synnip2ev, aadress, telefon, email)
     self.loendur=self.loendur+1
     tunnus="sober"+str(self.loendur)
     r.id=tunnus
     self._setObject(tunnus, r)
     REQUEST.RESPONSE.redirect('index_html')

   def kustutamisLeht(self, REQUEST, id):
     "'Sõbra' kustutamine"
     self._delObject(id)
     REQUEST.RESPONSE.redirect('index_html')
     
Globals.InitializeClass(SobraList)