r = [request.vars.mssage] should be [request.vars.replies]
On Fri, 24 Aug 2018 at 19:27, <[email protected]> wrote:
> We are a team of newbies in web2py trying out something new. If we insert
> into a database an item, and let modules access the new values it does not
> work properly as expected.
> The code below:
> code = ''
>
> form = FORM(INPUT(_name='message'), INPUT(_type='submit'))
> if request.vars:
> r = [request.vars.message]
> db.post.insert(replies=r[0])# successful insert
> row = db(db.post.author== auth.user.id).select(db.post.id, db.post.
> replies, orderby=~db.post.id, limitby=(0,1)).first()#should get the last
> row
> code = row.replies if row else None
> return dict(value=code)
>
> This code in the modules folder is part of other functions to access the
> latest row value for processing:
> def Search_reply():
> db = current.db
> auth = Auth(db, hmac_key=Auth.get_or_create_key())
> auth.define_tables()
> name = [r.replies.translate(None, '~!@#$%^&*()_+}{|":?><>-=][\';/.,')
> for r in db(db.post.author == auth.user.id).select(db.post.ALL)][-1]
> return name
> ##name will be used by other functions and a reply returned to view
>
> Problem
>
> 1. Search_reply does not always gets me the last inserted item.
> 2. I have to refresh the page for the function Search_reply to
> retrieve the latest item
>
> Tried options
>
> 1. We tried using a different controller that had Search_replies and
> called the function in view, also tried using the function from models with
> the same result.
> 2. We tried using db.commit() after db.post.insert() but with the same
> results. One thing of note is that after the insert to db.post from web2py,
> if running a python function that accesses the database on the python idle
> interpreter, the new inserted message from db.post.replies is easily read
> without having refreshed the web2py view page. Again, '
> code.replies if row else None
> gets the last inserted item BEFORE page refresh.
>
> Is there a way to have modules access the new inserted message within
> web2py without page refresh?
> Is there a way of dal refresh (not page refresh) after inserting a new
> item?
> why doesn't db.commit(), on controller work to interrupt the workflow,
> have a message inserted then read the latest item?
> We are thinking of something like this in the same workflow:
> ..workflow starts with user input
> ..controller functions insert the input to db
> ..controller imported functions read new inserted message for processing
> ..modules process message
> ..module through controller returns reply to view
> ..workflow ends
>
> cc
>
> Dream team
>
> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.