Many thanks for reply however this doesn't seem to be a complete fix - code
is failing on the 'in' piece of this filter function and I am not clear
how this relates to the belongs code up above.
Regards
Russ
GAE_FILTER_OPTIONS = {
'=': lambda q, t, p, v: q.filter(getattr(t,p) == v),
'>': lambda q, t, p, v: q.filter(getattr(t,p) > v),
'<': lambda q, t, p, v: q.filter(getattr(t,p) < v),
'<=': lambda q, t, p, v: q.filter(getattr(t,p) <= v),
'>=': lambda q, t, p, v: q.filter(getattr(t,p) >= v),
'!=': lambda q, t, p, v: q.filter(getattr(t,p) != v),
'in': lambda q, t, p, v: q.filter(getattr(t,p).IN(v)),
}
def filter(self, query, tableobj, prop, op, value):
return self.GAE_FILTER_OPTIONS[op](query, tableobj, prop, value)
On Mon, Sep 1, 2014 at 12:32 PM, Quint <[email protected]> wrote:
> Ok,
>
> I did not test this but from what can see from here the line below needs
> to be changed. (This line does not yet consider NDB.)
>
> def BELONGS(self, first, second=None):
> if not isinstance(second, (list, tuple, set)):
> raise SyntaxError("Not supported")
> if not self.use_ndb:
> if isinstance(second, set):
> second = list(second)
> if first.type == 'id':
> second = [Key.from_path(first._tablename, int(i)) for i in second]
> second = [self.keyfunc(first._tablename, int(i)) for i in second]
>
> return [GAEF(first.name, 'in', second, lambda a, b:a in b)]
>
> Quint
>
>
> On Saturday, August 30, 2014 1:37:07 AM UTC+2, Russ King wrote:
>
>>
>> I am struggling to use belongs on GAE+NDB it appears that:
>>
>> quests =
>> db(db.question.level.belongs([1])).select(db.question.id,db.question.level)
>> is valid however
>>
>> quests = db(db.question.id.belongs([1])).select(db.question.id,
>> db.question.level) generates an error along the lines of
>>
>> <type 'exceptions.AttributeError'> type object 'question' has no
>> attribute '__key__'
>>
>> is this because the key field is different from the other fields and is
>> there some sort of workaround to retrieve a set of records from a list of
>> keys or am I missing something
>>
>> Regards
>> Russ
>>
> --
> 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 a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/_Od_UkKW05w/unsubscribe.
> To unsubscribe from this group and all its topics, 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.