Skip to content

Commit

Permalink
Add Referral model.
Browse files Browse the repository at this point in the history
Fixes #397
  • Loading branch information
mblayman committed May 27, 2021
1 parent deed44c commit 5f7edfe
Show file tree
Hide file tree
Showing 13 changed files with 131 additions and 0 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ graph:
core \
courses \
notifications \
referrals \
schools \
students \
users \
Expand Down
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ Measurement criteria:
| Google Classroom | Free | $0 | 3/12/21 |
| Homeschool Manager | Subscription | $5.99 / month | 3/13/21 |
| Homeschool Minder | Subscription | $4.99 / month | 5/3/21 |
| Homeschool Planet | Subscription | $7.95 / month | 5/20/21 |

### Charlotte Mason Organizer

Expand Down Expand Up @@ -295,6 +296,32 @@ Forum topics:

https://homeschoolplanet.com/

"Synchronize your home, school, and work into a single place"

* Landing page
* Email list capture
* Pricing
* 30 day trial
* $69.95 / year
* $7.95 / month
* Social Media
* Heavy activity on Facebook (at least daily)
* Pinterest
* YouTube to host help docs
* Instagram
* Blog (infrequent posts - handful per year, guest posts)
* Marketplace
* Other vendors provide lesson plans
* Features
* Daily digest email
* Text messaging
* Widgets with the calendar
* Testimonials
* User reviews (but they are old! 2017!)
* Featured reviews (appear "fresh" from 2019, but are recycled old reviews),
seems shady
* Lots of undated testimonials (current user reviews?)

Forum topics:

* https://forums.welltrainedmind.com/topic/701712-best-family-calendarorganizer-app/ compat with Google Calendar
Expand Down
Empty file.
10 changes: 10 additions & 0 deletions homeschool/referrals/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.contrib import admin

from .models import Referral


@admin.register(Referral)
class ReferralAdmin(admin.ModelAdmin):
list_display = ("id", "referring_user", "status")
list_filter = ("status",)
raw_id_fields = ("referring_user",)
6 changes: 6 additions & 0 deletions homeschool/referrals/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class ReferralsConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "homeschool.referrals"
49 changes: 49 additions & 0 deletions homeschool/referrals/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Generated by Django 3.2 on 2021-05-27 01:54

import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [migrations.swappable_dependency(settings.AUTH_USER_MODEL)]

operations = [
migrations.CreateModel(
name="Referral",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateField(default=django.utils.timezone.localdate),
),
(
"status",
models.IntegerField(
choices=[(1, "Pending"), (2, "Sent"), (3, "Converted")],
default=1,
),
),
(
"referring_user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="referrals",
to=settings.AUTH_USER_MODEL,
),
),
],
)
]
Empty file.
18 changes: 18 additions & 0 deletions homeschool/referrals/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from django.conf import settings
from django.db import models
from django.utils import timezone


class Referral(models.Model):
"""A referral allows customers to share School Desk with others"""

class Status(models.IntegerChoices):
PENDING = 1
SENT = 2
CONVERTED = 3

referring_user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="referrals"
)
created_at = models.DateField(default=timezone.localdate)
status = models.IntegerField(choices=Status.choices, default=Status.PENDING)
Empty file.
8 changes: 8 additions & 0 deletions homeschool/referrals/tests/factories.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import factory


class ReferralFactory(factory.django.DjangoModelFactory):
class Meta:
model = "referrals.Referral"

referring_user = factory.SubFactory("homeschool.users.tests.factories.UserFactory")
11 changes: 11 additions & 0 deletions homeschool/referrals/tests/test_models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from homeschool.referrals.tests.factories import ReferralFactory
from homeschool.test import TestCase


class TestReferral(TestCase):
def test_factory(self):
referral = ReferralFactory()

assert referral.referring_user is not None
assert referral.created_at is not None
assert referral.status == referral.Status.PENDING
Empty file added homeschool/referrals/views.py
Empty file.
1 change: 1 addition & 0 deletions project/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
"homeschool.core",
"homeschool.courses",
"homeschool.notifications",
"homeschool.referrals",
"homeschool.schools",
"homeschool.students",
"homeschool.users",
Expand Down

0 comments on commit 5f7edfe

Please sign in to comment.