#!/usr/bin/python
# -*- coding: utf-8 -*-
import codecs, re, web, sys
web.config.debug = False

title = 'Kontakt'

basename = '/cgi-bin/'
urls = (
  '/(.*)', 'Addr',
)
app = web.application(urls, globals())
render = web.template.render('templates/')
#web.config.smtp_server = 'ruessel.petranet'

class DummyValidator(web.form.Validator):
  def __init__(self):
    self.msg = ''
  def valid(self, value):
    return True

class EmailValidator(web.form.Validator):
  def __init__(self):
    self.msg = ''
  def valid(self, value):
    value = value.strip()
    if value == '':
      self.msg = 'Erforderlich'
      return False
    if re.match(r'([a-zA-Z0-9]+)((\.|-)[a-zA-Z0-9]+)*@([a-zA-Z0-9]+)((\.|-)[a-zA-Z0-9]+)+', value):
      return True
    else:
      self.msg = 'Mailadresse falsch'
      return False

AddrForm = web.form.Form(
  web.form.Textbox('name', web.form.regexp(r'\s*[^\s]+\s*', 'Erforderlich'),
    description='Name:', size='30'),
  web.form.Textbox('firstname', DummyValidator(),
    description='Vorname:'),
  web.form.Textbox('email', EmailValidator(),
    description='E-Mail:', size='30'),
  web.form.Textbox('phone',
    description='Telefon:', size='30'),
  web.form.Textarea('comment', DummyValidator(),
    description='Anmerkungen:',
    rows='5', cols='60'),
)

class Addr(object):
  def GET(self, params):
    f = AddrForm()
    contact = render.contact()
    return render.mailform(f, contact)
  def POST(self, params):
    f = AddrForm()
    contact = render.contact()
    if f.validates():
      msg = []
      for x in ('name', 'firstname', 'email', 'phone', 'comment'):
	msg.append('%s:%s' % (x, f.d[x]))
      web.sendmail(f.d['email'], 'ppv@ruessel.in-chemnitz.de', title,
        "\n".join(msg))
      return render.mailsuccess(f, contact)
    else:
      return render.mailform(f, contact)

if __name__ == "__main__":
  web.internalerror = web.debugerror
  app.run()
