def getFeaturedSpeaker(self, request): """Returns the sessions of the featured speaker""" data = memcache.get("featured_speaker") from pprint import pprint pprint(data) sessions = [] sessionNames = [] speaker = None if data and data.has_key("speaker") and data.has_key("sessionNames"): speaker = data["speaker"] sessionNames = data["sessionNames"] else: upcoming_session = ( Session.query(Session.date >= datetime.now()).order(Session.date, Session.startTime).get() ) if upcoming_session: speaker = upcoming_session.speaker sessions = Session.query(Session.speaker == speaker) sessionNames = [session.name for session in sessions] # create speaker form sf = SpeakerForm() for field in sf.all_fields(): if field.name == "sessionNames": setattr(sf, field.name, sessionNames) elif field.name == "speaker": setattr(sf, field.name, speaker) sf.check_initialized() return sf
def getFeaturedSpeaker(self,request): """ Returns a featured speaker and his/her sessions """ sessions = [] sessionNames = [] speaker = None # look for data in memcache memcache_data = memcache.get(MEMCACHE_SPEAKER_KEY) if memcache_data: speaker = memcache_data['speaker'] sessionNames = memcache_data['sessionNames'] else: speaker = sessionNames = None sf = SpeakerForm() for field in sf.all_fields(): if field.name == 'speaker': setattr(sf, field.name, speaker) elif field.name == 'sessionNames': setattr(sf, field.name, sessionNames) sf.check_initialized() return sf
def getFeaturedSpeaker(self, request): """ Returns a featured speaker and his/her sessions """ sessions = [] sessionNames = [] speaker = None # look for data in memcache memcache_data = memcache.get(MEMCACHE_SPEAKER_KEY) if memcache_data: speaker = memcache_data['speaker'] sessionNames = memcache_data['sessionNames'] else: speaker = sessionNames = None sf = SpeakerForm() for field in sf.all_fields(): if field.name == 'speaker': setattr(sf, field.name, speaker) elif field.name == 'sessionNames': setattr(sf, field.name, sessionNames) sf.check_initialized() return sf
def _copySpeakerToForm(self, speak): """Copy relevant fields from Speaker to SpeakerForm.""" sp = SpeakerForm() for field in sp.all_fields(): setattr(sp, field.name, getattr(speak, field.name)) sp.check_initialized() return sp
def getFeaturedSpeaker(self, request): """Returns the sessions of the featured speaker""" # attempt to get data from memcache data = memcache.get('featured_speaker') from pprint import pprint pprint(data) sessions = [] sessionNames = [] speaker = None if data and data.has_key('speaker') and data.has_key('sessionNames'): speaker = data['speaker'] sessionNames = data['sessionNames'] # if memcache fails or is empty, pull speaker from upcoming session else: upcoming_session = Session.query(Session.date >= datetime.now())\ .order(Session.date, Session.startTime).get() if upcoming_session: speaker = upcoming_session.speaker sessions = Session.query(Session.speaker == speaker) sessionNames = [session.name for session in sessions] # populate speaker form sf = SpeakerForm() for field in sf.all_fields(): if field.name == 'sessionNames': setattr(sf, field.name, sessionNames) elif field.name == 'speaker': setattr(sf, field.name, speaker) sf.check_initialized() return sf
def getFeaturedSpeaker(self, request): """Returns the sessions of the featured speaker""" # try to get the speaker related data from memcache that was storied earlier data = memcache.get('featured_speaker') from pprint import pprint pprint(data) sessionNames = [] speaker = None if data and data.has_key('speaker') and data.has_key('sessionNames'): speaker = data['speaker'] sessionNames = data['sessionNames'] # if the memcache fails or is found to be empty, then display a message accordingly else: raise endpoints.NotFoundException( 'Failed to retrieve data related to the speaker.') # populate the speaker form appropriately in case the speaker data is sucessfully retrieved sf = SpeakerForm() for field in sf.all_fields(): if field.name == 'sessionNames': setattr(sf, field.name, sessionNames) elif field.name == 'speaker': setattr(sf, field.name, speaker) sf.check_initialized() return sf
def getFeaturedSpeaker(self, request): """Returns the sessions of the featured speaker""" # try to get data from memcache data = memcache.get(MEMCACHE_FEATURED_SPEAKER_KEY) sessions = [] sessionNames = [] speaker = None if data and data.has_key('speaker') and data.has_key('sessionNames'): speaker = data['speaker'] sessionNames = data['sessionNames'] # if data is not on memcache, get speaker from upcoming session else: nextSession = Session.query(Session.date >= datetime.now()).order(Session.date, Session.startTime).get() if nextSession: speaker = nextSession.speaker sessions = Session.query(Session.speaker == speaker) sessionNames = [session.name for session in sessions] # fill speaker form speaker_form = SpeakerForm() for field in speaker_form.all_fields(): if field.name == 'sessionNames': setattr(speaker_form, field.name, sessionNames) elif field.name == 'speaker': setattr(speaker_form, field.name, speaker) speaker_form.check_initialized() return speaker_form
def getFeaturedSpeaker(self, request): """Get featured speaker from memcache""" # verify user is authed user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException('Authorization required') # get featured speaker from memcache if it exists conf = memcache.get(request.websafeConferenceKey) if not conf: raise endpoints.NotFoundException( 'No conference memcache found with key: %s' % request.websafeConferenceKey) # iterate then return SpeakerForm speaker_form = SpeakerForm() for field in speaker_form.all_fields(): if field.name == 'sessionName': setattr(speaker_form, field.name, conf['sessionName']) elif field.name == 'displayName': setattr(speaker_form, field.name, conf['displayName']) speaker_form.check_initialized() return speaker_form
def _copySpeakerToForm(self, speaker): sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, str(getattr(speaker, field.name))) sf.check_initialized() return sf
def sample_form(request): if request.method == 'POST': sf = None instance_id = request.GET.get(u'speaker') if instance_id is not None: instance = get_object_or_404(Speaker, pk=instance_id) sf = SpeakerForm(request.POST, instance=instance) else: sf = SpeakerForm(request.POST) if sf.is_valid(): speaker = sf.save() return http.HttpResponseRedirect(reverse("sampleformok", args=[speaker.pk])) else: return render_to_response('test/form.html', {'form': sf}, context_instance=RequestContext(request)) elif request.method == 'GET': form = None instance_id = request.GET.get(u'speaker') if instance_id is not None: instance = get_object_or_404(Speaker, pk=instance_id) form = SpeakerForm(instance=instance) else: form = SpeakerForm(initial={u'languages': [1, 2], u'group': 1}) return render_to_response('test/form.html', {'form': form}, context_instance=RequestContext(request)) else: return http.HttpResponseNotAllowed(['GET', 'POST'])
def _copySpeakerToForm(self, spkr): """Copy relevant fields from Speaker to SpeakerForm.""" sf = SpeakerForm() setattr(sf, "name", getattr(spkr, "name")) setattr(sf, "websafeKey", spkr.key.urlsafe()) sf.check_initialized() return sf
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm.""" sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) sf.check_initialized() return sf
def _copySpeakerToForm(self, speaker): '''Copy relevant fields from Speaker to SpeakerForm''' speaker_form = SpeakerForm() for field in speaker_form.all_fields(): if hasattr(speaker, field.name): setattr(speaker_form, field.name, getattr(speaker, field.name)) speaker_form.check_initialized() return speaker_form
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Session to SessionForm.""" sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) sf.check_initialized() return sf
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm.""" # copy relevant fields from Speaker to SpeakerFrom spkr = SpeakerForm() for field in spkr.all_fields(): if hasattr(speaker, field.name): setattr(spkr, field.name, getattr(speaker, field.name)) spkr.check_initialized() return spkr
def _copySpeakerToForm(self, speaker): """Copy speaker to form""" sp = SpeakerForm() for field in sp.all_fields(): if hasattr(speaker, field.name): setattr(sp, field.name, getattr(speaker, field.name)) elif field.name == "websafeKey": setattr(sp, field.name, speaker.key.urlsafe()) sp.check_initialized() return sp
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm.""" form = SpeakerForm() if speaker is not None: setattr(form, 'websafeKey', speaker.key.urlsafe()) for field in form.all_fields(): if hasattr(speaker, field.name): setattr(form, field.name, getattr(speaker, field.name)) form.check_initialized() return form
def _copySpeakerToForm(self, speaker): sf = SpeakerForm() for field in sf.all_fields(): print "Field %s" % field.name if hasattr(speaker, field.name): setattr(sf, field.name, str(getattr(speaker, field.name))) elif field.name == 'websafeKey': setattr(sf, field.name, speaker.key.urlsafe()) sf.check_initialized() return sf
def _copySpeakerToForm(self, speaker): """Check for speaker info, return speakerForm with speaker information.""" sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) elif field.name == 'websafeKey': setattr(sf, field.name, speaker.key.urlsafe()) sf.check_initialized() return sf
def _copySpeakerToForm(self, speak): """Copy relevant fields from Speaker to SpeakerForm.""" sp = SpeakerForm() for field in sp.all_fields(): if hasattr(speak, field.name): setattr(sp, field.name, getattr(speak, field.name)) elif field.name == "speakerWebSafeKey": setattr(sp, field.name, speak.key.urlsafe()) sp.check_initialized() return sp
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm.""" sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) elif field.name == "websafeKey": setattr(sf, field.name, speaker.key.urlsafe()) sf.check_initialized() return sf
def _copySpeakerToForm(self, speaker): # Get empty SessionForm sf = SpeakerForm() # Copy fields from Session to SessionForm for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) sf.check_initialized() return sf
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm""" sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) elif field.name == "websafeKey": setattr(sf, field.name, speaker.key.urlsafe()) sf.check_initialized() return sf
def _copySpeakerToForm(self, speaker): sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): # convert Date to date string; just copy others setattr(sf, field.name, getattr(speaker, field.name)) elif field.name == "websafeKey": setattr(sf, field.name, speaker.key.urlsafe()) sf.check_initialized() return sf
def getFeaturedSpeaker(self, request): """Returns the sessions of the featured speaker""" # attempt to get data from memcache data = memcache.get(MEMCACHE_FEATURED_SPEAKER_KEY) # copy relevant fields to SpeakerForm sf = SpeakerForm() for field in sf.all_fields(): if data and data[field.name]: setattr(sf, field.name, str(data[field.name])) sf.check_initialized() return sf
def getFeaturedSpeaker(self, request): """Return all featured speakers from Memcache""" featuredSpeakers = memcache.get(MEMCACHE_FEATURED_SPEAKER_KEY) speakerForms = [] for speakerEmail in featuredSpeakers: speaker = SessionSpeaker.query(SessionSpeaker.email == speakerEmail).get() speakerForm = SpeakerForm() speakerForm.name = speaker.name speakerForm.email = speaker.email speakerForm.check_initialized() speakerForms.append(speakerForm) return SpeakerForms(items=speakerForms)
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm.""" # for all fields in SpeakerForm copy the analogous parameter in the # Speaker object to the SpeakerForm sf = SpeakerForm() for field in sf.all_fields(): if hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) elif field.name == "websafeKey": setattr(sf, field.name, speaker.key.urlsafe()) sf.check_initialized() return sf
def _copySpeakerToForm(self, speak): """Copy relevant fields from Speaker to SpeakerForm.""" # Initialze form, copy existing properties, validate required fields spf = SpeakerForm() for field in spf.all_fields(): if hasattr(speak, field.name): setattr(spf, field.name, getattr(speak, field.name)) elif field.name == "websafeKey": setattr(spf, field.name, speak.key.urlsafe()) elif field.name == "creatorUserId": setattr(spf, field.name, speak.key.parent().id()) spf.check_initialized() return spf
def toSpeakerForm(self, speaker, displayName=None, websafeSpeakerKey=None): """Copy relevant fields from Speaker to SpeakerForm.""" sp = SpeakerForm() for field in ("sessionKeysToSpeakAt", "mainEmail", "displayName", "websafeSpeakerKey"): if hasattr(speaker, field): setattr(sp, field, getattr(speaker, field)) elif field == "websafeSpeakerKey" and hasattr(speaker, "key"): setattr(sp, field, speaker.key.urlsafe()) if displayName: setattr(sp, "displayName", displayName) if websafeSpeakerKey: setattr(sp, "websafeSpeakerKey", websafeSpeakerKey) sp.check_initialized() return sp
def _copySpeakerToForm(self, speaker): """Copy data from a Speaker entity to a SpeakerForm""" # If no input provided return none. if not speaker: return speaker_form = SpeakerForm() for field in speaker_form.all_fields(): if hasattr(speaker, field.name): setattr(speaker_form, field.name, getattr(speaker, field.name)) elif field.name == "websafeSpeakerKey": setattr(speaker_form, field.name, speaker.key.urlsafe()) speaker_form.check_initialized() return speaker_form
def _copySessionToForm(self, sess): """Copy relevant fields from Session to SessionForm.""" sf = SessionForm() for field in sf.all_fields(): if hasattr(sess, field.name): if field.name == 'speaker': sf.speaker = SpeakerForm( name=sess.speaker.name, email=sess.speaker.email, websafeSpeakerKey=sess.speaker.websafeSpeakerKey, ) # convert sessionType string to Enum elif field.name == 'sessionType': setattr(sf, field.name, getattr(SessionType, getattr(sess, field.name))) # convert Date to date string elif field.name == 'date': setattr(sf, field.name, str(getattr(sess, field.name))) # just copy others else: setattr(sf, field.name, getattr(sess, field.name)) # get the websafe session key elif field.name == 'websafeKey': setattr(sf, field.name, sess.key.urlsafe()) sf.check_initialized() return sf
def getFeaturedSpeaker(self, request): """Return conference name and Featured speaker (by websafeConferenceKey).""" # get Conference object from request; bail if not found sf = SpeakerForm() conf = ndb.Key(urlsafe=request.websafeConferenceKey).get() if not conf: raise endpoints.NotFoundException( 'No conference found with key: %s' % request.websafeConferenceKey) #prof = conf.key.parent().get() for field in sf.all_fields(): if hasattr(conf, field.name): setattr(sf, field.name, getattr(conf, field.name)) sf.check_initialized() return sf
def _createSpeakerObject(self, request): """ Creates a Speaker entity in datastore based on the information provided by client. Sends a confirmation email after adding the new Speaker """ # preload necessary data items user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException('Authorization required') user_id = getUserId(user) if not request.name: raise endpoints.BadRequestException("Speaker 'name' \ field required") data = { field.name: getattr(request, field.name) for field in request.all_fields() } del data['websafeSpeakerKey'] # create Speaker & return (modified) SpeakerForm speaker_key = Speaker(**data).put() taskqueue.add(params={ 'email': user.email(), 'speakerInfo': repr(request) }, url='/tasks/send_speaker_confirmation_email') # Return data as SpeakerForm speakerform = SpeakerForm() for field in speakerform.all_fields(): if data.has_key(field.name): setattr(speakerform, field.name, data[field.name]) # Checks if the field is websafeSpeakerKey, then converts it into # urlsafe key elif field.name == "websafeSpeakerKey": setattr(speakerform, field.name, speaker_key.urlsafe()) speakerform.check_initialized() return speakerform
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm.""" speaker_form = SpeakerForm() for field in speaker_form.all_fields(): if hasattr(speaker, field.name): if field.name == "sessionKeysSpeakAt": all_keys = [] for each_key in speaker.sessionKeysSpeakAt: all_keys.append(each_key.urlsafe()) print "%^&*(*&^%$%^&*(*&^%" print all_keys setattr(speaker_form, field.name, all_keys) else: setattr(speaker_form, field.name, getattr(speaker, field.name)) elif field.name == "websafeKey": setattr(speaker_form, field.name, speaker.key.urlsafe()) speaker_form.check_initialized() return speaker_form
def getFeaturedSpeaker(self, request): """Returns the sessions of the featured speaker""" # attempt to get data from memcache data = memcache.get(MEMCACHE_FEAT_SPKR_KEY) speaker = None sessionNames = [] if data and data.has_key('speaker') and data.has_key('sessionNames'): speaker = data['speaker'] sessionNames = data['sessionNames'] # populate speaker form sf = SpeakerForm() for field in sf.all_fields(): if field.name == 'sessionNames': setattr(sf, field.name, sessionNames) elif field.name == 'speaker': setattr(sf, field.name, speaker) sf.check_initialized() return sf
def _createSpeakerObject(self, request): """ Creates a Speaker entity in datastore based on the information provided by client. Sends a confirmation email after adding the new Speaker """ # preload necessary data items user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException("Authorization required") user_id = getUserId(user) if not request.name: raise endpoints.BadRequestException( "Speaker 'name' \ field required" ) data = {field.name: getattr(request, field.name) for field in request.all_fields()} del data["websafeSpeakerKey"] # create Speaker & return (modified) SpeakerForm speaker_key = Speaker(**data).put() taskqueue.add( params={"email": user.email(), "speakerInfo": repr(request)}, url="/tasks/send_speaker_confirmation_email" ) # Return data as SpeakerForm speakerform = SpeakerForm() for field in speakerform.all_fields(): if data.has_key(field.name): setattr(speakerform, field.name, data[field.name]) # Checks if the field is websafeSpeakerKey, then converts it into # urlsafe key elif field.name == "websafeSpeakerKey": setattr(speakerform, field.name, speaker_key.urlsafe()) speakerform.check_initialized() return speakerform
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm""" # create a new entity first sf = SpeakerForm() # convert Speaker properties to SpeakerForm fields sf.name = speaker.name sf.bio = speaker.bio sf.websafeKey = speaker.key.urlsafe() # check and return sf.check_initialized() return sf
def getFeaturedSpeaker(self, request): """Return featured speaker of a conference from memcache""" # check type of websafeConferenceKey confKey, conf = ConferenceApi._getKeyAndEntityFromWebsafeKeyOfType( request.websafeConferenceKey, Conference) # get featured speaker using key from memcache websafeFeaturedSpeakerKey = memcache.get('%s_featuredSpeaker' % request.websafeConferenceKey) if websafeFeaturedSpeakerKey: featuredSpeaker = ndb.Key(urlsafe=websafeFeaturedSpeakerKey).get() return self._copySpeakerToForm(featuredSpeaker) # return empty speaker form on failure for no results return SpeakerForm()
def _copySpeakerToForm(self, speaker): """Copy relevant fields from Speaker to SpeakerForm.""" sf = SpeakerForm() for field in sf.all_fields(): # retrieve speaker ID and display on SpeakerForm if field.name == 'speakerId': sf.speakerId = speaker.key.integer_id() # copy other fields elif hasattr(speaker, field.name): setattr(sf, field.name, getattr(speaker, field.name)) sf.check_initialized() return sf
def addSpeaker(self, request): """Add speaker""" # verify user is authed user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException('Authorization required') # generate unique id for speaker s_id = Speaker.allocate_ids(size=1)[0] s_key = ndb.Key(Speaker, s_id) # save into datastore speaker = Speaker(key=s_key, displayName=request.displayName) speaker_key = speaker.put() # get speaker urlsafe string s_uss = speaker_key.urlsafe() if not s_uss: raise endpoints.NotFoundException( 'Unable to get speakerKey from Datastore') return SpeakerForm(speakerKey=s_uss)
def _copySpeakerToForm(self, request): """Copy relevant fields from Speaker to SpeakerForm.""" sf = SpeakerForm() sf.check_initialized() return sf
def _createSessionObject(self, request): """Create or update Session object, returning SessionForm/request.""" # preload necessary data items user = endpoints.get_current_user() if not user: raise endpoints.UnauthorizedException('Authorization required') user_id = getUserId(user) if not request.name: raise endpoints.BadRequestException( "Conference 'name' field required") # check if conf exists given websafeConfKey # get conference; check that it exists wsck = request.websafeConferenceKey c_key = ndb.Key(urlsafe=wsck) conf = c_key.get() if not conf: raise endpoints.NotFoundException( 'No conference found with key: %s' % wsck) if conf.organizerUserId != user_id: raise endpoints.ForbiddenException( 'Only the owner of the conference can make sessions') # copy ConferenceForm/ProtoRPC Message into dict data = { field.name: getattr(request, field.name) for field in request.all_fields() } # convert dates from strings to Date objects; set month based on # start_date if data['date']: data['date'] = datetime.strptime(data['date'][:10], "%Y-%m-%d").date() # check if time is a valid number in twentyfour hour notation if # if it is included if data['startTime']: time = data['startTime'] minutes = time % 100 if time < 0 or time > 2359 or minutes > 59: raise endpoints.BadRequestException('Invalid Start Time') # Create session id from parent COnference Key and # a Session key from that id s_id = Session.allocate_ids(size=1, parent=c_key)[0] s_key = ndb.Key(Session, s_id, parent=c_key) data['key'] = s_key data['websafeConferenceKey'] = wsck del data['websafeSessionKey'] # Save session Session(**data).put() # Check if the speaker exsists and creates a new speaker # or adds the session key to its list speakerQuery = Speaker.query() speakerQuery = speakerQuery.filter(Speaker.name == request.speaker) if speakerQuery.count() == 0: speakerForm = SpeakerForm() setattr(speakerForm, "name", request.speaker) setattr(speakerForm, "speakerSessionKeys", [s_key.urlsafe()]) self._createSpeakerObject(speakerForm) else: speaker = speakerQuery.get() speaker.speakerSessionKeys.append(s_key.urlsafe()) speaker.put() # Run task to check featured speaker taskqueue.add(params={ 'speaker': request.speaker, 'websafeConferenceKey': s_key.urlsafe(), 'websafeConferenceKey': wsck }, url='/tasks/set_featured_speaker') return self._copySessionToForm(s_key.get())