Skip to content

Commit c15ae11

Browse files
renzonrenzon
authored andcommitted
Created launch subscription
close #1550
1 parent a945be0 commit c15ae11

File tree

21 files changed

+554
-24
lines changed

21 files changed

+554
-24
lines changed

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: "3.3"
33
services:
44
database:
55
container_name: pythonpro_database
6-
image: postgres
6+
image: postgres:11.5
77
restart: always
88
volumes:
99
- ./.pgdata:/var/lib/postgresql/data

pythonpro/core/facade.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,14 @@ def visit_client_landing_page(user: User, source: str):
117117
return UserInteraction(category=UserInteraction.CLIENT_LP, source=source, user=user).save()
118118

119119

120+
def visit_launch_landing_page(user: User, source: str):
121+
return UserInteraction(category=UserInteraction.LAUNCH_LP, source=source, user=user).save()
122+
123+
124+
def subscribe_to_launch(user: User, source: str):
125+
return UserInteraction(category=UserInteraction.LAUNCH_SUBSCRIPTION, source=source, user=user).save()
126+
127+
120128
def find_leads_by_date_joined_interval(begin: datetime, end: datetime):
121129
return list(user for user in User.objects.filter(date_joined__gte=begin, date_joined__lte=end).all() if
122130
not has_role(user, ['client', 'member']))

pythonpro/core/models.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ class Meta:
8888
MEMBER_BOLETO = 'MEMBER_BOLETO'
8989
WAITING_LIST = 'WAITING_LIST'
9090
BECOME_MEMBER = 'BECOME_MEMBER'
91+
LAUNCH_LP = 'LAUNCH_LP'
92+
LAUNCH_SUBSCRIPTION = 'LAUNCH_SUBSCRIPTION'
93+
9194
user = models.ForeignKey(User, on_delete=models.CASCADE)
9295
creation = models.DateTimeField(auto_now_add=True)
9396
category = models.CharField(
@@ -104,7 +107,9 @@ class Meta:
104107
(MEMBER_CHECKOUT, 'User clicked on Member checkout Button'),
105108
(MEMBER_BOLETO, 'User generate Member Boleto'),
106109
(WAITING_LIST, 'User subscribed to Waiting List'),
107-
(BECOME_MEMBER, 'User Become Member')
110+
(BECOME_MEMBER, 'User Become Member'),
111+
(LAUNCH_LP, 'User visited Launch Landing Page'),
112+
(LAUNCH_SUBSCRIPTION, 'User subscribed to launch'),
108113
)
109114
)
110115
)
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
1-
<form method="post" action="{% url 'core:lead_form' %}{% if request.GET.utm_source %}?utm_source={{ request.GET.utm_source }}{% endif %}">
1+
<form method="post" action="
2+
{% url 'core:lead_form' %}{% if request.GET.utm_source %}?utm_source={{ request.GET.utm_source }}{% endif %}">
23
{% csrf_token %}
34
<div class="form-group">
45
<label for="{{ form.first_name.id_for_label }}">{{ form.first_name.label_tag }}</label>
56
<input type="text" name="{{ form.first_name.html_name }}" class="form-control"
6-
autofocus="" maxlength="{{ form.first_name.max_length }}"
7+
maxlength="{{ form.first_name.max_length }}"
78
required="required" id="{{ form.first_name.id_for_label }}">
89
</div>
910
<div class="form-group">
1011
<label for="{{ form.email.id_for_label }}">{{ form.email.label_tag }}</label>
1112
<input type="email" name="{{ form.email.html_name }}" class="form-control"
13+
value="{{ form.email.value }}"
1214
maxlength="{{ form.email.max_length }}"
1315
required="required" id="{{ form.email.id_for_label }}">
1416
</div>
15-
<button class="btn btn-warning">SIM! Quero Receber o <span class="font-weight-bold"><u>CURSO GRÁTIS</u></span> &raquo;</button>
17+
<button class="btn btn-warning">SIM! Quero Receber o <span class="font-weight-bold"><u>CURSO GRÁTIS</u></span>
18+
&raquo;
19+
</button>
1620
</form>

pythonpro/core/views.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,15 @@ def lead_landing(request):
126126
return render(request, 'core/lead_landing_page.html', context={'form': UserSignupForm()})
127127

128128

129+
def programmer_week_ty(request):
130+
"""
131+
View with lead landing page
132+
:param request:
133+
:return:
134+
"""
135+
return render(request, 'core/lead_landing_page.html', context={'form': UserSignupForm()})
136+
137+
129138
def lead_form(request):
130139
if request.method == 'GET':
131140
form = UserSignupForm()

pythonpro/domain/user_facade.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ def visit_client_landing_page(user: _User, source: str) -> None:
221221

222222
def visit_member_landing_page(user, source):
223223
"""
224-
Marke user as visited member landing page
224+
Mark user as visited member landing page
225225
:param source: string containing source of traffic
226226
:param user:
227227
:return:
@@ -233,6 +233,26 @@ def visit_member_landing_page(user, source):
233233
pass # Ok not handling, probably invalid email
234234

235235

236+
def visit_launch_landing_page(user, source):
237+
"""
238+
Mark user as visited launch landing page
239+
:param source: string containing source of traffic
240+
:param user:
241+
:return:
242+
"""
243+
_core_facade.visit_launch_landing_page(user, source)
244+
245+
246+
def subscribe_launch_landing_page(user, source):
247+
"""
248+
Mark user as subscribed to launch
249+
:param source: string containing source of traffic
250+
:param user:
251+
:return:
252+
"""
253+
_core_facade.subscribe_to_launch(user, source)
254+
255+
236256
def click_member_checkout(user):
237257
"""
238258
Mark user as visited client landing page

pythonpro/launch/__init__.py

Whitespace-only changes.

pythonpro/launch/apps.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django.apps import AppConfig
2+
3+
4+
class LaunchConfig(AppConfig):
5+
name = 'pythonpro.launch'

pythonpro/launch/forms.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django import forms
2+
3+
4+
class LeadForm(forms.Form):
5+
email = forms.EmailField(required=True)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{% extends 'launch/landing_page.html' %}
2+
{% load static %}
3+
{% block form %}
4+
<form method="post" action="{% url 'launch:lead_form' %}">
5+
{% csrf_token %}
6+
<div class="form-group form-row justify-content-md-center">
7+
<div class="col-md-4 col-md text-left">
8+
<label class="text-white" for="{{ form.email.id_for_label }}">{{ form.email.label_tag }}</label>
9+
<input type="email" name="{{ form.email.html_name }}"
10+
class="form-control text-white{% if form.email.errors %} is-invalid{% endif %}"
11+
value="{{ form.email.value }}" autofocus="" maxlength="{{ form.email.max_length }}"
12+
required="required" id="{{ form.email.id_for_label }}" placeholder="Digite seu Email">
13+
{% if form.email.errors %}
14+
<div class="invalid-feedback">
15+
{{ form.email.errors }}
16+
</div>
17+
{% else %}
18+
<br/>
19+
{% endif %}
20+
21+
<button type="submit" class="btn btn-lg btn-warning btn-block">Sim, quero programar &raquo;
22+
</button>
23+
</div>
24+
</div>
25+
</form>
26+
{% endblock form %}

0 commit comments

Comments
 (0)