Hi,
My app goes forward, I have plaisure to develop with web2py.
But sometimes I don't find myself the solution for very specific search.
My app works well now, I can fill a request, add/remove parts, add/remove
attached, calculate price, send this request to collect signatures ....
Now I try to display in the first "index" page (a SQLFORM.grid), only the
requests that interest the user who is at the keybord (for the guitar it's
someone else).
The criteria are :
* only the requests that are not closed (and another page or another
filter to display old closed requests)
* only the requests that were written by this user
* OR the requests that this user HAS already signed OR those that this
user HAS TO sign OR those that this user WILL HAVE to sign.
A request (table = "Demande") has to be signed by many persons and managers
(not always the same) => table = "Workflow" (shortcut TDW).
In the first version of my app, each user see all the requests (not
closed), and the SQLFORM.grid works well.
form = SQLFORM.grid((dbW.Demande.Statut!='Close'), ...)
In the second version, the user can see his own requests (that he has
created) AND also those he HAS TO sign.
form = SQLFORM.grid((dbW.Demande.Statut!='Close') &
((dbW.Demande.CreatedBy==session.CurrentUser)
|(dbW.Demande.NextSign==session.CurrentUser)),
But now I want to show also the requests that he HAS already signed, OR
requests that he WILL HAVE to sign.
FIRST TRY :
form = SQLFORM.grid((dbW.Demande.Statut!='Close') &
((dbW.Demande.CreatedBy==session.CurrentUser)
|(dbW.Demande.NumDA in (select NumDA from TDW
where Responsable==session.CurrentUser)),
I already knew that this syntax doesn't work.
SECOND TRY :
liste_DA_filtre = []
for DA in dbW(dbW.TDW.Responsable==session.CurrentUser).select(dbW.TDW.
NumDA):
liste_DA_filtre.append(DA.NumDA)
form = SQLFORM.grid((dbW.Demande.Statut!='Close') &
((dbW.Demande.CreatedBy==session.CurrentUser)
|(dbW.Demande.NumDA in liste_DA_filtre)),
Is there any way to do a "in()" ?
THIRD TRY :
liste_DA_filtre = []
for DA in dbW(dbW.TDW.Responsable==session.CurrentUser).select(dbW.TDW.
NumDA):
liste_DA_filtre.append(DA.NumDA)
selection_DA = dbW(dbW.WFDA_DemAchat).select().find(
lambda row: row.Statut!='Close' and (row.CreatedBy==session.
CurrentUser or row.NumDA in liste_DA_filtre))
form = SQLFORM.grid((selection_DA, ...)
I know that this syntax is not correct : SQLFORM.gris needs a request, not
a set of data.
But I wrote this only to check the data that are filtered... and this is
exactly the rows I'm looking for.
--
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.