def reminder_view(): """View to send reminder email to user. :returns: JSON Response containing status of the process :rtype: JSONResponse """ message = dict() email = str(request.form['email']).strip() user = get_user_by_email(email) if user is None: message['type'] = 'Error' message['email'] = 'Email is not registered in our database.' return Response(json.dumps(message), mimetype='application/json') # Send Email Confirmation: subject = '%s - User Map Edit Link' % APP.config['PROJECT_NAME'] #noinspection PyUnresolvedReferences body = render_template( 'text/registration_confirmation_email.txt', project_name=APP.config['PROJECT_NAME'], url=APP.config['PUBLIC_URL'], user=user) send_async_mail( sender=MAIL_ADMIN, recipients=[email], subject=subject, text_body=body, html_body='') message['type'] = 'Success' return Response(json.dumps(message), mimetype='application/json')
def reminder_view(): """View to send reminder email to user. :returns: JSON Response containing status of the process :rtype: JSONResponse """ message = dict() email = str(request.form['email']).strip() user = get_user_by_email(email) if user is None: message['type'] = 'Error' message['email'] = 'Email is not registered in our database.' return Response(json.dumps(message), mimetype='application/json') # Send Email Confirmation: subject = '%s - User Map Edit Link' % APP.config['PROJECT_NAME'] #noinspection PyUnresolvedReferences body = render_template('text/registration_confirmation_email.txt', project_name=APP.config['PROJECT_NAME'], url=APP.config['PUBLIC_URL'], user=user) send_async_mail(sender=MAIL_ADMIN, recipients=[email], subject=subject, text_body=body, html_body='') message['type'] = 'Success' return Response(json.dumps(message), mimetype='application/json')
def test_send_async_mail(self): """Test for send_async_mail function.""" with mail.record_messages() as outbox: sender_thread = send_async_mail(**self.mail) sender_thread.join() self.assertEqual(len(outbox), 1) self.assertEqual(outbox[0].sender, self.mail['sender']) self.assertEqual(outbox[0].recipients, self.mail['recipients']) self.assertEqual(outbox[0].subject, self.mail['subject']) self.assertEqual(outbox[0].body, self.mail['text_body']) self.assertEqual(outbox[0].html, self.mail['html_body'])
def add_user_view(): """Controller to add a user. Handle post request via ajax and add the user to the user.db :returns: A new json response as in users.json. :rtype: HttpResponse .. note:: JavaScript on client must update the map on ajax completion callback. """ # return any errors as json - see http://flask.pocoo.org/snippets/83/ for code in default_exceptions.iterkeys(): APP.error_handler_spec[None][code] = make_json_error # Get data from form name = str(request.form['name']).strip() email = str(request.form['email']).strip() website = str(request.form['website']) role = int(request.form['role']) email_updates = str(request.form['email_updates']) latitude = str(request.form['latitude']) longitude = str(request.form['longitude']) # Validate the data: message = {} if not is_required_valid(name): message['name'] = 'Name is required' if not is_email_address_valid(email): message['email'] = 'Email address is not valid' if not is_required_valid(email): message['email'] = 'Email is required' if role not in [0, 1, 2]: message['role'] = 'Role must be checked' elif not is_boolean(email_updates): message['email_updates'] = 'Notification must be checked' # Check if the email has been registered by other user: user = get_user_by_email(email) if user is not None: message['email'] = 'Email has been registered by other user.' # Process data if len(message) != 0: message['type'] = 'Error' return Response(json.dumps(message), mimetype='application/json') else: # Modify the data: if email_updates == 'true': email_updates = True else: email_updates = False if len(website.strip()) != 0 and 'http' not in website: website = 'http://%s' % website # Create model for user and add user guid = add_user( name=name, email=email, website=website, role=int(role), email_updates=bool(email_updates), latitude=float(latitude), longitude=float(longitude)) # Prepare json for added user added_user = get_user(guid) # Send Email Confirmation: subject = '%s User Map Registration' % APP.config['PROJECT_NAME'] #noinspection PyUnresolvedReferences body = render_template( 'text/registration_confirmation_email.txt', project_name=APP.config['PROJECT_NAME'], url=APP.config['PUBLIC_URL'], user=added_user) recipient = added_user['email'] send_async_mail( sender=MAIL_ADMIN, recipients=[recipient], subject=subject, text_body=body, html_body='') #noinspection PyUnresolvedReferences added_user_json = render_template('json/users.json', users=[added_user]) # Return Response return Response(added_user_json, mimetype='application/json')
def add_user_view(): """Controller to add a user. Handle post request via ajax and add the user to the user.db :returns: A new json response as in users.json. :rtype: HttpResponse .. note:: JavaScript on client must update the map on ajax completion callback. """ # return any errors as json - see http://flask.pocoo.org/snippets/83/ for code in default_exceptions.iterkeys(): APP.error_handler_spec[None][code] = make_json_error # Get data from form name = str(request.form['name']).strip() email = str(request.form['email']).strip() website = str(request.form['website']) role = int(request.form['role']) email_updates = str(request.form['email_updates']) latitude = str(request.form['latitude']) longitude = str(request.form['longitude']) # Validate the data: message = {} if not is_required_valid(name): message['name'] = 'Name is required' if not is_email_address_valid(email): message['email'] = 'Email address is not valid' if not is_required_valid(email): message['email'] = 'Email is required' if role not in [0, 1, 2]: message['role'] = 'Role must be checked' elif not is_boolean(email_updates): message['email_updates'] = 'Notification must be checked' # Check if the email has been registered by other user: user = get_user_by_email(email) if user is not None: message['email'] = 'Email has been registered by other user.' # Process data if len(message) != 0: message['type'] = 'Error' return Response(json.dumps(message), mimetype='application/json') else: # Modify the data: if email_updates == 'true': email_updates = True else: email_updates = False if len(website.strip()) != 0 and 'http' not in website: website = 'http://%s' % website # Create model for user and add user guid = add_user(name=name, email=email, website=website, role=int(role), email_updates=bool(email_updates), latitude=float(latitude), longitude=float(longitude)) # Prepare json for added user added_user = get_user(guid) # Send Email Confirmation: subject = '%s User Map Registration' % APP.config['PROJECT_NAME'] #noinspection PyUnresolvedReferences body = render_template('text/registration_confirmation_email.txt', project_name=APP.config['PROJECT_NAME'], url=APP.config['PUBLIC_URL'], user=added_user) recipient = added_user['email'] send_async_mail(sender=MAIL_ADMIN, recipients=[recipient], subject=subject, text_body=body, html_body='') #noinspection PyUnresolvedReferences added_user_json = render_template('json/users.json', users=[added_user]) # Return Response return Response(added_user_json, mimetype='application/json')