tags:

views:

24

answers:

2

Trying to figure out the best way to do this:

Should I do something like:

def index(self):
    if request.POST:
        u = User(id)
        u.setCookie() #All session logic in def setCookie()

Or set the cookie in the controller like:

def index(self):
    if request.POST:
        u = User(id)
        response.set_cookie('session_key', u.session_key, max_age=3600)

Why do it one way or the other? Thank you.

+2  A: 

I think traditionally you would want the model to be concerned with data persistence and validation but not http related stuff like cookies. Which leaves the controller to be the more appropriate place in my opinion.

A reason(not the only one) I can think of for this is that it might be required someday that you need to run applications against your model logic that have nothing to do with web stuff.

given your implementation above I suspect the user object would have to get access to the response from the stacked proxy/globals stuff in pylons(could be wrong). So, if you ever needed to use the same model classes in a program that consumes messages from a message queue for example, the pylons machinery that makes the response available would not be available. This could be a problem that is easily avoided.

Tom Willis
A: 

I share also Tom's opinion, you should try to avoid to much dependencies in different classes. So the controller should to all the http (request, response) related stuff. Also for testing it is much easier.

TooAngel