def put(self, event_id, _parser): """Save or update a registration""" user_id = get_jwt_identity() query = _parser.parse_args(strict=True) query['event_id'] = event_id query['user_id'] = user_id try: if query['interest'] not in [1, 2]: raise ValueError('Invalid value for interest') registration = Registration(**query) except ValueError as e: abort(400, e.args[0]) try: props = db.set_registration(**registration) except sqlite3.IntegrityError as err: if str(err) == "FOREIGN KEY constraint failed": abort(404, 'Event not found') abort(500, err.args[0]) except Exception as e: abort(500, e.args[0]) # Email claims = get_jwt() user_name = claims['firstname'] + ' ' + claims['lastname'] send_new_registration(event_id, user_id, user_name, props['interest']) return Registration(**props), 200
def create_registrant(self, event, name): participant = Registration(parent=event.key) participant.name = name participant.email_address = name + '@home.com' participant.twitter_handle = '@' + name participant.put() return participant
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')
def post(self): next_event = Event.get_next_event_by_date() registration = Registration(parent=next_event.key) registration.email_address = self.request.get('email_address') registration.name= self.request.get('name') registration.twitter_handle = self.request.get('twitter_handle') registration.confirmed = False key = registration.put() registration_url = self.url_for('registration', _full=True, registration_id=key.urlsafe()) print registration_url mail.send_mail( '*****@*****.**', registration.email_address, 'click link to confirm', registration_url) self.redirect('/register')
def new(): event_id= request.json.get('event_id', None) registration_fee = request.json.get('registration_fee', None) first_name = request.json.get('first_name', None) last_name = request.json.get('last_name', None) email= request.json.get('email', None) date_of_birth = request.json.get('date_of_birth', None) age = request.json.get('age', None) gender = request.json.get('gender', None) nationality = request.json.get('nationality', None) nric = request.json.get('nric', None) phone_number = request.json.get('phone_number', None) address = request.json.get('address', None) id = get_jwt_identity() user = User.get_or_none(User.id == id) errors=[] if not event_id: errors.append('event_id') if not registration_fee: errors.append('registration_fee') if not first_name: errors.append('first_name') if not last_name: errors.append('last_name') if not email: errors.append('email') if not date_of_birth: errors.append('date_of_birth') if not age: errors.append('age') if not gender: errors.append('gender') if not nationality: errors.append('nationality') if not nric: errors.append('nric') if not phone_number: errors.append('phone_number') if not address: errors.append('address') if errors: return jsonify({"msg":{"Missing Parameters":[error for error in errors]}}), 400 registration = Registration(event_id=event_id, participant_id=user.id, registration_fee=registration_fee, first_name=first_name, last_name=last_name, email=email, date_of_birth=date_of_birth, age=age, gender=gender, nationality=nationality, nric=nric, phone_number=phone_number, address=address) registration.save() return jsonify({ "message": "Successfully create a new event", "status": "success" }), 200