コード例 #1
0
    def change_primary_email(self):
        previous_primary_email = self.request.user.primary_email
        try:
            new_primary_email = (self.request.db.query(Email).filter(
                Email.user_id == self.request.user.id,
                Email.id == self.request.POST["primary_email_id"],
                Email.verified.is_(True),
            ).one())
        except NoResultFound:
            self.request.session.flash("Email address not found",
                                       queue="error")
            return self.default_response

        self.request.db.query(Email).filter(
            Email.user_id == self.request.user.id,
            Email.primary.is_(True)).update(values={"primary": False})

        new_primary_email.primary = True

        self.request.session.flash(
            f"Email address {new_primary_email.email} set as primary",
            queue="success")

        send_primary_email_change_email(
            self.request, (self.request.user, previous_primary_email))
        return self.default_response
コード例 #2
0
ファイル: views.py プロジェクト: dstufft/warehouse
    def change_primary_email(self):
        previous_primary_email = self.request.user.primary_email
        try:
            new_primary_email = (
                self.request.db.query(Email)
                .filter(
                    Email.user_id == self.request.user.id,
                    Email.id == self.request.POST["primary_email_id"],
                    Email.verified.is_(True),
                )
                .one()
            )
        except NoResultFound:
            self.request.session.flash("Email address not found", queue="error")
            return self.default_response

        self.request.db.query(Email).filter(
            Email.user_id == self.request.user.id, Email.primary.is_(True)
        ).update(values={"primary": False})

        new_primary_email.primary = True

        self.request.session.flash(
            f"Email address {new_primary_email.email} set as primary", queue="success"
        )

        if previous_primary_email is not None:
            send_primary_email_change_email(
                self.request, (self.request.user, previous_primary_email)
            )
        return self.default_response
コード例 #3
0
ファイル: views.py プロジェクト: mbacchi/warehouse
    def change_primary_email(self):
        previous_primary_email = self.request.user.email
        try:
            new_primary_email = self.request.db.query(Email).filter(
                Email.user_id == self.request.user.id,
                Email.id == self.request.POST['primary_email_id'],
                Email.verified.is_(True),
            ).one()
        except NoResultFound:
            self.request.session.flash('Email address not found',
                                       queue='error')
            return self.default_response

        self.request.db.query(Email).filter(
            Email.user_id == self.request.user.id,
            Email.primary.is_(True),
        ).update(values={'primary': False})

        new_primary_email.primary = True

        self.request.session.flash(
            f'Email address {new_primary_email.email} set as primary',
            queue='success',
        )

        send_primary_email_change_email(self.request, self.request.user,
                                        previous_primary_email)
        return self.default_response
コード例 #4
0
ファイル: views.py プロジェクト: ewdurbin/warehouse
    def change_primary_email(self):
        previous_primary_email = self.request.user.email
        try:
            new_primary_email = self.request.db.query(Email).filter(
                Email.user_id == self.request.user.id,
                Email.id == self.request.POST['primary_email_id'],
                Email.verified.is_(True),
            ).one()
        except NoResultFound:
            self.request.session.flash(
                'Email address not found.', queue='error'
            )
            return self.default_response

        self.request.db.query(Email).filter(
            Email.user_id == self.request.user.id,
            Email.primary.is_(True),
        ).update(values={'primary': False})

        new_primary_email.primary = True

        self.request.session.flash(
            f'Email address {new_primary_email.email} set as primary.',
            queue='success',
        )

        send_primary_email_change_email(
            self.request, self.request.user, previous_primary_email
        )
        return self.default_response
コード例 #5
0
ファイル: test_init.py プロジェクト: craig5/warehouse
    def test_primary_email_change_email(
        self, pyramid_request, pyramid_config, monkeypatch
    ):

        stub_user = pretend.stub(
            email="*****@*****.**", username="******", name=""
        )
        subject_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/subject.txt"
        )
        subject_renderer.string_response = "Email Subject"
        body_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.txt"
        )
        body_renderer.string_response = "Email Body"
        html_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.html"
        )
        html_renderer.string_response = "Email HTML Body"

        send_email = pretend.stub(
            delay=pretend.call_recorder(lambda *args, **kwargs: None)
        )
        pyramid_request.task = pretend.call_recorder(lambda *args, **kwargs: send_email)
        monkeypatch.setattr(email, "send_email", send_email)

        result = email.send_primary_email_change_email(
            pyramid_request,
            (stub_user, pretend.stub(email="*****@*****.**", verified=True)),
        )

        assert result == {
            "username": stub_user.username,
            "old_email": "*****@*****.**",
            "new_email": stub_user.email,
        }
        subject_renderer.assert_()
        body_renderer.assert_(username=stub_user.username)
        html_renderer.assert_(username=stub_user.username)
        assert pyramid_request.task.calls == [pretend.call(send_email)]
        assert send_email.delay.calls == [
            pretend.call(
                "username <*****@*****.**>",
                attr.asdict(
                    EmailMessage(
                        subject="Email Subject",
                        body_text="Email Body",
                        body_html=(
                            "<html>\n<head></head>\n"
                            "<body><p>Email HTML Body</p></body>\n</html>\n"
                        ),
                    )
                ),
            )
        ]
コード例 #6
0
ファイル: views.py プロジェクト: torirossini/warehouse
    def change_primary_email(self):
        previous_primary_email = self.request.user.primary_email
        try:
            new_primary_email = (
                self.request.db.query(Email)
                .filter(
                    Email.user_id == self.request.user.id,
                    Email.id == self.request.POST["primary_email_id"],
                    Email.verified.is_(True),
                )
                .one()
            )
        except NoResultFound:
            self.request.session.flash("Email address not found", queue="error")
            return self.default_response

        self.request.db.query(Email).filter(
            Email.user_id == self.request.user.id, Email.primary.is_(True)
        ).update(values={"primary": False})

        new_primary_email.primary = True
        self.user_service.record_event(
            self.request.user.id,
            tag="account:email:primary:change",
            ip_address=self.request.remote_addr,
            additional={
                "old_primary": previous_primary_email.email
                if previous_primary_email
                else None,
                "new_primary": new_primary_email.email,
            },
        )

        self.request.session.flash(
            f"Email address {new_primary_email.email} set as primary", queue="success"
        )

        if previous_primary_email is not None:
            send_primary_email_change_email(
                self.request, (self.request.user, previous_primary_email)
            )
        return self.default_response
コード例 #7
0
ファイル: test_init.py プロジェクト: ytaniguchi8/warehouse
    def test_primary_email_change_email(self, pyramid_request, pyramid_config,
                                        monkeypatch):

        stub_user = pretend.stub(email="*****@*****.**",
                                 username="******",
                                 name="")
        subject_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/subject.txt")
        subject_renderer.string_response = "Email Subject"
        body_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.txt")
        body_renderer.string_response = "Email Body"
        html_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.html")
        html_renderer.string_response = "Email HTML Body"

        send_email = pretend.stub(
            delay=pretend.call_recorder(lambda *args, **kwargs: None))
        pyramid_request.task = pretend.call_recorder(
            lambda *args, **kwargs: send_email)
        monkeypatch.setattr(email, "send_email", send_email)

        result = email.send_primary_email_change_email(
            pyramid_request,
            (stub_user,
             pretend.stub(email="*****@*****.**", verified=True)),
        )

        assert result == {
            "username": stub_user.username,
            "old_email": "*****@*****.**",
            "new_email": stub_user.email,
        }
        subject_renderer.assert_()
        body_renderer.assert_(username=stub_user.username)
        html_renderer.assert_(username=stub_user.username)
        assert pyramid_request.task.calls == [pretend.call(send_email)]
        assert send_email.delay.calls == [
            pretend.call(
                "username <*****@*****.**>",
                attr.asdict(
                    EmailMessage(
                        subject="Email Subject",
                        body_text="Email Body",
                        body_html=(
                            "<html>\n<head></head>\n"
                            "<body><p>Email HTML Body</p></body>\n</html>\n"),
                    )),
            )
        ]
コード例 #8
0
ファイル: test_init.py プロジェクト: wtolson/warehouse
    def test_primary_email_change_email(
            self, pyramid_request, pyramid_config, monkeypatch):

        stub_user = pretend.stub(
            email='*****@*****.**',
            username='******',
            name="",
        )
        subject_renderer = pyramid_config.testing_add_renderer(
            'email/primary-email-change.subject.txt'
        )
        subject_renderer.string_response = 'Email Subject'
        body_renderer = pyramid_config.testing_add_renderer(
            'email/primary-email-change.body.txt'
        )
        body_renderer.string_response = 'Email Body'

        send_email = pretend.stub(
            delay=pretend.call_recorder(lambda *args, **kwargs: None)
        )
        pyramid_request.task = pretend.call_recorder(
            lambda *args, **kwargs: send_email
        )
        monkeypatch.setattr(email, 'send_email', send_email)

        result = email.send_primary_email_change_email(
            pyramid_request,
            stub_user,
            "*****@*****.**",
        )

        assert result == {
            'username': stub_user.username,
            'old_email': "*****@*****.**",
            'new_email': stub_user.email
        }
        subject_renderer.assert_()
        body_renderer.assert_(username=stub_user.username)
        assert pyramid_request.task.calls == [
            pretend.call(send_email),
        ]
        assert send_email.delay.calls == [
            pretend.call(
                'Email Subject',
                'Email Body',
                recipient='username <*****@*****.**>',
            ),
        ]
コード例 #9
0
ファイル: test_email.py プロジェクト: ewdurbin/warehouse
    def test_primary_email_change_email(
            self, pyramid_request, pyramid_config, monkeypatch):

        stub_user = pretend.stub(
            email='new_email',
            username='******',
        )
        subject_renderer = pyramid_config.testing_add_renderer(
            'email/primary-email-change.subject.txt'
        )
        subject_renderer.string_response = 'Email Subject'
        body_renderer = pyramid_config.testing_add_renderer(
            'email/primary-email-change.body.txt'
        )
        body_renderer.string_response = 'Email Body'

        send_email = pretend.stub(
            delay=pretend.call_recorder(lambda *args, **kwargs: None)
        )
        pyramid_request.task = pretend.call_recorder(
            lambda *args, **kwargs: send_email
        )
        monkeypatch.setattr(email, 'send_email', send_email)

        result = email.send_primary_email_change_email(
            pyramid_request,
            stub_user,
            "old_email"
        )

        assert result == {
            'username': stub_user.username,
            'old_email': "old_email",
            'new_email': stub_user.email
        }
        subject_renderer.assert_()
        body_renderer.assert_(username=stub_user.username)
        assert pyramid_request.task.calls == [
            pretend.call(send_email),
        ]
        assert send_email.delay.calls == [
            pretend.call(
                'Email Body',
                'Email Subject',
                recipients=['old_email'],
            ),
        ]
コード例 #10
0
ファイル: test_init.py プロジェクト: craig5/warehouse
    def test_primary_email_change_email_unverified(
        self, pyramid_request, pyramid_config, monkeypatch
    ):

        stub_user = pretend.stub(
            email="*****@*****.**", username="******", name=""
        )
        subject_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/subject.txt"
        )
        subject_renderer.string_response = "Email Subject"
        body_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.txt"
        )
        body_renderer.string_response = "Email Body"
        html_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.html"
        )
        html_renderer.string_response = "Email HTML Body"

        send_email = pretend.stub(
            delay=pretend.call_recorder(lambda *args, **kwargs: None)
        )
        pyramid_request.task = pretend.call_recorder(lambda *args, **kwargs: send_email)
        monkeypatch.setattr(email, "send_email", send_email)

        result = email.send_primary_email_change_email(
            pyramid_request,
            (stub_user, pretend.stub(email="*****@*****.**", verified=False)),
        )

        assert result == {
            "username": stub_user.username,
            "old_email": "*****@*****.**",
            "new_email": stub_user.email,
        }
        subject_renderer.assert_()
        body_renderer.assert_(username=stub_user.username)
        html_renderer.assert_(username=stub_user.username)
        assert pyramid_request.task.calls == []
        assert send_email.delay.calls == []
コード例 #11
0
ファイル: test_init.py プロジェクト: ytaniguchi8/warehouse
    def test_primary_email_change_email_unverified(self, pyramid_request,
                                                   pyramid_config,
                                                   monkeypatch):

        stub_user = pretend.stub(email="*****@*****.**",
                                 username="******",
                                 name="")
        subject_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/subject.txt")
        subject_renderer.string_response = "Email Subject"
        body_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.txt")
        body_renderer.string_response = "Email Body"
        html_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change/body.html")
        html_renderer.string_response = "Email HTML Body"

        send_email = pretend.stub(
            delay=pretend.call_recorder(lambda *args, **kwargs: None))
        pyramid_request.task = pretend.call_recorder(
            lambda *args, **kwargs: send_email)
        monkeypatch.setattr(email, "send_email", send_email)

        result = email.send_primary_email_change_email(
            pyramid_request,
            (stub_user,
             pretend.stub(email="*****@*****.**", verified=False)),
        )

        assert result == {
            "username": stub_user.username,
            "old_email": "*****@*****.**",
            "new_email": stub_user.email,
        }
        subject_renderer.assert_()
        body_renderer.assert_(username=stub_user.username)
        html_renderer.assert_(username=stub_user.username)
        assert pyramid_request.task.calls == []
        assert send_email.delay.calls == []
コード例 #12
0
ファイル: test_init.py プロジェクト: ztane/warehouse
    def test_primary_email_change_email(self, pyramid_request, pyramid_config,
                                        monkeypatch):

        stub_user = pretend.stub(email="*****@*****.**",
                                 username="******",
                                 name="")
        subject_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change.subject.txt")
        subject_renderer.string_response = "Email Subject"
        body_renderer = pyramid_config.testing_add_renderer(
            "email/primary-email-change.body.txt")
        body_renderer.string_response = "Email Body"

        send_email = pretend.stub(
            delay=pretend.call_recorder(lambda *args, **kwargs: None))
        pyramid_request.task = pretend.call_recorder(
            lambda *args, **kwargs: send_email)
        monkeypatch.setattr(email, "send_email", send_email)

        result = email.send_primary_email_change_email(
            pyramid_request, stub_user, "*****@*****.**")

        assert result == {
            "username": stub_user.username,
            "old_email": "*****@*****.**",
            "new_email": stub_user.email,
        }
        subject_renderer.assert_()
        body_renderer.assert_(username=stub_user.username)
        assert pyramid_request.task.calls == [pretend.call(send_email)]
        assert send_email.delay.calls == [
            pretend.call(
                "Email Subject",
                "Email Body",
                recipient="username <*****@*****.**>",
            )
        ]