Hello everyone.

I am working with a controller for ratings on an item. The item
details come from a legacy database, and the ratings are stored in a
separate database. In the ratings database, alongside the ordinal
ratings I store the identifier of the item it refers to. I am using
the CRUD module to automagically generate the form I require. However,
I would like one particular field, the 'item_id' field, to be pre-
filled, invisible to and non-editable by the user. The item_id is the
first and only parameter to the ratings controller.

My current approach is to set the Field properties readable and
writable to False, and then modifying db.ratings.item_id.default with
each invocation to the controller. Is this a safe practice, or is it
possible that in a use case with two concurrent users, one user may
see the changes caused by the other user?

My next question is, is there a better way to do this? It almost feels
like there should be a hidden widget of some sort, but how would I
pass it the required value, since it varies according to the
parameters given to the controller? I am very new to this, so I may
have made some simple beginner mistakes and am very open to any design
suggestions.

I include a sketch of my controller below for reference.

Thanks in advance.

Cheers
Marco

@auth.requires_login()
def rate():
  item_id = request.args(0)
  target = db.item[item_id]

  # target not valid, redirect to summary
  if not target: redirect(URL(r=request, f='summary'))

  ratings = db.ratings
  ratings.item_id.default = target_id
  prev = db((ratings.annotator_id==auth.user.id) &
(ratings.item_id==item_id)).select()
  if len(prev) == 0:
    form = crud.create(ratings, next=URL(r=request,f='summary'))
  else:
    form = crud.update(uq, prev[0], next=URL(r=request,f='summary'),
deletable=False)

  return dict(form=form, target=target)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to