-
Notifications
You must be signed in to change notification settings - Fork 61
Expand file tree
/
Copy pathviews.py
More file actions
170 lines (141 loc) · 6.07 KB
/
views.py
File metadata and controls
170 lines (141 loc) · 6.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import os
from django.conf import settings
from django.shortcuts import redirect, render
from django.urls import reverse
from django.views.static import serve
from pythonpro.absolute_uri import build_absolute_uri
from pythonpro.cohorts.facade import find_most_recent_cohort
from pythonpro.domain import user_domain
from pythonpro.email_marketing.facade import create_or_update_with_no_role
from pythonpro.launch.facade import (
get_launch_status,
get_opened_cpls,
LAUNCH_STATUS_OPEN_CART,
LAUNCH_STATUS_PPL
)
from pythonpro.launch.forms import LeadForm
def landing_page(request):
user = request.user
launch_status = get_launch_status()
if launch_status == LAUNCH_STATUS_OPEN_CART and not request.GET.get('debug'):
return redirect(reverse('checkout:bootcamp_lp'))
if user.is_authenticated:
form = LeadForm({'email': user.email})
user_domain.visit_launch_landing_page(user, request.GET.get('utm_source', 'unknown'))
else:
form = LeadForm()
return render(request, 'launch/landing_page.html', {'form': form})
def lead_form(request):
form = LeadForm(request.POST)
if not form.is_valid():
return render(request, 'launch/form.html', {'form': form}, status=400)
email = form.cleaned_data['email']
first_name = form.cleaned_data['name']
user = request.user
if user.is_authenticated:
create_or_update_with_no_role.delay(
first_name,
email,
f'turma-{find_most_recent_cohort().slug}-semana-do-programador', id=user.id)
else:
create_or_update_with_no_role.delay(
first_name,
email,
f'turma-{find_most_recent_cohort().slug}-semana-do-programador')
return redirect(reverse('launch:ty'))
def ty(request):
user = request.user
if user.is_authenticated:
user_domain.subscribe_launch_landing_page(user, request.GET.get('utm_source', 'unknown'))
return render(request, 'launch/ty.html')
def cpl1(request):
user = request.user
visit_function = user_domain.visit_cpl1
video_id = 'Rwt6wYrDeYY'
video_id_next_class = 'WK1sCtvGjBU'
description = (
'Nesta aula você você vai aprender como instalar o Python em seu sistema operacional, '
'editar código e fazer pequenos testes no console.'
)
title = 'AULA #1: Tudo o que você precisa para começar a programar'
return _render_cpl(
description, request, title, user, video_id, visit_function, video_id_next_class
)
def cpl2(request):
user = request.user
visit_function = user_domain.visit_cpl2
video_id = 'WK1sCtvGjBU'
video_id_next_class = 'ADhQ7H8-hxw'
title = 'AULA #2: Os Fundamentos da PROGRAMAÇÃO PROCEDURAL'
description = (
'Nesta aula você vai aprender programação procedural. Esse paradigma consiste em'
' você definir a resolução de um problema, passo a passo, de forma linear. Funci'
'ona como uma receita culinária, onde cada etapa é definida exatamente uma depoi'
's da outra.'
)
return _render_cpl(
description, request, title, user, video_id, visit_function, video_id_next_class
)
def cpl3(request):
user = request.user
visit_function = user_domain.visit_cpl3
video_id = 'ADhQ7H8-hxw'
video_id_next_class = 'QNo7gS_dsUw'
title = 'AULA #3: Descobrindo o Mundo da ORIENTAÇÃO A OBJETO'
description = (
'Depois de aprender o paradigma procedural na seção anterior chega hora de conhecer '
'outro: a Orientação a Objetos (OO). Você vai aprender sobre classes e seus componen'
'tes, herança e utilizar esses conceitos para implementar o jogo Python Birds. Como '
'toda mudança de paradigma, demora um tempo para se acostumar, mas é importante apre'
'nder bem OO porque ela utilizada em inúmeras bibliotecas e frameworks.'
)
return _render_cpl(
description, request, title, user, video_id, visit_function, video_id_next_class
)
def cpl4(request):
user = request.user
visit_function = user_domain.visit_cpl3
video_id = 'QNo7gS_dsUw'
title = 'AULA #4: Voando com Python + Resumão'
description = (
'Por fim, vamos ver o nosso projeto funcionando! Além disso, nesta aula vamos fazer um '
'resumão e te explicar tudo sobre as matrículas do Bootcamp Dev Pro'
)
return _render_cpl(description, request, title, user, video_id, visit_function, video_id)
def _render_cpl(description, request, title, user, video_id, visit_function, video_id_next_class=None):
if user.is_authenticated:
visit_function(user, request.GET.get('utm_source', 'unknown'))
launch_status = get_launch_status()
if launch_status == LAUNCH_STATUS_PPL and not request.GET.get('debug'):
return redirect(reverse('launch:landing_page'))
if launch_status == LAUNCH_STATUS_OPEN_CART and not request.GET.get('debug'):
return redirect(reverse('checkout:bootcamp_lp'))
ctx = {
'data_href': f'https://{build_absolute_uri(request.path)}',
'video_id': video_id,
'video_id_next_class': video_id_next_class,
'title': title,
'description': description,
'launch_status': launch_status,
'opened_cpls': get_opened_cpls(),
'DEBUG': settings.DEBUG,
}
return render(request, 'launch/cpl.html', ctx)
def onesignal_sdk_worker(request):
return serve(
request,
'js/spp/OneSignalSDKWorker.js',
document_root=os.path.join(settings.BASE_DIR, 'pythonpro', 'core', 'static')
)
def onesignal_sdk_updater_worker(request):
return serve(
request,
'js/spp/OneSignalSDUpdaterKWorker.js',
document_root=os.path.join(settings.BASE_DIR, 'pythonpro', 'core', 'static')
)
def _render_launch_page(is_launch_open, request, template_closed_launch, template_open_launch, redirect_path_name: str):
user = request.user
if user.is_authenticated:
user_domain.visit_member_landing_page(request.user, source=request.GET.get('utm_source', default='unknown'))
template = template_closed_launch
return render(request, template, {})