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