On Oct 11, 6:45 am, Jorge Godoy <[EMAIL PROTECTED]> wrote:
> On Thursday 11 October 2007 05:37:41 Diez B. Roggisch wrote:
>
>
>
> > if not typeClauses:
> > typeClauses.append(NOT(SQLTrueClause))
> > if filterClause:
> > filterClause = [AND(*(filterClause + [OR(*typeClauses)]))]
> > else:
> > filterClause = OR(*typeClauses)
> > else:
> > # we have no filtering, so remove the features from
> > # this query.
> > typeClause = AND(m.BaseBookable.q.childName != 'Feature')
> > if filterClause:
> > filterClause = [AND(filterClause, typeClause)]
> > else:
> > filterClause = [typeClause]
>
> > if not self['show_deleted']:
> > filterClause = AND(filterClause, m.BaseBookable.q.deleted ==
> > False)
> > clauses = [name_join]
> > if filterClause:
> > clauses.append(filterClause)
> > clause = AND(*clauses)
>
> > self._the_result = m.BaseBookable.select(clause,
> > join=joins,
> > orderBy=orderBy)
>
> > Obviously, this doesn't make much sense to you object-model-wise - but you
> > should get an idea how to work with SO.
>
> SQLObject is "lazy" to evaluate results, so you might benefit from a more
> straighforward approach:
>
> results = model.Books.select()
>
> if only_read:
> results = results.filter(onlyRead = True)
> if not_borrowed:
> results = results.filter(notBorrowed = True)
>
> return (books=results)
>
> This will prepare to retrieve all books. If any of the two filters is true,
> then it will be applied to the query (as you can see, both can be true at
> once).
>
> The query will be performed only when you iterate over the results or when you
> ask to make it a list, for example.
>
> I consider this a much cleaner approach to build "AND" filters. You can
> expand this into "OR" as well.
>
> --
> Jrge Godoy <[EMAIL PROTECTED]>
Gold! Thanks Dez and Jorge. I'll work on implementing this later on
tonight and see how it goes. Appreciate the ideas from both of you.
Chris
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---