Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions contrib/env-sample
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ DISCOURSE_SSO_SECRET=
# Active Campaign Config
ACTIVE_CAMPAIGN_URL=
ACTIVE_CAMPAIGN_KEY=
# Make it False on dev to avoiding sending data to ActiveCampaign
ACTIVE_CAMPAIGN_TURNED_ON=true

# Google Tag Manager Config
GOOGLE_TAG_MANAGER_ID=GTM-ABC1234
Expand Down
8 changes: 8 additions & 0 deletions pythonpro/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,12 @@ def use_db_always(db):
pass


@pytest.fixture(autouse=True)
def turn_active_campaign_on(settings):
"""
This way test don't depend on local .env configuration
"""
settings.ACTIVE_CAMPAIGN_TURNED_ON = True


pytest_plugins = ['pythonpro.modules.tests.test_topics_view']
8 changes: 8 additions & 0 deletions pythonpro/email_marketing/facade.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ def _normalise_id(id):


def _create_or_update(name: str, email: str, role: str, *tags, id='0'):
if settings.ACTIVE_CAMPAIGN_TURNED_ON is False:
return
prospect_list_id = _get_lists()['Prospects']
id = _normalise_id(id)
tags = list(tags)
Expand Down Expand Up @@ -77,6 +79,8 @@ def _find_active_campaign_contact_id(id):


def grant_role(email, id, role: str):
if settings.ACTIVE_CAMPAIGN_TURNED_ON is False:
return
role = role.lower()
if role not in _ROLES:
raise ValueError(f'Role {role} must be one of {_ROLES}')
Expand All @@ -100,6 +104,8 @@ def grant_role(email, id, role: str):


def tag_as(email: str, id: int, *tags):
if settings.ACTIVE_CAMPAIGN_TURNED_ON is False:
return
data = _build_tags_array(tags)
try:
data['id'] = _find_active_campaign_contact_id(id)
Expand All @@ -116,6 +122,8 @@ def _build_tags_array(tags) -> dict:


def remove_tags(email: str, id: int, *tags):
if settings.ACTIVE_CAMPAIGN_TURNED_ON is False:
return
data = _build_tags_array(tags)
try:
data['id'] = _find_active_campaign_contact_id(id)
Expand Down
9 changes: 5 additions & 4 deletions pythonpro/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,19 +147,19 @@
AUTH_PASSWORD_VALIDATORS = [
{
'NAME':
'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.MinimumLengthValidator',
'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.CommonPasswordValidator',
'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.NumericPasswordValidator',
'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]

Expand Down Expand Up @@ -240,6 +240,7 @@
# Active Campaign Configuration
ACTIVE_CAMPAIGN_URL = config('ACTIVE_CAMPAIGN_URL')
ACTIVE_CAMPAIGN_KEY = config('ACTIVE_CAMPAIGN_KEY')
ACTIVE_CAMPAIGN_TURNED_ON = config('ACTIVE_CAMPAIGN_TURNED_ON', cast=bool, default=True)

# Google Tag Manager Configuration
GOOGLE_TAG_MANAGER_ID = config('GOOGLE_TAG_MANAGER_ID')