The following code gives me error if not explicitly use db.commit ()
can someone explain why I now need to use db.commit () to something so simple?

models/home.py

##############
id_user = (auth.user and auth.user.id) or None

db.define_table('home',
    Field('titulo', 'string', length=64, default='titulo de prueba'),
    Field('texto', 'text', length=5000, default='texto de prueba'),
    Field('user', db.auth_user, default=id_user, writable=False,
readable=False),

    #auditoria
    Field('ip', 'string', length=64,  default=request.client,
update=request.client, writable=False, readable=False),
    Field('fecha', 'date',default=request.now, update=request.now,
writable=False, readable=False),
    Field('user_update', db.auth_user, default=id_user,
update=id_user, writable=False, readable=False),
)
############


controllers/default.py
##############
def index():

    if auth.is_logged_in() :
        home = db.home(user=id_user)
        if home is None: redirect(URL('update'))

    return dict()


@auth.requires_login()
def update():

    home = db.home(user=id_user)

    if home is None:
        home_id = db.home.insert(user=id_user)
    else:
        home_id = home.id

#    db.commit()
    form = crud.update(db.home, home_id, deletable=False, next=URL('update'))

    return dict(home=home, form=form)
#############


view/default/update.html

{{extend 'layout.html'}}

    <div>
        <span id="span_home_titulo">{{ =home.titulo }}</span>
    </div>
    <div id="form_home" >
        {{=form.custom.begin}}
            {{ =form.custom.widget.titulo }}
            {{ =form.custom.widget.texto }}
            <input type="submit" value="Save" />
        {{=form.custom.end}}
    </div>

###############


Error
#########

web2py™ (1, 99, 7, datetime.datetime(2012, 3, 4, 22, 12, 8), 'stable')
Python  Python 2.6.6: /usr/bin/python
TRACEBACK

Traceback (most recent call last):
  File "/home/diazluis2007/web2py/gluon/restricted.py", line 205, in restricted
    exec ccode in environment
  File "/home/diazluis2007/web2py/applications/about/views/default/update.html",
line 80, in <module>
AttributeError: 'NoneType' object has no attribute 'titulo'



Díaz Luis
Analista Programador Facultad de Odontología UC
http://www.about.me/diazluis
User Linux 532223

Reply via email to