def new_preference(id): """Assigns a preference to all users.""" users = controller.User() try: users.add_restaurant_to_preferences(id) return True except: return False
def subscribers(): users = controller.User().get() click.echo("There are {} subscribers.".format(len(users)) ) for user in users: click.echo("{} | {} | {} | {}".format( user['email'].ljust(35," "), helpers.pretty_datetime(user['verified']).rjust(16), # ",".join(list(user['preferences'])), ".".join(user['preferences']).ljust(22), user['language'] if user['language'] is not None else "" ))
def resend_verification(email): users = controller.User() user = users.get(email=email) if not user: return click.echo("User not found.") if users.send_email_verification( user['uuid'] ): return click.echo("Verification email sent to {}.".format(user['email'])) return click.echo("Could not resend verification email.")
def verify(email): users = controller.User() try: user = users.get(email=email) if not user: return click.echo("User not found.") click.echo("User found. Verifying user {} ({})".format(user['email'], user['uuid'])) result = users.verify(user['token']) if result: return click.echo("User verified.") else: click.echo("Could not verify user.") except Exception as e: return "Unexpected error:", click.echo(e)
def send_messages_html(self, email=None): if email: users = controller.User() user = users.get(email=email) if not user: user = users.add(email, verify=True) recipients = [user] else: recipients = self.get_recipients() auth = ("api", self.settings.MAIL_API_KEY) notice = controller.Email.get_notice() send_counter = 0 recipients = [ recipient for recipient in recipients if recipient['verified'] is not False ] for recipient in recipients: try: print("Sending email to {}".format(recipient['email'].ljust( 40, ".")), end="") # Get menus for preferences of given user foo = [ r for r in self.menus if str(r['id']) in recipient['preferences'] ] def get_menus(): userMenu = [] for preference in recipient['preferences']: for menu in self.menus: if str(menu['id']) == preference: userMenu.append(menu) continue return userMenu userMenus = get_menus() print(userMenus) # for each user preferences, get the corresponding # Define language so it corresponds to dictionary keys of languages in menu dict if recipient['language'] in [ 'cs', 'en' ]: # Check if language is set for user. language = str('menu_' + recipient['language']) else: # Use original menu language language = 'menu' for menu in userMenus: menu['menu'] = menu[language] data = { 'title': "Daily Menu for {}".format( datetime.now().strftime("%A, %d-%b")), 'notice': notice, 'recipient': { 'email': recipient['email'], 'url': SETTINGS.URL + "/edit?token=" + recipient['token'], }, 'menus': userMenus, 'language': language, } # Generate html email template for user with given data email_html = self.render_email('master.html', data) config = { "from": self.settings.FROM, "to": recipient['email'], "subject": "Daily Menu for {}".format( datetime.now().strftime("%A, %d-%b")), "html": email_html, } r = requests.post(self.settings.MAIL_URL, auth=auth, data=config) if r.status_code == 200: send_counter += 1 print("OK!") else: print("FAILED ({})".format(str(r.status_code))) except Exception as e: print("ERROR: {}".format(str(e))) print("{} / {} Emails sent successfully.".format( send_counter, len(recipients))) return True
def add(email, verify): result = controller.User().add(email, verify=verify) click.echo("Adding {} to subscribers. Forcing verification: {}. Result: {}".format(email, verify, result))