Skip to content

Commit 301fe2a

Browse files
renzonrenzon
authored andcommitted
Implemented user redirection to memberkit for webinars
close #3845
1 parent 4dcb84c commit 301fe2a

File tree

2 files changed

+37
-41
lines changed

2 files changed

+37
-41
lines changed
Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,56 @@
11
import pytest
22
from django.core.files.uploadedfile import SimpleUploadedFile
33
from django.urls import reverse
4+
from django.utils import timezone
45
from model_bakery import baker
56

67
from pythonpro.cohorts.models import Webinar
78
from pythonpro.cohorts.tests.conftest import img_path
8-
from pythonpro.django_assertions import dj_assert_contains, dj_assert_not_contains
9+
from pythonpro.memberkit.models import Subscription
910

1011

1112
@pytest.fixture
1213
def webinar(cohort) -> Webinar:
1314
image = SimpleUploadedFile(name='renzo-nuccitelli.jpeg', content=open(img_path, 'rb').read(),
1415
content_type='image/png')
15-
return baker.make(Webinar, cohort=cohort, image=image, vimeo_id='1')
16+
return baker.make(Webinar, cohort=cohort, image=image, vimeo_id='1', memberkit_url='https://plataforma.dev.pro.br')
1617

1718

1819
@pytest.fixture
19-
def resp(client_with_level_three_roles, webinar: Webinar):
20-
return client_with_level_three_roles.get(reverse('cohorts:webinar', kwargs={'slug': webinar.slug}))
20+
def resp(client_with_user, webinar: Webinar):
21+
return client_with_user.get(reverse('cohorts:webinar', kwargs={'slug': webinar.slug}))
2122

2223

23-
def test_logged_user(resp):
24-
assert resp.status_code == 200
24+
def test_logged_user(resp, webinar):
25+
assert resp.status_code == 302
26+
assert resp.url == reverse('checkout:bootcamp_lp')
2527

2628

2729
def test_link_unavailable_for_non_users(client):
2830
resp = client.get(reverse('cohorts:webinar', kwargs={'slug': 'foo'}))
2931
assert resp.status_code == 302
3032

3133

32-
@pytest.mark.parametrize('property_name', 'speaker speaker_title title description vimeo_id discourse_topic_id'.split())
33-
def test_basic_contents(resp, webinar, property_name):
34-
dj_assert_contains(resp, getattr(webinar, property_name))
35-
36-
37-
@pytest.fixture
38-
def resp_video_not_recorded(client_with_level_three_roles, webinar: Webinar):
39-
webinar.vimeo_id = ''
40-
webinar.save()
41-
return client_with_level_three_roles.get(reverse('cohorts:webinar', kwargs={'slug': webinar.slug}))
42-
43-
44-
def test_pending_webinar_msg(resp_video_not_recorded):
45-
dj_assert_contains(
46-
resp_video_not_recorded,
47-
'Ainda não temos máquina do tempo, esse webinário ainda não foi gravado'
34+
def test_redirect_user_not_migrated_to_memberkit(client_with_user, webinar, logged_user):
35+
baker.make(
36+
Subscription,
37+
subscriber=logged_user,
38+
activated_at=None,
39+
memberkit_user_id=None
4840
)
49-
50-
51-
def test_vimeo_player_not_present(resp_video_not_recorded):
52-
dj_assert_not_contains(
53-
resp_video_not_recorded,
54-
'src="https://player.vimeo.com/video/"'
41+
resp = client_with_user.get(reverse('cohorts:webinar', kwargs={'slug': webinar.slug}))
42+
assert resp.status_code == 301
43+
assert resp.url == reverse('migrate_to_memberkit')
44+
45+
46+
def test_python_birds_migrated_user(client_with_user, webinar, logged_user):
47+
baker.make(
48+
Subscription,
49+
status=Subscription.Status.ACTIVE,
50+
subscriber=logged_user,
51+
activated_at=timezone.now(),
52+
memberkit_user_id=1
5553
)
56-
57-
58-
@pytest.fixture
59-
def resp_not_level_three(client_with_not_level_three_roles, webinar: Webinar, logged_user):
60-
return client_with_not_level_three_roles.get(reverse('cohorts:webinar', kwargs={'slug': webinar.slug}))
61-
62-
63-
def test_webinar_landing_for_client(cohort, resp_not_level_three):
64-
assert resp_not_level_three.status_code == 302
65-
assert resp_not_level_three.url == reverse('checkout:bootcamp_lp')
54+
resp = client_with_user.get(reverse('cohorts:webinar', kwargs={'slug': webinar.slug}))
55+
assert resp.status_code == 301
56+
assert resp.url == webinar.memberkit_url

pythonpro/cohorts/views.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from pythonpro.cohorts import facade
77
from pythonpro.core.roles import access_cohorts
8+
from pythonpro.memberkit import facade as memberkit_facade
89

910

1011
@login_required
@@ -19,9 +20,13 @@ def webinars(request):
1920

2021
@login_required
2122
def webinar(request, slug):
22-
if not has_permission(request.user, access_cohorts):
23-
return redirect(reverse('checkout:bootcamp_lp'), permanent=False)
24-
return render(request, 'cohorts/webinar_detail.html', {'webinar': facade.find_webinar(slug=slug)})
23+
user = request.user
24+
if memberkit_facade.has_memberkit_account(user):
25+
webinar = facade.find_webinar(slug=slug)
26+
return redirect(webinar.memberkit_url, permanent=True)
27+
if memberkit_facade.has_any_subscription(user):
28+
return redirect(reverse('migrate_to_memberkit'), permanent=True)
29+
return redirect(reverse('checkout:bootcamp_lp'), permanent=False)
2530

2631

2732
@login_required

0 commit comments

Comments
 (0)