def get(self):

        next_event = Event.get_next_event_by_date()

        if next_event:

            registration_opens = next_event.date - timedelta(days=14)
            registration_open = datetime.now() > registration_opens

            presentations = Presentation.query(ancestor=self.get_group_key()).filter(Presentation.event_key == next_event.key).fetch(100)
            registrations = Registration.query(ancestor=next_event.key).fetch(100)

            template_values = {
                'registrations_remaining': ( next_event.capacity - Registration.query(ancestor=next_event.key).count(next_event.capacity) ),
                'registrations': registrations,
                'event': next_event,
                'presentations': presentations,
                'registration_open': registration_open,
                'registration_opens': registration_opens
            }
            self.render('register.html', template_values)
        else:
            self.response.write('There is no next event setup')
    def index(self):
        next_event = Event.get_next_event_by_date()

        if next_event:
            ancestor_key = next_event.key
            registrations_query = Registration.query(ancestor=ancestor_key).order(Registration.name)
            registrations = registrations_query.fetch(100)

            template_values = {
                'registrations': registrations,
                'event_name': urllib.quote_plus(next_event.title),
            }

            self.render('registrations.html', template_values)
        else:
            self.response.write('Event name not specified')
    def test_PostingARegistrationShouldSendAConfirmationEmailWithLink(self):

        #Arrange
        self.create_event(capacity=20)
        self.mail_stub = self.testbed.get_stub(testbed.MAIL_SERVICE_NAME)

        form = self.testapp.get("/register").form
        form['email_address'] = '*****@*****.**'
        form['name'] = 'Bob Smith'
        form['twitter_handle'] = '@bob'

        #Act
        response = form.submit().follow()

        #Assert
        registration = Registration.query().fetch(1)[0];
        messages = self.mail_stub.get_sent_messages(to='*****@*****.**')
        self.assertEqual(1, len(messages))
        self.assertEqual('*****@*****.**', messages[0].sender)
        self.assertTrue('/registration/' + registration.key.urlsafe() in messages[0].body.payload, 'email should contain a link to the registration')