From 73cabf3f572cf45d8fbe7cc1566d7abef6b58ba9 Mon Sep 17 00:00:00 2001 From: renzon Date: Wed, 8 Jul 2020 15:36:25 -0300 Subject: [PATCH] Removed payments app close #2411 --- Pipfile | 2 +- Pipfile.lock | 24 ++-- .../membership_lp_subscription_closed.html | 2 +- .../membership_lp_subscription_open.html | 2 +- pythonpro/core/tests/test_view_home.py | 1 + pythonpro/domain/__init__.py | 3 +- pythonpro/domain/membership_domain.py | 80 ------------- .../domain/tests/test_pytools_promotion.py | 62 ---------- pythonpro/domain/user_facade.py | 57 +-------- .../templates/launch}/_whatsapp_widget.html | 0 .../templates/launch}/membership_email.txt | 0 pythonpro/launch/views.py | 45 +------- pythonpro/payments/__init__.py | 0 pythonpro/payments/apps.py | 5 - pythonpro/payments/context_processors.py | 9 -- pythonpro/payments/facade.py | 109 ------------------ pythonpro/payments/static/img/Bruno_Rocha.jpg | Bin 11824 -> 0 bytes .../payments/static/img/FabioTelles.jpeg | Bin 13026 -> 0 bytes .../payments/static/img/fabricio_avatar.jpg | Bin 13461 -> 0 bytes pythonpro/payments/static/img/moacir.jpg | Bin 98306 -> 0 bytes .../static/js/pagarme-checkout-1.1.0.js | 1 - .../payments/closed_subscriptions.html | 42 ------- .../templates/payments/membership_boleto.html | 22 ---- .../templates/payments/membership_thanks.html | 21 ---- .../templates/payments/pytools_boleto.html | 23 ---- .../payments/pytools_boleto_email.txt | 16 --- .../templates/payments/pytools_email.txt | 8 -- .../templates/payments/pytools_thanks.html | 22 ---- .../payments/templates/payments/thanks.html | 21 ---- pythonpro/payments/tests/__init__.py | 0 .../payments/tests/test_landing_pages.py | 19 --- .../payments/tests/test_pytools_promo.py | 92 --------------- pythonpro/payments/urls.py | 30 ----- pythonpro/payments/views.py | 49 -------- pythonpro/settings.py | 2 - pythonpro/urls.py | 1 - 36 files changed, 23 insertions(+), 747 deletions(-) delete mode 100644 pythonpro/domain/membership_domain.py delete mode 100644 pythonpro/domain/tests/test_pytools_promotion.py rename pythonpro/{payments/templates/payments => launch/templates/launch}/_whatsapp_widget.html (100%) rename pythonpro/{payments/templates/payments => launch/templates/launch}/membership_email.txt (100%) delete mode 100644 pythonpro/payments/__init__.py delete mode 100644 pythonpro/payments/apps.py delete mode 100644 pythonpro/payments/context_processors.py delete mode 100644 pythonpro/payments/facade.py delete mode 100644 pythonpro/payments/static/img/Bruno_Rocha.jpg delete mode 100644 pythonpro/payments/static/img/FabioTelles.jpeg delete mode 100644 pythonpro/payments/static/img/fabricio_avatar.jpg delete mode 100644 pythonpro/payments/static/img/moacir.jpg delete mode 100644 pythonpro/payments/static/js/pagarme-checkout-1.1.0.js delete mode 100644 pythonpro/payments/templates/payments/closed_subscriptions.html delete mode 100644 pythonpro/payments/templates/payments/membership_boleto.html delete mode 100644 pythonpro/payments/templates/payments/membership_thanks.html delete mode 100644 pythonpro/payments/templates/payments/pytools_boleto.html delete mode 100644 pythonpro/payments/templates/payments/pytools_boleto_email.txt delete mode 100644 pythonpro/payments/templates/payments/pytools_email.txt delete mode 100644 pythonpro/payments/templates/payments/pytools_thanks.html delete mode 100644 pythonpro/payments/templates/payments/thanks.html delete mode 100644 pythonpro/payments/tests/__init__.py delete mode 100644 pythonpro/payments/tests/test_landing_pages.py delete mode 100644 pythonpro/payments/tests/test_pytools_promo.py delete mode 100644 pythonpro/payments/urls.py delete mode 100644 pythonpro/payments/views.py diff --git a/Pipfile b/Pipfile index ab1712b4..e0ed0e0b 100644 --- a/Pipfile +++ b/Pipfile @@ -30,10 +30,10 @@ codecov = "*" django-bootstrap4 = "*" celery = "*" redis = "*" -django-pagarme = "*" inflection = "*" django-two-factor-auth = "*" django-recaptcha = "*" +django-pagarme = "*" [dev-packages] faker = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 8d408808..413cf06b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -69,18 +69,18 @@ }, "boto3": { "hashes": [ - "sha256:ae57df1fbad7e29954a160d77cbf650d6562eb0d304c1206afa71d914e771a66", - "sha256:cbe618d61cb8f75cd9495ea36e69bad7c8984eb11f02ad247be4c9a2eb7eb647" + "sha256:1776200c04152dd308e297cd18abb183d93383587dca358a768155507f15965b", + "sha256:944c02dbf96dbaf52498acdbea60d4eb2aa717f40a797f86f8d47d8905e02441" ], "index": "pypi", - "version": "==1.14.17" + "version": "==1.14.19" }, "botocore": { "hashes": [ - "sha256:5528c04c360019c24f2706ce82872c9ab767a8c581beffdfdaf006cce7499cac", - "sha256:d65b5574dad8c221344496352245828d9ffecaa0868199eb04ccd2eb2ff09133" + "sha256:4eef7d38de1bee3bb60a66d53a73d47ec5ea30d3d43befa90840ba1d52791971", + "sha256:7890e83cd28967f854fd54d6c8bdb009868aec1c31a71dcc82e4577562f1affb" ], - "version": "==1.17.17" + "version": "==1.17.19" }, "celery": { "hashes": [ @@ -239,11 +239,11 @@ }, "django-pagarme": { "hashes": [ - "sha256:36f3807dba66b3730a377cc64c792436162d08053282f3d6a266c02aa2be4308", - "sha256:8f286989d52ce38e668cff67083380cc60bef3b13e575c866699b8ce725e0cda" + "sha256:f540bbf3151e7303dd21c92304a5c268121a8715084b0645a5d005cb665c9e0c", + "sha256:fcf044eeb8eb580d3cbd6d6d1c74b2c1a907df144ebabc27888d03d1536b6b2f" ], "index": "pypi", - "version": "==0.14" + "version": "==0.16" }, "django-phonenumber-field": { "extras": [ @@ -295,11 +295,11 @@ }, "django-two-factor-auth": { "hashes": [ - "sha256:637bd96e76907d044206c3b038bf4b5eb4769e9e3a4718da755fafc97db38b26", - "sha256:f1835e5368448d1b3d826ce7a36c590b3e39cd536523d372cfc5f9fbdc9731f4" + "sha256:612adb0dd6e9ed3b4ecd6763f2e3f56358d7b5afb843a3a49994d1d3bc91ffc2", + "sha256:8e698d548a5a7c02c7ba343bc5376a7bbdc4e59c20ef13223743fe42fa4a1281" ], "index": "pypi", - "version": "==1.11.0" + "version": "==1.12.1" }, "docutils": { "hashes": [ diff --git a/pythonpro/checkout/templates/checkout/membership_lp_subscription_closed.html b/pythonpro/checkout/templates/checkout/membership_lp_subscription_closed.html index c18eaa92..6a3c0379 100644 --- a/pythonpro/checkout/templates/checkout/membership_lp_subscription_closed.html +++ b/pythonpro/checkout/templates/checkout/membership_lp_subscription_closed.html @@ -26,7 +26,7 @@ {% endblock %} {% block body %} - {% include 'payments/_whatsapp_widget.html' %} + {% include 'launch/_whatsapp_widget.html' %}

diff --git a/pythonpro/checkout/templates/checkout/membership_lp_subscription_open.html b/pythonpro/checkout/templates/checkout/membership_lp_subscription_open.html index 55b7016b..3acface4 100644 --- a/pythonpro/checkout/templates/checkout/membership_lp_subscription_open.html +++ b/pythonpro/checkout/templates/checkout/membership_lp_subscription_open.html @@ -26,7 +26,7 @@ {% endblock %} {% block body %} - {% include 'payments/_whatsapp_widget.html' %} + {% include 'launch/_whatsapp_widget.html' %}

Saiba como ter acesso a um mercado que paga altos salários e tem milhares de vagas em aberto!

diff --git a/pythonpro/core/tests/test_view_home.py b/pythonpro/core/tests/test_view_home.py index c6993b6a..20d40a52 100644 --- a/pythonpro/core/tests/test_view_home.py +++ b/pythonpro/core/tests/test_view_home.py @@ -66,6 +66,7 @@ def home_resp_open_subscriptions(settings, client): return _resp(client) +@pytest.mark.skip # TODO: reimplement based on dates def test_payment_link_is_present(home_resp_open_subscriptions): """ Assert Payment link is present on home page when subscriptions are open diff --git a/pythonpro/domain/__init__.py b/pythonpro/domain/__init__.py index 2c4394f5..9ac10d68 100644 --- a/pythonpro/domain/__init__.py +++ b/pythonpro/domain/__init__.py @@ -1,8 +1,7 @@ -from pythonpro.domain import (checkout_domain, content_statistics_domain, membership_domain, user_facade) +from pythonpro.domain import (checkout_domain, content_statistics_domain, user_facade) __all__ = [ 'content_statistics_domain', - 'membership_domain', 'user_facade', 'checkout_domain' ] diff --git a/pythonpro/domain/membership_domain.py b/pythonpro/domain/membership_domain.py deleted file mode 100644 index 3a77bbb1..00000000 --- a/pythonpro/domain/membership_domain.py +++ /dev/null @@ -1,80 +0,0 @@ -from django.urls import reverse -from django.utils.http import urlencode - -from pythonpro.core import facade as _core_facade -from pythonpro.core.models import User as _User -from pythonpro.domain import user_facade as _user_facade -from pythonpro.payments import facade as _payment_facade -from pythonpro.payments.facade import PagarmeNotPaidTransaction, PagarmeNotPaidTransaction as _PagarmeNotPaidTransaction - -__all__ = ['calculate_membership_price', 'subscribe_anonymous_member_who_paid_boleto', - 'subscribe_member_who_paid_boleto', 'capture_payment'] - - -def calculate_membership_price(user: _User) -> int: - """ - Calculate membership price based on user role. Clients have discount - :param user: - :return: integer representing price in BRL cents - """ - discount = calculate_discount(user) - - return _payment_facade.MEMBERSHIP_PRICE - discount - - -def calculate_discount(user): - """ - Calculate user's discount. Clients have the Pytool's price discounted from total value - :param user: - :return: - """ - discount = _payment_facade.MEMBERSHIP_DISCOUNT_FOR_CLIENTS if _core_facade.is_client(user) else 0 - return discount - - -def subscribe_member_who_paid_boleto(user_id: int, notification_data: dict, raw_post: str, signature: str, - source: str = 'unknow') -> _User: - try: - _payment_facade.confirm_membership_boleto_payment(user_id, notification_data, raw_post, signature) - except _PagarmeNotPaidTransaction: - pass - else: - user = _user_facade.find_user_by_id(user_id) - _user_facade.promote_member(user, source) - return user - - -def subscribe_anonymous_member_who_paid_boleto( - notification_data: dict, raw_post: str, signature: str, source: str = 'unknow') -> _User: - try: - transaction = _payment_facade.extract_transaction(notification_data, raw_post, signature) - except PagarmeNotPaidTransaction: - pass # No problem, we need to handle only paid transactions - else: - user = _user_facade.find_user_by_email(transaction['customer']['email']) - _user_facade.promote_member(user, source) - return user - - -def capture_payment(token, user, source='unknow'): - pagarme_resp = _payment_facade.membership_capture(calculate_membership_price(user), token) - customer = pagarme_resp['customer'] - customer_email = customer['email'] - customer_first_name = customer['name'].split()[0] - payment_method = pagarme_resp['payment_method'] - if payment_method == 'credit_card': - if user.is_authenticated: - _user_facade.promote_member(user, source) - else: - _user_facade.force_register_member(customer_first_name, customer_email, source) - dct = {'redirect_url': reverse('payments:membership_thanks')} - elif payment_method == 'boleto': - if not user.is_authenticated: - user = _user_facade.force_register_lead(customer_first_name, customer_email, source) - _user_facade.member_generated_boleto(user) - path = reverse('payments:membership_boleto') - qs = urlencode({k: pagarme_resp[k] for k in ['boleto_barcode', 'boleto_url']}) - dct = {'redirect_url': f'{path}?{qs}'} - else: - raise ValueError(f'Invalid payment method {payment_method}') - return dct diff --git a/pythonpro/domain/tests/test_pytools_promotion.py b/pythonpro/domain/tests/test_pytools_promotion.py deleted file mode 100644 index daee66f7..00000000 --- a/pythonpro/domain/tests/test_pytools_promotion.py +++ /dev/null @@ -1,62 +0,0 @@ -from datetime import datetime - -import pytz -from freezegun import freeze_time -from model_mommy import mommy -from rolepermissions.roles import assign_role - -from pythonpro.domain import user_facade - - -def test_leads_in_promotion_period(db, django_user_model, mocker): - dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(3, 10)) - tag_as_mock = mocker.patch('pythonpro.domain.user_facade._email_marketing_facade.tag_as') - users_created_seven_weeks_ago = [mommy.make(django_user_model, date_joined=d) for d in dts] - for user in users_created_seven_weeks_ago: - assign_role(user, 'lead') - with freeze_time('2019-07-22'): - assert len(users_created_seven_weeks_ago) == user_facade.run_pytools_promotion_campaign() - for user in users_created_seven_weeks_ago: - tag_as_mock.assert_any_call(user.email, user.id, 'pytools-promotion') - - -def test_clients_not_marked_in_promotion_period(db, django_user_model, mocker): - dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(3, 10)) - tag_as_mock = mocker.patch('pythonpro.domain.user_facade._email_marketing_facade.tag_as') - users_created_seven_weeks_ago = [mommy.make(django_user_model, date_joined=d) for d in dts] - for user in users_created_seven_weeks_ago: - assign_role(user, 'client') - with freeze_time('2019-07-22'): - assert 0 == user_facade.run_pytools_promotion_campaign() - assert tag_as_mock.call_count == 0 - - -def test_members_not_marked_in_promotion_period(db, django_user_model, mocker): - dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(3, 10)) - tag_as_mock = mocker.patch('pythonpro.domain.user_facade._email_marketing_facade.tag_as') - users_created_seven_weeks_ago = [mommy.make(django_user_model, date_joined=d) for d in dts] - for user in users_created_seven_weeks_ago: - assign_role(user, 'client') - with freeze_time('2019-07-22'): - assert 0 == user_facade.run_pytools_promotion_campaign() - assert tag_as_mock.call_count == 0 - - -def test_before_promotion_period(db, django_user_model, mocker): - dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(1, 3)) - tag_as_mock = mocker.patch('pythonpro.domain.user_facade._email_marketing_facade.tag_as') - for d in dts: - mommy.make(django_user_model, date_joined=d) - with freeze_time('2019-07-22'): - assert 0 == user_facade.run_pytools_promotion_campaign() - assert tag_as_mock.call_count == 0 - - -def test_after_promotion_period(db, django_user_model, mocker): - dts = (datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(10, 13)) - tag_as_mock = mocker.patch('pythonpro.domain.user_facade._email_marketing_facade.tag_as') - for d in dts: - mommy.make(django_user_model, date_joined=d) - with freeze_time('2019-07-22'): - assert 0 == user_facade.run_pytools_promotion_campaign() - assert tag_as_mock.call_count == 0 diff --git a/pythonpro/domain/user_facade.py b/pythonpro/domain/user_facade.py index 0c4f6d32..30f8b234 100644 --- a/pythonpro/domain/user_facade.py +++ b/pythonpro/domain/user_facade.py @@ -10,7 +10,6 @@ from django.conf import settings, settings as _settings from django.core.mail import send_mail as _send_mail from django.template.loader import render_to_string -from django.urls import reverse from pythonpro.absolute_uri import build_absolute_uri from pythonpro.cohorts import facade as _cohorts_facade @@ -18,15 +17,14 @@ from pythonpro.core.models import User as _User from pythonpro.discourse.facade import MissingDiscourseAPICredentials, generate_sso_payload_and_signature from pythonpro.email_marketing import facade as _email_marketing_facade -from pythonpro.payments import facade as _payments_facade _logger = Logger(__file__) UserCreationException = _core_facade.UserCreationException # exposing exception on Facade __all__ = [ - 'register_lead', 'force_register_client', 'promote_client', 'activate_user', 'find_user_interactions', - 'visit_member_landing_page', 'run_pytools_promotion_campaign', 'promote_member', 'find_user_by_email', + 'register_lead', 'force_register_client', 'activate_user', 'find_user_interactions', + 'visit_member_landing_page', 'promote_member', 'find_user_by_email', 'find_user_by_id', 'force_register_lead', 'subscribe_to_waiting_list', 'force_register_member', 'click_member_checkout', 'subscribe_anonymous_user_to_waiting_list' ] @@ -139,7 +137,7 @@ def promote_member(user: _User, source: str) -> _User: except _ActiveCampaignError: pass email_msg = render_to_string( - 'payments/membership_email.txt', + 'launch/membership_email.txt', { 'user': user, 'cohort_detail_url': build_absolute_uri(cohort.get_absolute_url()) @@ -212,40 +210,6 @@ def promote_data_scientist(user: _User, source: str) -> _User: return user -def promote_client(user: _User, source: str) -> None: - """ - Promote a user to Client role and change it's role on Email Marketing. Will not fail in case API call fails. - Email welcome email is sent to user - :param source: source of traffic - :param user: - :return: - """ - _core_facade.promote_to_client(user, source) - sync_user_on_discourse(user) - try: - _email_marketing_facade.create_or_update_client(user.first_name, user.email, id=user.id) - except _ActiveCampaignError: - pass - email_msg = render_to_string( - 'payments/pytools_email.txt', - { - 'user': user, - 'ty_url': build_absolute_uri(reverse('payments:pytools_thanks')) - } - ) - _send_mail( - 'Inscrição no curso Pytools realizada! Confira o link com detalhes.', - email_msg, - _settings.DEFAULT_FROM_EMAIL, - [user.email] - ) - - -def promote_client_and_remove_boleto_tag(user: _User, source: str = None): - promote_client(user, source) - _email_marketing_facade.remove_tags(user.email, user.id, CLIENT_BOLETO_TAG) - - def find_user_by_email(user_email: str) -> _User: """ Find user by her email @@ -273,21 +237,6 @@ def find_user_interactions(user: _User): return _core_facade.find_user_interactions(user) -def run_pytools_promotion_campaign() -> int: - """ - Run pytools campaign for users registered 7 weeks ago - :return: number of user's marked for promotion - """ - begin, end = _payments_facade.calculate_7th_week_before_promotion() - promotion_users = _core_facade.find_leads_by_date_joined_interval(begin, end) - for user in promotion_users: - try: - _email_marketing_facade.tag_as(user.email, user.id, 'pytools-promotion') - except _ActiveCampaignError: - pass - return len(promotion_users) - - def visit_member_landing_page(user, source): """ Mark user as visited member landing page diff --git a/pythonpro/payments/templates/payments/_whatsapp_widget.html b/pythonpro/launch/templates/launch/_whatsapp_widget.html similarity index 100% rename from pythonpro/payments/templates/payments/_whatsapp_widget.html rename to pythonpro/launch/templates/launch/_whatsapp_widget.html diff --git a/pythonpro/payments/templates/payments/membership_email.txt b/pythonpro/launch/templates/launch/membership_email.txt similarity index 100% rename from pythonpro/payments/templates/payments/membership_email.txt rename to pythonpro/launch/templates/launch/membership_email.txt diff --git a/pythonpro/launch/views.py b/pythonpro/launch/views.py index 28f2086e..fe5d8f0e 100644 --- a/pythonpro/launch/views.py +++ b/pythonpro/launch/views.py @@ -3,13 +3,11 @@ from django.conf import settings from django.shortcuts import redirect, render from django.urls import reverse -from django.utils.http import urlencode from django.views.static import serve from pythonpro.absolute_uri import build_absolute_uri -from pythonpro.cohorts import facade as cohorts_facade from pythonpro.cohorts.facade import find_most_recent_cohort -from pythonpro.domain import user_facade, membership_domain +from pythonpro.domain import user_facade from pythonpro.email_marketing import facade as email_marketing_facade from pythonpro.launch.facade import ( get_launch_status, @@ -173,42 +171,5 @@ def _render_launch_page(is_launch_open, request, template_closed_launch, templat user = request.user if user.is_authenticated: user_facade.visit_member_landing_page(request.user, source=request.GET.get('utm_source', default='unknown')) - notification_url = reverse('payments:membership_notification', kwargs={'user_id': user.id}) - else: - notification_url = reverse('payments:membership_anonymous_notification') - if is_launch_open: - template = template_open_launch - discount = membership_domain.calculate_discount(user) - discount_float = discount / 100 - - price = membership_domain.calculate_membership_price(user) - price_float = price / 100 - full_price_float = price_float + discount_float - price_installment = (price // 10) / 100 - full_price_installment = full_price_float // 10 - login_url = reverse('two_factor:login') - redirect_path = reverse(redirect_path_name) - qs = urlencode({'utm_source': request.GET.get('utm_source', 'unknown')}) - redirect_url = f'{redirect_path}?{qs}' - qs = urlencode({'next': redirect_url}) - login_url = f'{login_url}?{qs}' - return render( - request, - template, - { - 'PAGARME_CRYPTO_KEY': settings.PAGARME_CRYPTO_KEY, - 'price': price, - 'price_float': price_float, - 'price_installment': price_installment, - 'notification_url': request.build_absolute_uri(notification_url), - 'cohort': cohorts_facade.find_most_recent_cohort(), - 'has_discount': discount_float > 0, - 'discount_float': discount_float, - 'full_price_installment': full_price_installment, - 'full_price_float': full_price_float, - 'login_url': login_url, - } - ) - else: - template = template_closed_launch - return render(request, template, {}) + template = template_closed_launch + return render(request, template, {}) diff --git a/pythonpro/payments/__init__.py b/pythonpro/payments/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pythonpro/payments/apps.py b/pythonpro/payments/apps.py deleted file mode 100644 index 0bfdab44..00000000 --- a/pythonpro/payments/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class PaymentsConfig(AppConfig): - name = 'pythonpro.payments' diff --git a/pythonpro/payments/context_processors.py b/pythonpro/payments/context_processors.py deleted file mode 100644 index 220ce892..00000000 --- a/pythonpro/payments/context_processors.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.conf import settings - - -def global_settings(request): - # return any necessary values - return { - 'SUBSCRIPTIONS_OPEN': settings.SUBSCRIPTIONS_OPEN, - 'PAGSEGURO_PAYMENT_PLAN': settings.PAGSEGURO_PAYMENT_PLAN, - } diff --git a/pythonpro/payments/facade.py b/pythonpro/payments/facade.py deleted file mode 100644 index 843e12df..00000000 --- a/pythonpro/payments/facade.py +++ /dev/null @@ -1,109 +0,0 @@ -from datetime import datetime, timedelta -from typing import Tuple - -import pagarme as _pagarme -from dateutil.relativedelta import MO, relativedelta -from django.conf import settings -from django.utils.timezone import now - -_pagarme.authentication_key(settings.PAGARME_API_KEY) - -PYTOOLS_PRICE = 39700 -PYTOOLS_PROMOTION_PRICE = 9700 # flashning launch -PYTOOLS_OTO_PRICE = 9700 # one time offer in python birds thank you page -PYTOOLS_DO_PRICE = 19700 # done offer for people who finished python birds -MEMBERSHIP_PRICE = 159990 -MEMBERSHIP_DISCOUNT_FOR_CLIENTS = 10000 - - -def _discover_pytools_price(user_creation: datetime, item_id=''): - price = PYTOOLS_PRICE - if item_id.startswith('pytools-do'): - price = PYTOOLS_DO_PRICE - elif is_on_pytools_oto_season(user_creation): - price = PYTOOLS_OTO_PRICE - elif is_on_pytools_promotion_season(user_creation): - price = PYTOOLS_PROMOTION_PRICE - - return price - - -class PagarmeValidationException(Exception): - pass - - -class PagarmeNotPaidTransaction(Exception): - pass - - -def membership_capture(price: int, token: str): - amount = _pagarme.transaction.find_by_id(token)['amount'] - if amount < price: - raise PagarmeValidationException(f'Payment done ({amount}) is less then price ({price}) for token: {token}') - return _pagarme.transaction.capture(token, {'amount': amount}) - - -def confirm_membership_boleto_payment(user_id: int, notification: dict, raw_post: str, expected_signature: str) -> dict: - transaction = extract_transaction(notification, raw_post, expected_signature) - item_id = transaction['items'][0]['id'] - # id is generated concatenating Module slug and user's id. Check content_membership_landing_page pagarme JS - expected_id = f'membership-{user_id}' - if item_id != expected_id: - raise PagarmeValidationException(f"Expected item's id {expected_id} differs from {item_id}", notification) - return transaction - - -def extract_transaction(notification: dict, raw_post: str, expected_signature): - if not _pagarme.postback.validate(expected_signature, raw_post): - raise PagarmeValidationException(notification, expected_signature) - if notification['object'] != 'transaction' or notification['current_status'] != 'paid': - raise PagarmeNotPaidTransaction() - return _pagarme.transaction.find_by_id(notification['transaction[id]']) - - -def calculate_pytools_promotion_interval() -> Tuple[datetime, datetime]: - """ - calculate promotion interval for this week based on time. Promotion will begin on monday and stop on Thursday - :return: - """ - now_dt = now() - this_week_monday = now_dt + relativedelta(weekday=MO(-1), hour=0, minute=0, second=0) - this_week_thursday = this_week_monday + relativedelta(days=5, hour=23, minute=59, second=59) - return this_week_monday, this_week_thursday - - -def is_on_pytools_promotion_season(creation: datetime) -> bool: - """ - Calculate if is period of promotion which is 7 weeks after creation - :param creation: datetime of creation - :return: boolean indication if its os promotion period or not - """ - creation_begin, creation_end = calculate_7th_week_before_promotion() - return creation_begin <= creation <= creation_end - - -def calculate_7th_week_before_promotion() -> Tuple[datetime, datetime]: - """ - Calculate 7th week before promotion. Useful to know user created on that period - :return: Tuple where first item is the interval's begin and second is the interval's end - """ - promotion_begin, _ = calculate_pytools_promotion_interval() - creation_begin = promotion_begin + relativedelta(weekday=MO(-8)) - creation_end = creation_begin + relativedelta(days=6, hour=23, minute=59, second=59) - return creation_begin, creation_end - - -def calculate_oto_expires_datetime(user_creation: datetime) -> datetime: - """ - Calculate datetime expiration for OTO pytools offer. - :return: datetime - """ - return user_creation + timedelta(minutes=30) - - -def is_on_pytools_oto_season(user_creation: datetime) -> bool: - """ - Chekc if user is available to receive Pytools OTO. - :return: boolean - """ - return calculate_oto_expires_datetime(user_creation) > now() diff --git a/pythonpro/payments/static/img/Bruno_Rocha.jpg b/pythonpro/payments/static/img/Bruno_Rocha.jpg deleted file mode 100644 index a92a1743052c99ce54223a127f0db1deae7459de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11824 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 diff --git a/pythonpro/payments/static/img/FabioTelles.jpeg b/pythonpro/payments/static/img/FabioTelles.jpeg deleted file mode 100644 index 665a5a5c5eac4f0c1d2c778a9c2c345cc4330e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13026 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 V;uH4ZP`UOC8*pvMyZyQHe*g-dLG=It diff --git a/pythonpro/payments/static/img/fabricio_avatar.jpg b/pythonpro/payments/static/img/fabricio_avatar.jpg deleted file mode 100644 index 217e5babd55367990d5fd3a05138c7779a048aaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13461 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 diff --git a/pythonpro/payments/static/img/moacir.jpg b/pythonpro/payments/static/img/moacir.jpg deleted file mode 100644 index 9310a1069aa70d1f7f50d195db5a3f14739a5df9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98306 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

`=MfQ!Pm)v0_L@ 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 diff --git a/pythonpro/payments/static/js/pagarme-checkout-1.1.0.js b/pythonpro/payments/static/js/pagarme-checkout-1.1.0.js deleted file mode 100644 index 0c5a4aa1..00000000 --- a/pythonpro/payments/static/js/pagarme-checkout-1.1.0.js +++ /dev/null @@ -1 +0,0 @@ -!function(){function t(t){t.readyState?t.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||n()}:t.onload=n}function e(e){var n=document.createElement("script");n.setAttribute("type","text/javascript"),n.setAttribute("src",e),t(n),(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(n)}function n(){c+=1,c==i&&o(window.jQuery.noConflict(!0))}function o(t){easyXDM&&(PagarMeCheckout.easyXDM=easyXDM.noConflict("PagarMeCheckout")),t.isReady?a(t):t(document).ready(a)}function a(t){function e(e){l.container.find("iframe").css({top:t(document).scrollTop(),height:c()})}function n(e){function a(){return!!t("#pagarme-checkout-container > iframe").length}return e&&e.encryption_key?(this.params=e,this.view=o,this.id=n.scriptsCount_++,n.scripts[this.id]=this,void(n.bridge&&a()||(n.bridge=o.create()))):(alert("Encryption key missing."),null)}var o,a=(window.navigator.userAgent,function(){return/(iPad|iPhone).*(Safari\/|Mobile\/)/gi.test(navigator.userAgent)}),i=function(t,e,n){var o;return function(){var a=this,r=arguments,i=function(){o=null,n||t.apply(a,r)},c=n&&!o;clearTimeout(o),o=setTimeout(i,e),c&&t.apply(a,r)}},c=function(){var t=0,e=0;return document.documentElement&&"number"==typeof document.documentElement.clientHeight&&(t=document.documentElement.clientHeight),"number"==typeof window.innerHeight&&(e=window.innerHeight),Math.max(t,e)},s=function(t,e){var o=n.scripts[t];o.success(e)},u=function(t,e){var o=n.scripts[t];o.error(e)},d=function(t){var e=n.scripts[t];e.close()},l={remotePath:"/modal.html",props:{style:{zIndex:9999,background:"transparent",border:"0 none transparent",overflowX:"hidden",overflowY:"auto",margin:0,padding:0,"-webkit-tap-highlight-color":"transparent","-webkit-touch-callout":"none",position:"fixed",left:0,top:0,width:"100%",height:"100%"}},closeModal:function(e,n){return t(document).off("scroll.pgm-checkout"),l.container.hide(),l.container.find("iframe").blur(),!0},openModal:function(){l.container.show(),l.container.find("iframe").focus()},beforeOpen:function(n){a()&&(l.container.find("iframe").css({position:"absolute",height:c(),top:t(document).scrollTop()}),t(document).on("scroll.pgm-checkout",i(e,300))),n&&n()},create:function(){var e=t('

').hide();return t("body").append(e),l.container=e,new PagarMeCheckout.easyXDM.Rpc({remote:r+l.remotePath,container:e.get(0),props:l.props},{local:{closeModal:l.closeModal,submitForm:function(t,e){l.closeModal(),s(t,e)},error:function(t,e){u(t,e)},close:function(t){d(t)}},remote:{config:{},animateIn:{}}})}};o=l,n.scriptsCount_=0,n.scripts={},n.prototype.mapIframeParameters_=function(t){var e={card_brands:"brands"};for(var n in e)t[n]&&(t[e[n]]=t[n],delete t[n])},n.prototype.open=function(t){var e=n.bridge,o=this,a=t;for(var r in this.params)a[r]=this.params[r];this.mapIframeParameters_(a),a.script_id=this.id,this.view.beforeOpen(function(){e.config(a,function(){o.view.openModal(),e.animateIn()})})},n.prototype.close=function(t){this.params.close&&this.params.close.call(this,t)},n.prototype.closeModal=function(){this.view.closeModal()},n.prototype.success=function(t){this.params.success&&this.params.success.call(this,t)},n.prototype.error=function(t){this.params.error&&this.params.error.call(this,t)},window.PagarMeCheckout.Checkout=n;for(var m=function(){var e=t(this).data("checkout"),n=f(t("[data-checkout-id="+t(this).data("script")+"]"));e.open(n)},p=function(){for(var e=t("script"),n=[],o=0;o');return n.click(m),n},y=p(),v=0;v",{name:a,type:"hidden",val:this});o.append(i)}})};e.token||(a="pagarme"),r(e,a),o.submit()}});M=x.id,b.attr("data-checkout-id",M),k.data("script",M),k.data("checkout",x)}}}var r="https://assets.pagar.me/checkout/1.1.0/";!function(t){var e,n,o=[],a={},r=0,i=function(t){return Array.prototype.slice.call(t)},c=function(){u(JSON.stringify({method:"_pending"}))},s=function(){for(var t in a)if(!a[t].responded)return void u(a[t].message)},u=function(t){e.postMessage(t,n)},d=function(){var t,e=i(arguments),n=e.shift();t=e.length&&"function"==typeof e[e.length-1]?e.pop():function(){},r+=1;var o=JSON.stringify({method:n,args:e,id:r});a[r]={message:o,cb:t},u(o)};t.createTransport=function(t,r){return n=r||"*",setInterval(function(){e&&c()},300),window.addEventListener("message",function(e){var n=document.createElement("a"),i=document.createElement("a");if(n.href=r,i.href=e.origin,!r||n.hostname===i.hostname){var c=e.source,u=e.origin,d=JSON.parse(e.data);if("_ack"==d.method)a[d.id]&&(a[d.id].cb(),delete a[d.id]);else if("_pending"==d.method)s();else{if(o.indexOf(d.id)!=-1)return;o.push(d.id),c.postMessage(JSON.stringify({method:"_ack",id:d.id}),u),t[d.method]&&t[d.method].apply(null,d.args)}}}),{callMethod:function(){d.apply(null,arguments)},setSource:function(t){e=t},restart:function(){o=[]}}}}(window);var i=1,c=0;window.PagarMeCheckout=window.PagarMeCheckout||{},window.PagarMeCheckoutLoadedRetail||(window.PagarMeCheckoutLoadedRetail=!0,void 0!==window.jQuery&&"1.10.1"===window.jQuery.version||(i+=1,e("//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js")),"object"!=typeof window.JSON&&(i+=1,e(r+"/json.min.js")),e(r+"/easyXDM.js"))}(); \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/closed_subscriptions.html b/pythonpro/payments/templates/payments/closed_subscriptions.html deleted file mode 100644 index 070d86ef..00000000 --- a/pythonpro/payments/templates/payments/closed_subscriptions.html +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'core/base.html' %} -{% load static %} -{% block title %}Inscrições Encerradas{% endblock %} -{% block body %} -
-
-
-

Inscrições Encerradas

-
-
-
-

Garanta agora sua vaga na próxima turma!

-
-
-
- -
-
- -
- - - -
- -
-
-
-

Cadastre seu email para receber link de inscrição antes de todo mundo.

-
- -
-
-
-{% endblock body %} \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/membership_boleto.html b/pythonpro/payments/templates/payments/membership_boleto.html deleted file mode 100644 index e07217e5..00000000 --- a/pythonpro/payments/templates/payments/membership_boleto.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends 'core/base.html' %} -{% load static %} -{% block title %}Obrigado por se Inscrever{% endblock %} -{% block body %} -
-
-
-

Obrigado por se Inscrever!

-

O código de barras para pagamento do seu boleto é: {{ boleto_barcode }}

-

Você também pode acessar o boleto para impressão: Visualizar Boleto »

-

Se você tiver qualquer dúvida, entre em contato pelo email {{ DEFAULT_FROM_EMAIL }}. -

-

Assim que o sistema identificar o pagamento, mandaremos um email para você. O processo pode demorar - até 3 úteis após o pagamento.

-

Muito obrigado pela confiança em nosso trabalho!

-

Grande abraço,
- Luciano Ramalho e Renzo Nuccitelli

-
-
-
-{% endblock body %} \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/membership_thanks.html b/pythonpro/payments/templates/payments/membership_thanks.html deleted file mode 100644 index 331fa0c4..00000000 --- a/pythonpro/payments/templates/payments/membership_thanks.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends 'core/base.html' %} -{% load static %} -{% block title %}Obrigado por se Inscrever{% endblock %} -{% block body %} -
-
-
-

Obrigado por se Inscrever na Turma {{ cohort.title }}!

-

Confira o calendário de atividades. Nessa página você - também encontrará informações para já começar a conhecer seus amigos de turma e também o link de - nosso badalado grupo do Telegram

-

Se você tiver qualquer dúvida, entre em contato pelo email {{ DEFAULT_FROM_EMAIL }}. -

-

Muito obrigado pela confiança em nosso trabalho!

-

Grande abraço,
- Luciano Ramalho e Renzo Nuccitelli

-
-
-
-{% endblock body %} \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/pytools_boleto.html b/pythonpro/payments/templates/payments/pytools_boleto.html deleted file mode 100644 index 1f8e1afd..00000000 --- a/pythonpro/payments/templates/payments/pytools_boleto.html +++ /dev/null @@ -1,23 +0,0 @@ -{% extends 'core/base.html' %} -{% load static %} -{% block title %}Obrigado por se Inscrever{% endblock %} -{% block body %} -
-
-
-

Obrigado por se Inscrever!

-

O código de barras para pagamento do seu boleto é: {{ boleto_barcode }}

-

Você também pode acessar o boleto para impressão: Visualizar Boleto »

-

Também enviamos os dados do boleto para seu email.

-

Se você tiver qualquer dúvida, entre em contato pelo email {{ DEFAULT_FROM_EMAIL }}. -

-

Assim que o sistema identificar o pagamento, mandaremos um email para você. O processo pode demorar - até 3 úteis após o pagamento.

-

Muito obrigado pela confiança em nosso trabalho!

-

Grande abraço,
- Luciano Ramalho e Renzo Nuccitelli

-
-
-
-{% endblock body %} \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/pytools_boleto_email.txt b/pythonpro/payments/templates/payments/pytools_boleto_email.txt deleted file mode 100644 index 1586e63a..00000000 --- a/pythonpro/payments/templates/payments/pytools_boleto_email.txt +++ /dev/null @@ -1,16 +0,0 @@ -Olá {{ user.first_name }}, - -Parabéns pelo seu comprometimento com sua carreira em tecnologia! - -Abaixo seguem os dados do boleto que vc gerou do curso Pytoos. - -Código de Barras: -{{boleto_barcode}} - -Link do boleto -{{boleto_url}} - -Muito obrigado pelo confiança em nosso trabalho! - -Grande abraço, -Renzo Nuccitelli \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/pytools_email.txt b/pythonpro/payments/templates/payments/pytools_email.txt deleted file mode 100644 index ca7b9255..00000000 --- a/pythonpro/payments/templates/payments/pytools_email.txt +++ /dev/null @@ -1,8 +0,0 @@ -Olá {{ user.first_name }}, - -Recebemos a confirmação de seu pagamento. Acesse {{ ty_url }} para conferir os detalhes. - -Agradecemos imensamente sua confiança em nosso trabalho. - -Grande abraço, -Renzo Nuccitelli \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/pytools_thanks.html b/pythonpro/payments/templates/payments/pytools_thanks.html deleted file mode 100644 index fc5415f9..00000000 --- a/pythonpro/payments/templates/payments/pytools_thanks.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends 'core/base.html' %} -{% load static %} -{% block title %}Obrigado por se Inscrever{% endblock %} -{% block body %} -
-
-
-

Obrigado por se Inscrever!

-

Você agora já consegue acessar todo conteúdo do - módulo PyTools.

-

Se você tiver qualquer dúvida, entre em contato pelo email {{ DEFAULT_FROM_EMAIL }}. -

-

Nas próximas 6 semanas vamos enviar 1 email a cada semana para ajudar você a completar todo módulo. É - importante que você consiga bater as metas semanais.

-

Muito obrigado pela confiança em nosso trabalho!

-

Grande abraço,
- Luciano Ramalho e Renzo Nuccitelli

-
-
-
-{% endblock body %} \ No newline at end of file diff --git a/pythonpro/payments/templates/payments/thanks.html b/pythonpro/payments/templates/payments/thanks.html deleted file mode 100644 index 68959a2d..00000000 --- a/pythonpro/payments/templates/payments/thanks.html +++ /dev/null @@ -1,21 +0,0 @@ -{% extends 'core/base.html' %} -{% load static %} -{% block title %}Obrigado por se Inscrever{% endblock %} -{% block body %} -
-
-
-

Obrigado por se Inscrever!

-

Assim que seu pagamento for confirmado entraremos em contato pelo email que você forneceu ao - Pagseguro.

-

Nós vamos pedir um nome e email para poder cadastrar você na platoforma do curso. Se você preferir - adiantar o processo envie um email para {{ DEFAULT_FROM_EMAIL }} com assunto - "Dados Pessoais" e acrescente seus dados. -

-

Muito obrigado pela confiança em nosso trabalho, será um prazer conhecer você pessoalmente durante o curso!

-

Luciano Ramalho e Renzo Nuccitelli

-
-
-
-{% endblock body %} \ No newline at end of file diff --git a/pythonpro/payments/tests/__init__.py b/pythonpro/payments/tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pythonpro/payments/tests/test_landing_pages.py b/pythonpro/payments/tests/test_landing_pages.py deleted file mode 100644 index 08d8c0de..00000000 --- a/pythonpro/payments/tests/test_landing_pages.py +++ /dev/null @@ -1,19 +0,0 @@ -from django.urls import reverse - - -def test_should_redirect_oto_to_bootcamp_landing_page(client): - resp = client.get(reverse('payments:client_landing_page_oto')) - assert resp.status_code == 302 - assert resp.url == reverse('member_landing_page') - - -def test_should_redirect_do_to_bootcamp_landing_page(client): - resp = client.get(reverse('payments:client_landing_page_do')) - assert resp.status_code == 302 - assert resp.url == reverse('member_landing_page') - - -def test_should_redirect_old_client_lp_to_bootcamp_landing_page(client): - resp = client.get(reverse('payments:client_landing_page')) - assert resp.status_code == 302 - assert resp.url == reverse('member_landing_page') diff --git a/pythonpro/payments/tests/test_pytools_promo.py b/pythonpro/payments/tests/test_pytools_promo.py deleted file mode 100644 index d7eade49..00000000 --- a/pythonpro/payments/tests/test_pytools_promo.py +++ /dev/null @@ -1,92 +0,0 @@ -from datetime import datetime - -import pytest -import pytz -from django.utils import timezone -from freezegun import freeze_time - -from pythonpro.payments.facade import ( - PYTOOLS_DO_PRICE, PYTOOLS_OTO_PRICE, PYTOOLS_PRICE, PYTOOLS_PROMOTION_PRICE, _discover_pytools_price, - calculate_oto_expires_datetime, calculate_pytools_promotion_interval, is_on_pytools_oto_season, - is_on_pytools_promotion_season, -) - - -@pytest.mark.parametrize( - 'now', ['2019-07-{}'.format(day) for day in range(22, 29)] -) -def test_promotion_interval(now): - with freeze_time(now): - begin, end = datetime(2019, 7, 22, 0, 0, 0, tzinfo=pytz.utc), datetime(2019, 7, 27, 23, 59, 59, tzinfo=pytz.utc) - assert (begin, end) == calculate_pytools_promotion_interval() - - -@pytest.mark.parametrize( - 'creation', [datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(3, 10)] # 7 weeks before now -) -def test_in_promotion_period(creation: datetime): - with freeze_time('2019-07-22'): - assert is_on_pytools_promotion_season(creation) - - -@pytest.mark.parametrize( - 'creation', [datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(1, 2)] # 8 weeks before now -) -def test_before_promotion_period(creation: datetime): - with freeze_time('2019-07-22'): - assert not is_on_pytools_promotion_season(creation) - - -@pytest.mark.parametrize( - 'creation', [datetime(2019, 6, day, tzinfo=pytz.utc) for day in range(10, 20)] # 6 weeks before now -) -def test_after_promotion_period(creation: datetime): - with freeze_time('2019-07-22'): - assert not is_on_pytools_promotion_season(creation) - - -@pytest.fixture -def user_creation(): - return timezone.make_aware(datetime(2020, 1, 28, 16, 0, 0)) - - -def test_should_calculate_oto_expires_datetime(user_creation): - generated_date = timezone.make_aware(datetime(2020, 1, 28, 16, 30, 0)) - assert calculate_oto_expires_datetime(user_creation) == generated_date - - -def test_should_check_if_user_is_on_pytools_oto_season_and_return_true(mocker, user_creation): - mocker.patch( - 'pythonpro.payments.facade.now', - return_value=timezone.make_aware(datetime(2020, 1, 28, 16, 29, 59)) - ) - assert is_on_pytools_oto_season(user_creation) is True - - -def test_should_check_if_user_is_on_pytools_oto_season_and_return_false(mocker, user_creation): - mocker.patch( - 'pythonpro.payments.facade.now', - return_value=timezone.make_aware(datetime(2020, 1, 28, 16, 30)) - ) - assert is_on_pytools_oto_season(user_creation) is False - - -def test_should_discover_pytools_oto_price(mocker, user_creation): - mocker.patch('pythonpro.payments.facade.is_on_pytools_oto_season', return_value=True) - assert _discover_pytools_price(user_creation) == PYTOOLS_OTO_PRICE - - -def test_should_discover_pytools_do_price(): - assert _discover_pytools_price(datetime.now(), 'pytools-do') == PYTOOLS_DO_PRICE - - -def test_should_discover_pytools_promotion_price(mocker, user_creation): - mocker.patch('pythonpro.payments.facade.is_on_pytools_oto_season', return_value=False) - mocker.patch('pythonpro.payments.facade.is_on_pytools_promotion_season', return_value=True) - assert _discover_pytools_price(user_creation) == PYTOOLS_PROMOTION_PRICE - - -def test_should_discover_pytools_regular_price(mocker, user_creation): - mocker.patch('pythonpro.payments.facade.is_on_pytools_oto_season', return_value=False) - mocker.patch('pythonpro.payments.facade.is_on_pytools_promotion_season', return_value=False) - assert _discover_pytools_price(user_creation) == PYTOOLS_PRICE diff --git a/pythonpro/payments/urls.py b/pythonpro/payments/urls.py deleted file mode 100644 index aaef4715..00000000 --- a/pythonpro/payments/urls.py +++ /dev/null @@ -1,30 +0,0 @@ -from django.contrib.auth.decorators import login_required -from django.urls import path, reverse_lazy -from django.views.generic import RedirectView - -from pythonpro.payments import views - -app_name = 'payments' -urlpatterns = [ - path('obrigado', views.thanks, name='thanks'), - path('curso-de-python-completo/obrigado', views.membership_thanks, name='membership_thanks'), - path('curso-de-python-completo', login_required(views.old_member_landing_page), name='member_landing_page'), - path('membro-checkout', views.member_checkout, name='member_checkout'), - path('curso-completo/obrigado/', views.membership_thanks, name='membership_thanks'), - # unused pages - path( - 'curso-de-python-intermediario-oto', - RedirectView.as_view(url=reverse_lazy('member_landing_page')), - name='client_landing_page_oto' - ), - path( - 'curso-de-python-intermediario-do', - RedirectView.as_view(url=reverse_lazy('member_landing_page')), - name='client_landing_page_do' - ), - path( - 'curso-de-python-intermediario', - RedirectView.as_view(url=reverse_lazy('member_landing_page')), - name='client_landing_page' - ), -] diff --git a/pythonpro/payments/views.py b/pythonpro/payments/views.py deleted file mode 100644 index ace195fe..00000000 --- a/pythonpro/payments/views.py +++ /dev/null @@ -1,49 +0,0 @@ -from django.contrib.auth.decorators import login_required -from django.http import JsonResponse -from django.shortcuts import render -from django.views.decorators.csrf import csrf_exempt -from django.views.generic import RedirectView - -from pythonpro.cohorts import facade as cohorts_facade -from pythonpro.core.facade import UserRoleException -from pythonpro.domain import user_facade - - -def thanks(request): - return render(request, 'payments/thanks.html') - - -def membership_thanks(request): - return render(request, 'payments/membership_thanks.html', {'cohort': cohorts_facade.find_most_recent_cohort()}) - - -@login_required -@csrf_exempt -def member_checkout(request): - """ - Track user who clicked on client LP Checkout button - :param request: - :return: - """ - if request.method != 'POST': - return - user_facade.click_member_checkout(request.user) - return JsonResponse({'client-checkout': 'ok'}) - - -def _promote_client(user, request): - user_facade.promote_client(user, source=request.GET.get('utm_source', default='unknown')) - - -def _promote_client_and_remove_tag_boleto(user, request): - try: - user_facade.promote_client_and_remove_boleto_tag(user, source=request.GET.get('utm_source', default='unknown')) - except UserRoleException: - pass # No need to handle since user can be a client due to active marketing - - -def _extract_boleto_params(dct): - return {k: dct[k] for k in ['boleto_barcode', 'boleto_url']} - - -old_member_landing_page = RedirectView.as_view(pattern_name='member_landing_page', permanent=True) diff --git a/pythonpro/settings.py b/pythonpro/settings.py index a2b751ba..fa71b7b9 100644 --- a/pythonpro/settings.py +++ b/pythonpro/settings.py @@ -78,7 +78,6 @@ 'pythonpro.core', 'pythonpro.discourse', 'pythonpro.modules', - 'pythonpro.payments', 'pythonpro.cohorts', 'pythonpro.email_marketing', 'pythonpro.dashboard', @@ -148,7 +147,6 @@ 'pythonpro.core.context_processors.global_settings', 'pythonpro.modules.context_processors.global_settings', 'pythonpro.cohorts.context_processors.global_settings', - 'pythonpro.payments.context_processors.global_settings', ], }, }, diff --git a/pythonpro/urls.py b/pythonpro/urls.py index 1d6c7976..d7356548 100644 --- a/pythonpro/urls.py +++ b/pythonpro/urls.py @@ -41,7 +41,6 @@ path('secoes/', include('pythonpro.modules.sections_urls')), path('capitulos/', include('pythonpro.modules.chapters_urls')), path('topicos/', include('pythonpro.modules.topics_urls')), - path('pagamento/', include('pythonpro.payments.urls')), path('turmas/', include('pythonpro.cohorts.urls')), path('dashboard/', include('pythonpro.dashboard.urls')), path('', include(tf_urls)),