def _getProfileFromUser(self): """Return user Profile from datastore, creating new one if non-existent.""" user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException('Authorization required') # TODO 1 # step 1. copy utils.py from additions folder to this folder # and import getUserId from it # step 2. get user id by calling getUserId(user) # step 3. create a new key of kind Profile from the id user_id = getUserId(user) p_key = ndb.key(Profile, user_id) # TODO 3 # get the entity from datastore by using get() on the key profile = p_key.get() if not profile: profile = Profile( key=p_key, # TODO 1 step 4. replace with the key from step 3 displayName=user.nickname(), mainEmail=user.email(), teeShirtSize=str(TeeShirtSize.NOT_SPECIFIED), ) # TODO 2 # save the profile to datastore profile.put() return profile # return Profile
def put(self, id=None): if id: try: slip = ndb.key(urlsafe=id).get() except Exception: slip = None if Slip is none: self.response.set_status(400) else: put_data = json.loads(self.request.body) if 'number' in put_data: new_slip_numcheck = put_data['number'] numcheck = Slip.query(Slip.number == new_slip_numcheck).get() if numcheck is None: slip_data.number = put_data['number'] slip_data.put() if 'current_boat' in put_data: if put_data['current_boat'] is None and slip_data.current_boat is not None: try: boat = ndb.Key(urlsafe=(slip_data.current_boat)).get() except Exception: boat = None if boat is None: self.response.set_status(400) else: boat.at_sea = True boat.put() slip_data.current_boat = put_data['current_boat'] slip_data.arrival_date = None slip_data.put() if put_data['current_boat'] is not None and slip_data.current_boat is None: try: boat = ndb.Key(urlsafe=(put_data['current_boat'])).get() except Exception: boat = None if boat is None: self.response.set_status(400) else: boat.at_sea = False boat.put() slip_data.current_boat = put_data['current_boat'] slip_data.arrival_date = datetime.strftime(datetime.utcnow().date(), "%d/%m/%y") slip_data.put() if put_data['current_boat'] is not None and slip_data.current_boat is not None: self.response.set_status(403) # already boat inside, cant put another. slip_dict = slip_data.to_dict() slip_dict['self'] = '/slip/' + slip_data.id self.response.write(json.dumps(slip_dict)) else: self.response.set_status(400)
def getConferenceSessions(self, request): """Retrieve sessions in a conference""" # get key c_key = ndb.Key(urlsafe=request.websafeConferenceKey).get() # check that it's legit if not c_key: raise endpoints.NotFoundException("Hold up! No conference with key %s" % request.websafeConferenceKey) # get specific conference's sessions sessionsList = session.Query(ancestor=ndb.key(Conference, c_key.key.id())) # show sessions return SessionForms(items=[self._copySessionToForm(session) for session in sessions])
def edit_job(job_id): job = JobModel.get_by_id(int(job_id)) if not job: flash(_('no such job'), 'error') return redirect(url_for('exhibitor.jobs')) form = JobForm(request.form, obj=job) if request.method == 'POST' and form.validate(): try: job.title = form.title.data job.type = form.type.data job.enterprise = ndb.key(form.enterprise.data) job.content = form.content.data job.put() flash('job modified successfully!', 'success') except CapabilityDisabledError: flash('fail to modify job', 'error') return render_template('exhibitors/edit_job.html', form=form, job=job)
def book_verse_key(verse_key=DEFAULT_BOOK_VERSE_KEY): return ndb.key('Verse', verse_key)
def pensieve_key(name=None): """Constructs a Datastore key for a Guestbook entity with guestbook_name.""" if name is not None: return ndb.key('Pensieve', name); return ndb.Key('Pensieve', DEFAULT_NAME)
""" Databstore models. """ from google.appengine.ext import ndb # Parent key for all models except FilmTimes parent_key = ndb.key('parent') class Cinemas(ndb.Model): """ Cineworld cinemas. """ api_id = ndb.IntegerProperty() name = ndb.StringProperty() address = ndb.StringProperty() url = ndb.StringProperty() @classmethod def get_by_api_id(self, id): """Returns a single result or None.""" return Films.query(api_id=id).get() @classmethod def get_film_times(self): """Returns a list of FilmTime objects.""" return FilmTimes.query(ancestor=self).fetch(1000) @classmethod