google app engine - Attribute Error: '_BaseValue' object has no attribute 'value' -
i'm having strange issue in google app engine sdk v1.8.2.1. sdk seems have issue way retrieve property value. entity so:
class userdb(endpointsmodel): userid = ndb.stringproperty(required=true, indexed=true) name = ndb.stringproperty(required=true, indexed=true) update = ndb.datetimeproperty(indexed=true) orgs = ndb.structuredproperty(providers, repeated=true, indexed=true) system = ndb.structuredproperty(system, repeated=true, indexed=true) comp = ndb.structuredproperty(comp, repeated=true, indexed=true)
from datastore viewer:
orgs.value (list) [u'comp', u'system']
my cron job code:
class cronrefresh(webapp2.requesthandler): def get(self): user in userdb.query().fetch(): org in user.orgs: provider.additems(user.key, org.value)
when print org.value console log there no problem when try pass function throws following error.
info 2013-07-29 17:28:30,980 module.py:595] default: "post / http/1.1" 200 594 error 2013-07-29 21:28:37,374 webapp2.py:1552] '_basevalue' object has no attribute 'value' traceback (most recent call last): file "c:\program files (x86)\google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__ rv = self.handle_exception(request, response, e) file "c:\program files (x86)\google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__ rv = self.router.dispatch(request, response) file "c:\program files (x86)\google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher return route.handler_adapter(request, response) file "c:\program files (x86)\google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__ return handler.dispatch() file "c:\program files (x86)\google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch return self.handle_exception(e, self.app.debug) file "c:\program files (x86)\google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch return method(*args, **kwargs) file "e:\main.py", line 74, in provider.additems(user.key, org.value) attributeerror: '_basevalue' object has no attribute 'value' info 2013-07-29 17:28:37,382 module.py:595] default: "get /cron/refresh http/1.1" 500 114 info 2013-07-29 17:28:49,043 module.py:595] default: "get /cron/refresh http/1.1" 200 -
but if run cron job twice go through fine. see i'm doing wrong? expected behavior?
update: provider import wrote. appreciated.
update2: added additems function. have confirmed apple_list proper list of dictionaries.
def additems(key, x): user = key.get() if x == 'apple': def add(item): newobject = apple(name=item['name'], status=item['status'], obtained=item['obtained']) objectlist = user.query().fetch()[0].apple object in objectlist: if (object.name == item['name'] , (object.status != item['status'] or object.obtained != item['obtained'])): logging.debug("if #1 happened") continue elif (object.name == item['name'] , object.status == item['status'] , object.obtained == item['obtained']): logging.debug("if #2 happened") continue else: logging.debug("else happened") continue if not user.query().fetch()[0].apple: item in apple_list: user.apple.append(apple(name=item['name'], status=item['status'], obtained=item['obtained'])) user.put() else: item in apple_list: add(item)
apparently, user.orgs
has been put()
database. "mutates" _basevalue
, described here: list items repeated stringproperty mutated _basevalue on put.
Comments
Post a Comment