"""This is the baseclass controller."""
# Created: Thu May 27 07:55:56 PDT 2004
# Author: Shannon -jj Behrens
# Email: jjinux@users.sourceforge.net
#
# Copyright (c) Shannon -jj Behrens. All rights reserved.
from aquarium.util.ActionResults import ActionResults
from aquarium.util.FormValid import Form,Field
from Controller import Controller
class BaseController(Controller):
def __call__(self, callNext, *args, **kargs):
"""Save a reference to myself in ctx.controller."""
self._ctx.controller = self
callNext(*args, **kargs)
def doMessageAddAction(self):
"""Add a new message.
Use form fields with names corresponding to the names of the fields in
the Message table. Each of these form fields is required, except the
parentMessage field which defaults to 0. Just to be nice, if
everything succeeds, save the name and email in the session. This
action is present in this baseclass because it is used by both
message_list and message.
I'm putting this action in the super class because both subclasses use
it.
"""
ctx = self._ctx
(values, errors) = self.createMessageAddValidator()(ctx.form)
if errors:
ctx.actionResults = ActionResults("The message was not added.",
errors=errors)
return
ctx.dba.Message.insert(values["subject"], values["name"],
values["email"], values["parentMessage"],
values["body"])
for i in ["name", "email"]:
ctx.session[i] = values[i]
ctx.actionResults = "Your message has been posted."
ctx.iLib.forward("message_list")
def createMessageAddValidator(self):
"""Return the validator for this form."""
return Form([
Field("parentMessage",
"parentMessage parameter incorrectly defined.",
cast=int, default=0),
Field("subject", "You must specify a subject."),
Field("name", "You must state your name."),
Field("email", "You must provide an email address."),
Field("body", "You must provide a body for the email message."),
])
|