Exemple #1
0
    def get_sessions_by_type_and_filters(self, websafe_conference_key,
                                         session_type, filters):
        """Gets a list of sessions with a specific type and arbitrary filters.

        Args:
             websafe_conference_key (string)
             session_type (string)
             filters (list)

        Returns:
            ConferenceSessionForms
        """
        if filters:
            filter_maker = AppliesFilters(ConferenceSession, {
                'datetime': ['dateTime'],
                'int': ['duration', 'hour']
            }, {
                'TITLE': 'title',
                'DURATION': 'duration',
                'DATE': 'dateTime',
                'HOUR': 'hour'
            })
            sessions = filter_maker.get_query(filters, 'title',
                                              websafe_conference_key).fetch()
        else:
            sessions = ConferenceSession.query(
                ConferenceSession.websafeConferenceKey ==
                websafe_conference_key).fetch()

        return ConferenceSessionForms(items=[
            self.copy_entity_to_form(ConferenceSessionForm(), s)
            for s in sessions if s.typeOfSession == unicode(session_type)
        ])
Exemple #2
0
    def test_it_can_create_sessions(self):
        p_key = ndb.Key(Profile, '*****@*****.**')
        profile = Profile(mainEmail='*****@*****.**', key=p_key).put()

        conf_id = Conference(name="a conference",
                             organizerUserId='*****@*****.**',
                             parent=p_key).put().urlsafe()
        request = ConferenceSessionForm(title='This is the title',
                                        date="2016-12-12",
                                        highlights="blah blah ha",
                                        startTime="13:15",
                                        websafeConferenceKey=conf_id,
                                        speakerEmails=['*****@*****.**'],
                                        duration=12,
                                        typeOfSession='snails')
        data = {
            field.name: getattr(request, field.name)
            for field in request.all_fields()
        }

        auth = self.mock_auth('*****@*****.**')
        session_service = SessionService(auth=auth)
        session_service.create_conference_session(request, profile)

        self.assertEqual(1, len(ConferenceSession.query().fetch(2)))

        session = ConferenceSession.query(
            ConferenceSession.websafeConferenceKey == conf_id).fetch()

        self.assertEquals(data['title'], session[0].title)
        self.assertEquals(data['highlights'], session[0].highlights)
        self.assertEquals(data['typeOfSession'], session[0].typeOfSession)
        self.assertEquals(data['duration'], session[0].duration)
        self.assertEquals(datetime.datetime(2016, 12, 12, 13, 15),
                          session[0].dateTime)

        speaker = ndb.Key(urlsafe=session[0].speakerKeys[0]).get()
        self.assertEquals(speaker.email, '*****@*****.**')
Exemple #3
0
    def get_speaker_sessions(self, websafe_speaker_key):
        """Gets a list of sessions featuring this speaker.

        Args:
             websafe_speaker_key (string)

        Returns:
            ConferenceSessionForms
        """
        sessions = ConferenceSession.query(
            ConferenceSession.speakerKeys == websafe_speaker_key).fetch()

        return ConferenceSessionForms(items=[
            self.copy_entity_to_form(ConferenceSessionForm(), session)
            for session in sessions
        ])
Exemple #4
0
    def get_conference_sessions(self, websafe_conference_key):
        """Gets all the sessions associated with a conference.

        Args:
            websafe_conference_key (string)
        Returns:
            ConferenceSessionForms
        """
        sessions = ConferenceSession.query(
            ConferenceSession.websafeConferenceKey ==
            websafe_conference_key).fetch()

        return ConferenceSessionForms(items=[
            self.copy_entity_to_form(ConferenceSessionForm(), session)
            for session in sessions
        ])
Exemple #5
0
    def get_conference_sessions_by_type(self, websafe_conference_key,
                                        session_type):
        """Gets a list of sessions in a conference with a specific type.

        Args:
             websafe_conference_key (string)

        Returns:
            ConferenceSessionForms
        """
        sessions = ConferenceSession.query(
            ndb.AND(
                ConferenceSession.websafeConferenceKey ==
                websafe_conference_key,
                ConferenceSession.typeOfSession == session_type)).fetch()

        return ConferenceSessionForms(items=[
            self.copy_entity_to_form(ConferenceSessionForm(), session)
            for session in sessions
        ])
Exemple #6
0
    def post(self):
        """Checks for featured speakers, and caches one if found."""
        keys = self.request.get('speakers').split('|||')

        c_key = ndb.Key(urlsafe=self.request.get('websafe_conference_key'))

        featured_speakers = []

        # Check for multiple keys in speakerKeys
        for key in keys:
            sessions = ConferenceSession.query(
                ConferenceSession.speakerKeys == key, ancestor=c_key).fetch()

            if len(sessions) > 1:
                featured_speakers.append(key)

        if not featured_speakers:
            return

        featured_key = random.choice(featured_speakers)

        memcache.set(MEMCACHE_FEATURED_SPEAKER_KEY, featured_key)