
from twisted.application import service
from twisted.application import internet

from nevow import appserver
from nevow import renderer
from nevow import tags
from nevow import formless
from nevow import freeform


class IMyForm(formless.TypedInterface):
    foo = formless.Integer()

    def bar(self, baz=formless.Integer()):
        pass
    bar = formless.autocallable(bar)


class Implementation(object):
    __implements__ = IMyForm,

    foo = 5

    def bar(self, baz):
        print "baz!"


class FormPage(renderer.Renderer):
    document = tags.html[
    tags.body[
        "Hello! Here is a form:",
        freeform.configure
    ]
]


application = service.Application("formpost2")
internet.TCPServer(
    8080, 
    appserver.NevowSite(
        FormPage(Implementation())
    )
).setServiceParent(application)
