[google-appengine] Re: ProtocolBufferEncodeError: Required field: multiple not set

2009-05-10 Thread ryan

thanks! we also discussed this in an earlier thread:
http://groups.google.com/group/google-appengine/browse_thread/thread/8e9267e3c9346317#3f502c213c0a1ba6
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: ProtocolBufferEncodeError: Required field: multiple not set

2009-05-10 Thread joshuacronemeyer

Hey thanks ryan.  I'm not sure why I didn't find that thread when i
looked.  Ah well.  Thanks for posting the link to the earlier
discussion.

On May 11, 12:18 am, ryan  wrote:
> thanks! we also discussed this in an earlier 
> thread:http://groups.google.com/group/google-appengine/browse_thread/thread/...
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: ProtocolBufferEncodeError: Required field: multiple not set

2009-05-12 Thread Liz

Thanks for the solution.  Saved me a lot of time!

On May 11, 12:52 am, joshuacronemeyer 
wrote:
> I recently noticed that the 'full text search' feature of my app was
> throwing a stacktrace like this:
>
> Traceback (most recent call last):
>   File "/base/python_lib/versions/1/google/appengine/ext/webapp/
> __init__.py", line 503, in __call__
>     handler.post(*groups)
>   File "/base/data/home/apps/shell-sink/2.331785781902411868/
> shellsink.py", line 191, in post
>     commands = full_text_search(sysadmin, query, paging_helper.page)
>   File "/base/data/home/apps/shell-sink/2.331785781902411868/
> command.py", line 55, in full_text_search
>     return query.fetch(Command.COMMANDS_PER_PAGE, (page - 1) *
> Command.COMMANDS_PER_PAGE)
>   File "/base/python_lib/versions/1/google/appengine/ext/db/
> __init__.py", line 1426, in fetch
>     raw = self._get_query().Get(limit, offset)
>   File "/base/python_lib/versions/1/google/appengine/api/
> datastore.py", line 964, in Get
>     return self._Run(limit, offset)._Next(limit)
>   File "/base/python_lib/versions/1/google/appengine/api/
> datastore.py", line 905, in _Run
>     apiproxy_stub_map.MakeSyncCall('datastore_v3', 'RunQuery', pb,
> result)
>   File "/base/python_lib/versions/1/google/appengine/api/
> apiproxy_stub_map.py", line 68, in MakeSyncCall
>     apiproxy.MakeSyncCall(service, call, request, response)
>   File "/base/python_lib/versions/1/google/appengine/api/
> apiproxy_stub_map.py", line 240, in MakeSyncCall
>     stub.MakeSyncCall(service, call, request, response)
>   File "/base/python_lib/versions/1/google/appengine/runtime/
> apiproxy.py", line 181, in MakeSyncCall
>     rpc.MakeCall(package, call, request, response)
>   File "/base/python_lib/versions/1/google/appengine/api/
> apiproxy_rpc.py", line 92, in MakeCall
>     self._MakeCallImpl()
>   File "/base/python_lib/versions/1/google/appengine/runtime/
> apiproxy.py", line 124, in _MakeCallImpl
>     self.request.Output(e)
>   File "/base/python_lib/versions/1/google/net/proto/
> ProtocolBuffer.py", line 162, in Output
>     raise ProtocolBufferEncodeError, '\n\t'.join(dbg)
> ProtocolBufferEncodeError: Required field: multiple not set.
>
> I am using a gently modified version of SearchableModel in my app so I
> immediately suspected some change in the db.Model super class.  It
> looks like the following line was added to the _ToPb method of
> SearchableQuery: prop.set_multiple(len(keywords) > 1)
>
> I applied the following patch to my custom SearchableModel and it
> works fine again.
>
> 232a263>         prop.set_multiple(len(keywords) > 1)
> 237a269,286
> > class SearchableMultiQuery(datastore.MultiQuery):
> >   """A multiquery that supports Search() by searching subqueries."""
>
> >   def Search(self, *args, **kwargs):
> >     """Add a search query, by trying to add it to all subqueries.
>
> >     Args:
> >       args: Passed to Search on each subquery.
> >       kwargs: Passed to Search on each subquery.
>
> >     Returns:
> >       self for consistency with SearchableQuery.
> >     """
> >     for q in self:
> >       q.Search(*args, **kwargs)
> >     return self
>
> 264c312,314
> <       query = db.Query._get_query(self,
> _query_class=SearchableQuery)
> ---
>
> >       query = db.Query._get_query(self,
> >                                   _query_class=SearchableQuery,
> >                                   _multi_query_class=SearchableMultiQuery)
>
> Thought I would post just in case anyone else runs into it.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---