From 8e3a9ee9504eb68619a87dae409d364a967307f5 Mon Sep 17 00:00:00 2001 From: renzon Date: Mon, 12 Aug 2019 16:49:55 -0300 Subject: [PATCH] Includes User Activation close #1388 --- Pipfile.lock | 12 +++++------ pythonpro/core/facade.py | 4 ++++ .../tests/test_interaction_creation.py | 9 ++++++-- pythonpro/dashboard/views.py | 5 +++-- pythonpro/domain/user_facade.py | 21 ++++++++++++++----- 5 files changed, 36 insertions(+), 15 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 81a25540..7ef686f0 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -33,18 +33,18 @@ }, "boto3": { "hashes": [ - "sha256:19a77d8ecb05d87123e88a65cba49cdbc8c66717ced21c2093a6f091492c22da", - "sha256:e184590781c127358c2d9ae1eab6607441d92fbddd88ba08b891b8c14d0bbfff" + "sha256:932a9c0c6978a6d6421335e077f233bd6d1c6f6e7879293fc7488471f67ad319", + "sha256:c98edda030456fdf910cd672d5ab0d1a8847b8587e81fe50a4df4292a704dd76" ], "index": "pypi", - "version": "==1.9.205" + "version": "==1.9.206" }, "botocore": { "hashes": [ - "sha256:0d6290f725a69a5950785fb058c2405e438674011eff7c11ce192b561b3c9aa6", - "sha256:e9452a8e48aea82157e846eb8ec2e8e57f52366ba3362ec5128ecff2c8b52e2f" + "sha256:7213a4d9482c753badbc405c1ff657accb842618ffb56e3c8ca91f697c745e13", + "sha256:e96242bd5915fb722f9a1926352aca3bf12b755146cb1826c27a766a14361b80" ], - "version": "==1.12.205" + "version": "==1.12.206" }, "certifi": { "hashes": [ diff --git a/pythonpro/core/facade.py b/pythonpro/core/facade.py index 94fc19bc..30b05529 100644 --- a/pythonpro/core/facade.py +++ b/pythonpro/core/facade.py @@ -113,6 +113,10 @@ def visit_member_landing_page(user: User, source: str): return UserInteraction(category=UserInteraction.MEMBER_LP, source=source, user=user).save() +def activate_user(user: User, source: str): + return UserInteraction(category=UserInteraction.ACTIVATED, source=source, user=user).save() + + def client_checkout(user: User, source: str) -> None: return UserInteraction(category=UserInteraction.CLIENT_CHECKOUT, source=source, user=user).save() diff --git a/pythonpro/dashboard/tests/test_interaction_creation.py b/pythonpro/dashboard/tests/test_interaction_creation.py index 7df73457..c6410f77 100644 --- a/pythonpro/dashboard/tests/test_interaction_creation.py +++ b/pythonpro/dashboard/tests/test_interaction_creation.py @@ -3,11 +3,12 @@ from model_mommy import mommy from pythonpro.dashboard.models import TopicInteraction +from pythonpro.domain import user_facade @pytest.fixture def remove_tags_mock(mocker): - return mocker.patch('pythonpro.dashboard.views.remove_tags') + return mocker.patch('pythonpro.domain.user_facade._mailchimp_facade.remove_tags') @pytest.fixture @@ -39,10 +40,14 @@ def resp_with_interaction(client_with_lead, topic, logged_user, remove_tags_mock ) -def test_user_first_video(resp, remove_tags_mock, logged_user): +def test_user_mark_on_mainchimp(resp, remove_tags_mock, logged_user): remove_tags_mock.assert_called_once_with(logged_user.email, 'never-watched-video') +def test_user_activation(resp, remove_tags_mock, logged_user): + assert 'ACTIVATED' == user_facade.find_user_interactions(logged_user)[0].category + + def test_user_not_first_video(resp_with_interaction, remove_tags_mock): assert remove_tags_mock.call_count == 0 diff --git a/pythonpro/dashboard/views.py b/pythonpro/dashboard/views.py index 0a36a70f..f697feea 100644 --- a/pythonpro/dashboard/views.py +++ b/pythonpro/dashboard/views.py @@ -6,7 +6,7 @@ from pythonpro.dashboard.facade import has_watched_any_topic from pythonpro.dashboard.forms import TopicInteractionForm from pythonpro.dashboard.models import TopicInteraction -from pythonpro.mailchimp.facade import remove_tags +from pythonpro.domain import user_facade @login_required @@ -24,6 +24,7 @@ def topic_interaction(request): form = TopicInteractionForm(data) if form.is_valid(): if not has_watched_any_topic(user): - remove_tags(user.email, 'never-watched-video') + user_facade.activate_user(user, None) + form.save() return JsonResponse({'msg': 'ok'}) diff --git a/pythonpro/domain/user_facade.py b/pythonpro/domain/user_facade.py index e1d88208..f887e56f 100644 --- a/pythonpro/domain/user_facade.py +++ b/pythonpro/domain/user_facade.py @@ -183,10 +183,21 @@ def client_generated_boleto(user): def subscribe_to_waiting_list(user: _User, source: str) -> None: """ - Subscribe user to waiting list - :param user: - :param source: - :return: - """ + Subscribe user to waiting list + :param user: + :param source: + :return: + """ _core_facade.subscribe_to_waiting_list(user, source) _mailchimp_facade.tag_as(user.email, 'lista-de-espera') + + +def activate_user(user: _User, source: str) -> None: + """ + Activate user + :param user: + :param source: + :return: + """ + _core_facade.activate_user(user, source) + _mailchimp_facade.remove_tags(user.email, 'never-watched-video')