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

Reply via email to