Select a featured player from at least two teams.
+ )}
+ {picks.map((pick) => (
+
+ {isTabletOrMobile && scrollToBottomButtonVisible && (
+
+ )}
+
+ Lobby
+
+
+
+
+ You created your own slip!
+
+
+
+ Congratulations, now share it with the world and earn a
+ share of their profits.
+
+
+
+ {`https://www.underlinefantasy.com/${username}`}
+
+
+
+
+
+
+
+
setErrorModalVisible({ open: false })}
+ open={errorModalVisible.open}
+ size="small"
+ >
+
+
+ {errorModalVisible.header}
+
+
+ {errorModalVisible.message}
+
+
+
+
+
+
setInsufficentFundsModalVisible(false)}
+ open={insufficientFundsModalVisible}
+ size="small"
+ >
+
+
+
+ You do not have enough funds in your wallet to make this
+ slip. Please click 'Deposit' below to fix this.
+
+
+
+
+
+
+
+
setConfirmationModalVisible(false)}
+ open={confirmationModalVisible}
+ size="small"
+ >
+
+
+ Once confirmed, your selections are locked.
+
+
+
+
+
+
+
+
+
+
+
+
+ {isTabletOrMobile && (
+ <>
+
+ >
+ )}
+
+
+ {!isTabletOrMobile && (
+ <>
+
+ >
+ )}
+
+
+
+
+ )
+}
+
+export default Creator
diff --git a/server/accounts/migrations/0011_user_creator.py b/server/accounts/migrations/0011_user_creator.py
new file mode 100644
index 0000000..c5e1058
--- /dev/null
+++ b/server/accounts/migrations/0011_user_creator.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.1.6 on 2021-06-09 11:58
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('accounts', '0010_user_current_creator_slip'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='user',
+ name='creator',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/server/accounts/models.py b/server/accounts/models.py
index 8851520..7cb70ec 100755
--- a/server/accounts/models.py
+++ b/server/accounts/models.py
@@ -89,10 +89,14 @@ class User(AbstractBaseUser, PermissionsMixin):
wallet_balance = models.DecimalField(max_digits=6, decimal_places=2, default=0)
free_to_play = models.BooleanField(default=False)
username = models.CharField(max_length=32, blank=True, null=True, unique=True)
+
+ # used?
current_creator_slip = models.ForeignKey(
"core.Slip", blank=True, null=True, on_delete=models.CASCADE
)
+ creator = models.BooleanField(default=False)
+
# Add additional fields here if needed
objects = UserManager()
USERNAME_FIELD = "email"
diff --git a/server/core/admin.py b/server/core/admin.py
index 93b734d..3870ba3 100755
--- a/server/core/admin.py
+++ b/server/core/admin.py
@@ -38,6 +38,8 @@
Pick,
Deposit,
LineCategory,
+ Movement,
+ SubMovement,
)
@@ -331,10 +333,28 @@ def has_change_permission(self, request, obj=None):
return False
+class SubMovementTabularInline(admin.TabularInline):
+ list_display = [
+ field.name for field in SubMovement._meta.fields if field.name != "id"
+ ]
+ model = SubMovement
+ extra = 0
+
+
+class MovementAdmin(admin.ModelAdmin):
+ inlines = [
+ SubMovementTabularInline,
+ ]
+
+ class Meta:
+ model = Movement
+
+
admin.site.register(Team, TeamAdmin)
# Register your models here.
admin.site.register(League)
+admin.site.register(Movement, MovementAdmin)
admin.site.register(Slip, SlipAdmin)
admin.site.register(FreeToPlaySlip, FreeToPlaySlipsAdmin)
admin.site.register(PaidSlip, PaidSlipAdmin)
diff --git a/server/core/migrations/0015_auto_20210609_0448.py b/server/core/migrations/0015_auto_20210609_0448.py
new file mode 100644
index 0000000..bb6d0fa
--- /dev/null
+++ b/server/core/migrations/0015_auto_20210609_0448.py
@@ -0,0 +1,30 @@
+# Generated by Django 3.1.6 on 2021-06-09 11:48
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('core', '0014_auto_20210602_1450'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Movement',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('date', models.DateField()),
+ ('swing', models.DecimalField(decimal_places=2, default=0, max_digits=6)),
+ ('cap', models.IntegerField()),
+ ('datetime_created', models.DateTimeField(auto_now_add=True)),
+ ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.linecategory')),
+ ],
+ ),
+ migrations.AddField(
+ model_name='subline',
+ name='movement',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.movement'),
+ ),
+ ]
diff --git a/server/core/migrations/0016_auto_20210609_0549.py b/server/core/migrations/0016_auto_20210609_0549.py
new file mode 100644
index 0000000..81c8d0f
--- /dev/null
+++ b/server/core/migrations/0016_auto_20210609_0549.py
@@ -0,0 +1,32 @@
+# Generated by Django 3.1.6 on 2021-06-09 12:49
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('core', '0015_auto_20210609_0448'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='movement',
+ name='category',
+ ),
+ migrations.RemoveField(
+ model_name='movement',
+ name='swing',
+ ),
+ migrations.CreateModel(
+ name='SubMovement',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('swing', models.DecimalField(decimal_places=2, default=0, max_digits=6)),
+ ('datetime_created', models.DateTimeField(auto_now_add=True)),
+ ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.linecategory')),
+ ('movement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.movement')),
+ ],
+ ),
+ ]
diff --git a/server/core/migrations/0017_submovement_minimum.py b/server/core/migrations/0017_submovement_minimum.py
new file mode 100644
index 0000000..6cfab97
--- /dev/null
+++ b/server/core/migrations/0017_submovement_minimum.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.1.6 on 2021-06-09 13:26
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('core', '0016_auto_20210609_0549'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='submovement',
+ name='minimum',
+ field=models.DecimalField(decimal_places=2, default=0, max_digits=6),
+ ),
+ ]
diff --git a/server/core/models.py b/server/core/models.py
index 6ac6887..814e00f 100755
--- a/server/core/models.py
+++ b/server/core/models.py
@@ -112,6 +112,20 @@ def game_date(self):
game_date.short_description = "Game date PST"
+class Movement(models.Model):
+ date = models.DateField()
+ cap = models.IntegerField()
+ datetime_created = models.DateTimeField(auto_now_add=True)
+
+
+class SubMovement(models.Model):
+ category = models.ForeignKey(LineCategory, on_delete=models.CASCADE)
+ swing = models.DecimalField(max_digits=6, decimal_places=2, default=0)
+ minimum = models.DecimalField(max_digits=6, decimal_places=2, default=0)
+ datetime_created = models.DateTimeField(auto_now_add=True)
+ movement = models.ForeignKey(Movement, on_delete=models.CASCADE)
+
+
class Subline(models.Model):
line = models.ForeignKey(Line, on_delete=models.CASCADE)
projected_value = models.DecimalField(
@@ -121,6 +135,8 @@ class Subline(models.Model):
# Visible in lobby
visible = models.BooleanField(default=True)
+ movement = models.ForeignKey(Movement, on_delete=models.CASCADE, null=True)
+
def __str__(self):
return f"{self.line}"
diff --git a/server/underline/graphql/schema.py b/server/underline/graphql/schema.py
index be79c9d..2d15418 100644
--- a/server/underline/graphql/schema.py
+++ b/server/underline/graphql/schema.py
@@ -18,6 +18,8 @@
Deposit,
LineCategory,
League,
+ Movement,
+ SubMovement,
)
from accounts.models import User
from graphql_jwt.decorators import login_required
@@ -80,8 +82,20 @@ class Meta:
model = Line
+class SubMovementType(DjangoObjectType):
+ class Meta:
+ model = SubMovement
+
+
+class MovementType(DjangoObjectType):
+
+ class Meta:
+ model = Movement
+
+
class SublineType(DjangoObjectType):
line = graphene.Field(LineType)
+ movement = graphene.Field(MovementType)
class Meta:
model = Subline
@@ -126,6 +140,7 @@ class Meta:
class Query(graphene.ObjectType):
todays_sublines = graphene.List(SublineType)
+ todays_movements = graphene.List(MovementType)
line_categories = graphene.Field(
graphene.List(LineCategoryType), league=graphene.String(required=True)
)
@@ -168,6 +183,11 @@ def resolve_todays_sublines(self, info, **kwargs):
return q1
+ # Get today's date. Find all the movements for the date
+ def resolve_todays_movements(self, info, **kwargs):
+ cd = CurrentDate.objects.first()
+ return Movement.objects.filter(date=cd.date)
+
@login_required
def resolve_me(self, info, **kawargs):
return info.context.user