#!/usr/bin/env python3 from __future__ import print_function from django.conf import settings from django.http import HttpRequest, HttpResponse from django.shortcuts import render, redirect from django.test import Client from django.views.decorators.http import require_GET from zerver.models import get_realm, get_user from zerver.lib.initial_password import initial_password from zerver.lib.notifications import enqueue_welcome_emails from six.moves import urllib from confirmation.models import Confirmation, confirmation_url import os from typing import List, Dict, Any, Optional import datetime ZULIP_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../') client = Client() def email_page(request, message=None): # type: (HttpRequest, Optional[str]) -> HttpResponse if message is None: message = ''' All the emails sent in the Zulip development environment are logged here. You can also manually generate most of the emails by clicking here. To clear this log click here. ''' try: with open(settings.EMAIL_CONTENT_LOG_PATH, "r+") as f: content = f.read() except FileNotFoundError: content = "" return render(request, 'zerver/email_log.html', {'log': content, 'message': message}) def clear_emails(request): # type: (HttpRequest) -> HttpResponse try: os.remove(settings.EMAIL_CONTENT_LOG_PATH) except FileNotFoundError: pass return redirect(email_page) @require_GET def generate_all_emails(request): # type: (HttpRequest) -> HttpResponse # write fake data for all variables registered_email = "hamlet@zulip.com" unregistered_email_1 = "new-person@zulip.com" unregistered_email_2 = "new-person-2@zulip.com" realm = get_realm("zulip") # Password reset email client.post('/accounts/password/reset/', {'email': registered_email}) # Confirm account email client.post('/accounts/home/', {'email': unregistered_email_1}) # Find account email client.post('/accounts/find/', {'emails': registered_email}) # New login email password = initial_password(registered_email) client.login(username=registered_email, password=password) # New user invite and reminder emails client.post("/json/invites", {"invitee_emails": unregistered_email_2, "stream": ["Denmark"], "custom_body": ""}) # Verification for new email client.patch('/json/settings', urllib.parse.urlencode({'email': 'hamlets-new@zulip.com'})) # Email change successful key = Confirmation.objects.filter(type=Confirmation.EMAIL_CHANGE).latest('id').confirmation_key url = confirmation_url(key, realm.host, Confirmation.EMAIL_CHANGE) user_profile = get_user(registered_email, realm) client.get(url) user_profile.emails = "hamlet@zulip.com" user_profile.save() # Follow up day1 day2 emails enqueue_welcome_emails(user_profile) message = ''' Emails generated successfully. Reload this page to generate them again. To clear this log click here. ''' return email_page(request, message)