row.update_record was indeed what I was looking for, thank you I got it working now, probably best if I deal with the manipulation in the controller anyway.
On 28 aug, 15:37, Alan Etkin <spame...@gmail.com> wrote: > I would make the db query in the controller file and pass the Rows > object to the view to present the data. ¿Is'n that more MVC-ish? Even > the function could be defined in the controller and passed in the > response. For the Shouts field of the record i would check the model > for conflicts/errors. > > A way of changing the Shout str should be: > row.update_record(Shout = [transformed shout]) > > On 28 ago, 09:17, Yuushi <yuushiceleri...@gmail.com> wrote: > > > > > > > > > This has kept me up quite a few hours last night, this morning I woke > > up and I still have no clue how to approach this. I am still pretty > > new to Python & web2py but I can't believe a simple string function > > gives me so much grief. > > > My goal: > > I am making a simple shoutbox for practice purposes, it uses a > > database with the colloms: Shout,created_on,created_by > > I have a database result set in the controller of the shoutbox > > ( shouts = db(db.shouts).select(orderby=~db.shouts.created_on) ). > > Now the problem I run into is when I want to implement a simple emote > > system. Basicly I want to perform a simple string replace on > > shouts.Shout. > > > Because I have no idea how to manipulate the database result set > > (which I also would like to know) I figured I would deal with it in > > the view, not really ideal I would guess. > > > So I have a function in a module: > > > def ParseEmote(text): > > text = text.replace("test","bla") > > return text > > > in the view I have: > > {{for shout in shouts:}} > > {{result = functions.timesince(shout.created_on)}} > > <div style="font-size:12px;"> > > <span > > style="color:#0F0">{{=db.auth_user[shout.created_by].first_name}}</ > > span> > > <span style="color:#999;">says ({{=result}} ago): </ > > span> > > </div> > > {{=functions.ParseEmote(shout.Shout)}} > > {{pass}} > > > The error I get is: > > Traceback (most recent call last): > > File "gluon/restricted.py", line 192, in restricted > > File "G:\web2py\applications\the_old_republic\views\default/ > > shoutbox.html", line 15, in <module> > > File "applications/The_Old_Republic/controllers/functions.py", line > > 7, in ParseEmote > > AttributeError: 'NoneType' object has no attribute 'replace' > > > Now my question is: > > 1. How can I modify my ParseEmote function to deal with the > > shout.Shout variable which seems to be a NoneType which I dont really > > get. Its not really the best solution but I might come in handy later. > > 2. Is there a way I can get a similar result by just using just the > > controller? something like (but then working): > > > shouts = db(db.shouts).select(orderby=~db.shouts.created_on) > > for s in shouts: > > s.Shout.replace(":emote1:","somehtml") > > pass > > > Regards, > > Yuushi