Skip to content

Commit

Permalink
Merge branch 'v2-flow-iterations-jan'
Browse files Browse the repository at this point in the history
  • Loading branch information
janbaykara committed Jan 17, 2024
2 parents 18b0b8e + 614fde9 commit c4bbcb7
Show file tree
Hide file tree
Showing 33 changed files with 2,685 additions and 1,945 deletions.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ repos:
args: [--lint]

- repo: https://github.com/pycqa/isort
rev: 5.10.1
rev: 5.13.2
hooks:
# Sort ordering of python imports
- id: isort
Expand Down
9 changes: 5 additions & 4 deletions app/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,21 @@ class UserResource(resources.ModelResource):
class Meta:
model = models.User

algo_prefix = "bcrypt$"

def before_import_row(self, row, *args, **kwargs):
if "id" in row:
row["old_id"] = row["id"]
row.pop("id", None)

algo_prefix = "bcrypt$"
if "password" in row and algo_prefix not in row["password"]:
row["password"] = algo_prefix + row["password"]
if "password" in row and self.algo_prefix not in row["password"]:
row["password"] = self.algo_prefix + row["password"]

if "username" not in row:
row["username"] = row["email"]

if "country" in row:
countries = pycountry.countries.search_fuzzy(row["country"])
countries = pycountry.countries.search_fuzzy(str(row["country"]))
if len(countries) > 0:
row["country"] = countries[0].alpha_2
else:
Expand Down
8 changes: 4 additions & 4 deletions app/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -719,13 +719,13 @@ def process_request(self, *args, **kwargs):
### V2 flow forms


class SelectDeliveriesForm(forms.Form):
delivery_plan_id = forms.CharField(widget=forms.HiddenInput)
class SelectReadingSpeedForm(forms.Form):
reading_option_id = forms.CharField(widget=forms.HiddenInput)


class SelectSyllabusForm(forms.Form):
syllabus_id = forms.CharField(widget=forms.HiddenInput)
membership_plan_id = forms.CharField(widget=forms.HiddenInput)


class SelectPaymentPlanForm(forms.Form):
payment_plan_id = forms.CharField(widget=forms.HiddenInput)
membership_plan_price = forms.CharField(widget=forms.HiddenInput)
23 changes: 23 additions & 0 deletions app/middleware.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
import json
from urllib.parse import unquote

import posthog
from django.conf import settings


def frontend_backend_posthog_identity_linking(get_response):
def middleware(request):
posthog_cookie = request.COOKIES.get(f"ph_{posthog.project_api_key}_posthog")
if posthog_cookie:
cookie_dict = json.loads(unquote(posthog_cookie))
if cookie_dict["distinct_id"] and request.user.is_authenticated:
posthog.alias(cookie_dict["distinct_id"], request.user.primary_email)

if request.session.session_key is not None and request.user.is_authenticated:
posthog.alias(request.session.session_key, request.user.primary_email)
posthog.alias(request.session.session_key, request.user.id)

response = get_response(request)

return response

return middleware


def update_stripe_customer_subscription(get_response):
# One-time configuration and initialization.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Generated by Django 4.2 on 2024-01-15 16:51

import django.db.models.deletion
import modelcluster.fields
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("app", "0072_alter_customimage_file_alter_imagerendition_file_and_more"),
]

operations = [
migrations.CreateModel(
name="ReadingOption",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"sort_order",
models.IntegerField(blank=True, editable=False, null=True),
),
("title", models.CharField(blank=True, max_length=150, null=True)),
(
"description",
wagtail.fields.RichTextField(
blank=True,
help_text="Bullet points will appear as ticks.",
null=True,
),
),
(
"interval",
models.CharField(
blank=True,
choices=[
("year", "Year"),
("month", "Month"),
("week", "Week"),
("day", "Day"),
],
default="month",
max_length=10,
),
),
("interval_count", models.IntegerField(blank=True, default=1)),
(
"banner_image",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="app.customimage",
),
),
],
options={
"ordering": ["sort_order"],
"abstract": False,
},
),
migrations.RemoveField(
model_name="membershipplanpage",
name="syllabi",
),
migrations.DeleteModel(
name="SyllabusPage",
),
migrations.AddField(
model_name="readingoption",
name="plans",
field=modelcluster.fields.ParentalManyToManyField(
help_text="The plans available under this option",
related_name="plans",
to="app.membershipplanpage",
),
),
]
28 changes: 28 additions & 0 deletions app/migrations/0074_membershipplanpage_book_types.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 4.2 on 2024-01-16 12:49

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("app", "0073_readingoption_remove_membershipplanpage_syllabi_and_more"),
]

operations = [
migrations.AddField(
model_name="membershipplanpage",
name="book_types",
field=models.CharField(
blank=True,
choices=[
("classic", "classic"),
("contemporary", "contemporary"),
("all-books", "all-books"),
],
help_text="Which types of books are included in this plan? Used for displaying things.",
max_length=150,
null=True,
),
),
]
30 changes: 30 additions & 0 deletions app/migrations/0075_alter_membershipplanprice_products_and_more.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by Django 4.2 on 2024-01-16 13:02

import modelcluster.fields
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("app", "0074_membershipplanpage_book_types"),
]

operations = [
migrations.AlterField(
model_name="membershipplanprice",
name="products",
field=modelcluster.fields.ParentalManyToManyField(
blank=True,
help_text="The stripe product that the user will be subscribed to.",
to="app.lbcproduct",
verbose_name="Stripe product",
),
),
migrations.AlterField(
model_name="readingoption",
name="title",
field=models.CharField(default="", max_length=150),
preserve_default=False,
),
]
28 changes: 28 additions & 0 deletions app/migrations/0076_remove_membershipplanpage_benefits_and_more.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 4.2 on 2024-01-16 14:56

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("app", "0075_alter_membershipplanprice_products_and_more"),
]

operations = [
migrations.RemoveField(
model_name="membershipplanpage",
name="benefits",
),
migrations.RemoveField(
model_name="membershipplanprice",
name="benefits",
),
migrations.AlterField(
model_name="readingoption",
name="title",
field=models.CharField(
help_text="Visible to potential customers", max_length=150
),
),
]
25 changes: 25 additions & 0 deletions app/migrations/0077_membershipplanpage_product_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 4.2 on 2024-01-16 15:22

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("app", "0076_remove_membershipplanpage_benefits_and_more"),
]

operations = [
migrations.AddField(
model_name="membershipplanpage",
name="product_image",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="app.customimage",
),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Generated by Django 4.2 on 2024-01-16 15:37

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("app", "0077_membershipplanpage_product_image"),
]

operations = [
migrations.AddField(
model_name="membershipplanpage",
name="background_image",
field=models.ForeignKey(
blank=True,
help_text="1400 x 1024 optimal resolution.",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="app.customimage",
),
),
migrations.AlterField(
model_name="membershipplanpage",
name="product_image",
field=models.ForeignKey(
blank=True,
help_text="600 x 300 optimal resolution.",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="app.customimage",
),
),
]
18 changes: 18 additions & 0 deletions app/migrations/0079_membershipplanprice_skip_donation_ask.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2 on 2024-01-16 16:37

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("app", "0078_membershipplanpage_background_image_and_more"),
]

operations = [
migrations.AddField(
model_name="membershipplanprice",
name="skip_donation_ask",
field=models.BooleanField(blank=True, default=False, null=True),
),
]
Loading

0 comments on commit c4bbcb7

Please sign in to comment.