def createSessionObject(self, request): """Create or update Session object, returning SessionForm/request.""" # check if user is logged in user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException('Authorization required') user_id = getUserId(user) # get conference object using websafeConferenceKey conf = ndb.Key(urlsafe=request.websafeConferenceKey).get() if not conf: raise endpoints.NotFoundException( 'No conference found with key: %s' % request.websafeConferenceKey ) # check that user is owner of conference if user_id != conf.organizerUserId: raise endpoints.ForbiddenException( 'Only the owner can update the conference.') # convert date string to date object date_convert = request.date if date_convert: date_convert = datetime.strptime(date_convert[:10], "%Y-%m-%d").date() # saving variables in the request to Session() sess = Session() sess.name = request.name sess.highlights = request.highlights sess.speaker = request.speaker sess.duration = request.duration sess.typeOfSession = request.typeOfSession sess.date = date_convert #sess.websafeConferenceKey = request.websafeConferenceKey #sess.conferenceName = conf.name sess.startTime = request.startTime sess.endTime = request.endTime # getting sessionkey with conference as parent c_key = ndb.Key(urlsafe=request.websafeConferenceKey) s_id = Session.allocate_ids(size=1, parent=c_key)[0] s_key = ndb.Key(Session, s_id, parent=c_key) sess.key = s_key sess.websafeKey = s_key.urlsafe() sess.put() # calling cacheFeaturedSpeaker using taskqueue taskqueue.add( params={ 'speaker': request.speaker, 'websafeConferenceKey': request.websafeConferenceKey }, url='/tasks/set_featured_speaker' ) return self._copySessionToForm(sess)