From 785c2c7916533ecb5eedee165ab01047096e3f87 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 20:36:04 -0400
Subject: [PATCH 001/104] leagues initial commit
---
leagues/__init__.py | 0
leagues/admin.py | 3 +
leagues/apps.py | 5 ++
leagues/migrations/__init__.py | 0
leagues/models.py | 89 ++++++++++++++++++++
leagues/tests.py | 3 +
leagues/views.py | 3 +
project-templates/leagues/league_detail.html | 0
project-templates/leagues/league_rules.html | 0
project-templates/leagues/league_teams.html | 0
project-templates/leagues/leagues_list.html | 0
11 files changed, 103 insertions(+)
create mode 100644 leagues/__init__.py
create mode 100644 leagues/admin.py
create mode 100644 leagues/apps.py
create mode 100644 leagues/migrations/__init__.py
create mode 100644 leagues/models.py
create mode 100644 leagues/tests.py
create mode 100644 leagues/views.py
create mode 100644 project-templates/leagues/league_detail.html
create mode 100644 project-templates/leagues/league_rules.html
create mode 100644 project-templates/leagues/league_teams.html
create mode 100644 project-templates/leagues/leagues_list.html
diff --git a/leagues/__init__.py b/leagues/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/leagues/admin.py b/leagues/admin.py
new file mode 100644
index 000000000..8c38f3f3d
--- /dev/null
+++ b/leagues/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/leagues/apps.py b/leagues/apps.py
new file mode 100644
index 000000000..4abf4fa9d
--- /dev/null
+++ b/leagues/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class LeaguesConfig(AppConfig):
+ name = 'leagues'
diff --git a/leagues/migrations/__init__.py b/leagues/migrations/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/leagues/models.py b/leagues/models.py
new file mode 100644
index 000000000..d9c6cdcfd
--- /dev/null
+++ b/leagues/models.py
@@ -0,0 +1,89 @@
+from django.db import models
+from teams.models import Team
+from matches.models import Match, GameChoice, PlatformChoice, MapPoolChoice, MapChoice, SportChoice
+from matches.settings import TEAMFORMAT_CHOICES, MAPFORMAT_CHOICES
+
+
+class LeagueSettings(models.Model):
+ name = models.CharField(default='League Ruleset', max_length=50)
+ # whether or not to keep track of Overtime Losses in a separate column
+ ot_losses = models.BooleanField(default=True)
+ # amount of points to award a team for an overtime loss
+ pts_ot_loss = models.PositiveSmallIntegerField(default=1)
+ # whether or not to keep track of Overtime wins in a separate column
+ ot_wins = models.BooleanField(default=False)
+ pts_ot_win = models.PositiveSmallIntegerField(default=3)
+ # amount of points to award teams for a win
+ pts_win = models.PositiveSmallIntegerField(default=3)
+ pts_loss = models.PositiveSmallIntegerField(default=0)
+
+ # whether or not to allow tie
+ allow_tie = models.BooleanField(default=False)
+ # number of games each team plays during the regular season
+ num_games = models.PositiveIntegerField(default=10)
+ # automatically schedule games. TODO - implement auto schedule
+ auto_schedule = models.BooleanField(default=False)
+ # W=Win, L=Loss, OTL=Overtime Loss, T=Tie, OTW=Overtime Win, OTT=Overtime Tie
+ RECORD_FORMAT_CHOICES = (
+ (1, "W-L-OTL"),
+ (2, "W-L-T"),
+ (3, "W-L-OTW-OTL"),
+ (4, "W-L-OTW-OTL-OTT"),
+ )
+ # record format to show on front end
+ record_format = models.CharField(choices=RECORD_FORMAT_CHOICES, default="W-L-OTL", max_length=20)
+ # number of divisions to break teams into
+ num_divisons = models.PositiveSmallIntegerField(default=2)
+ # max amount of teams to allow into a division
+ max_division_size = models.PositiveSmallIntegerField(default=5)
+
+
+class LeagueTeam(models.Model):
+ team = models.ForeignKey(Team, related_name='league_team', on_delete=models.PROTECT)
+ wins = models.PositiveSmallIntegerField(default=0)
+ losses = models.PositiveSmallIntegerField(default=0)
+ ot_losses = models.PositiveSmallIntegerField(default=0)
+ ot_wins = models.PositiveSmallIntegerField(default=0)
+ ties = models.PositiveSmallIntegerField(default=0)
+
+
+class LeagueDivision(models.Model):
+ # name for the league division - set to null in case admins wish to manually change it
+ name = models.CharField(null=True, max_length=50)
+ # teams that are in that division, allow it to be empty
+ teams = models.ManyToManyField(LeagueTeam, blank=True)
+ # games that are to be played and have been played in that division, blank until all matches are generated
+ games = models.ManyToManyField(Match, blank=True)
+
+
+class League(models.Model):
+ name = models.CharField(default="League Name", max_length=50)
+ rules = models.ForeignKey(LeagueSettings, related_name="league_rules", on_delete=models.PROTECT)
+ # if set to true the league will display on the front page, false and it will not
+ active = models.BooleanField(default=False)
+ info = models.TextField(default="No information provided")
+ # TODO - remove this, going to be redundant
+ all_teams = models.ManyToManyField(LeagueTeam, blank=True)
+ created = models.DateTimeField(auto_now_add=True)
+ updated = models.DateTimeField(auto_now=True)
+ divisions = models.ManyToManyField(LeagueDivision, blank=True)
+ platform = models.ForeignKey(PlatformChoice, related_name='league_platform', on_delete=models.PROTECT, null=True)
+ game = models.ForeignKey(GameChoice, related_name='league_game', on_delete=models.PROTECT, null=True)
+ sport = models.ForeignKey(SportChoice, related_name='league_sport', on_delete=models.PROTECT, null=True)
+ image = models.ImageField(upload_to='league_images', blank=True)
+ # team format, ex 1v1, 2v2, 3v3, 4v4, 5v5, 6v6
+ teamformat = models.SmallIntegerField(choices=TEAMFORMAT_CHOICES, default=1)
+ # by default its a best of 1. Not sure if we need this here. Finals might be best of 3, etc in
+ # the future possibly. TBD. For now this will work though.
+ bestof = models.SmallIntegerField(choices=MAPFORMAT_CHOICES, default=0)
+ # manually open registration even if outside registration window
+ allow_register = models.BooleanField(default=False)
+ # when does registration open, and when does it close? specified when created in staff panel
+ open_register = models.DateTimeField()
+ # dont allow people to join once registration is closed
+ close_register = models.DateTimeField()
+ # when is the league going to start?
+ start = models.DateTimeField()
+
+
+
diff --git a/leagues/tests.py b/leagues/tests.py
new file mode 100644
index 000000000..7ce503c2d
--- /dev/null
+++ b/leagues/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/leagues/views.py b/leagues/views.py
new file mode 100644
index 000000000..91ea44a21
--- /dev/null
+++ b/leagues/views.py
@@ -0,0 +1,3 @@
+from django.shortcuts import render
+
+# Create your views here.
diff --git a/project-templates/leagues/league_detail.html b/project-templates/leagues/league_detail.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/leagues/league_rules.html b/project-templates/leagues/league_rules.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/leagues/league_teams.html b/project-templates/leagues/league_teams.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/leagues/leagues_list.html b/project-templates/leagues/leagues_list.html
new file mode 100644
index 000000000..e69de29bb
From 4966bb4773912b5cbe777f8bc94f7f900d33319d Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 20:47:38 -0400
Subject: [PATCH 002/104] minor changes in league models
---
leagues/models.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/leagues/models.py b/leagues/models.py
index d9c6cdcfd..d370b3878 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -2,8 +2,10 @@
from teams.models import Team
from matches.models import Match, GameChoice, PlatformChoice, MapPoolChoice, MapChoice, SportChoice
from matches.settings import TEAMFORMAT_CHOICES, MAPFORMAT_CHOICES
+from singletournaments.models import SingleTournamentRuleset
+# a way to create default values for a field over multiple seasons
class LeagueSettings(models.Model):
name = models.CharField(default='League Ruleset', max_length=50)
# whether or not to keep track of Overtime Losses in a separate column
@@ -16,7 +18,6 @@ class LeagueSettings(models.Model):
# amount of points to award teams for a win
pts_win = models.PositiveSmallIntegerField(default=3)
pts_loss = models.PositiveSmallIntegerField(default=0)
-
# whether or not to allow tie
allow_tie = models.BooleanField(default=False)
# number of games each team plays during the regular season
@@ -29,6 +30,7 @@ class LeagueSettings(models.Model):
(2, "W-L-T"),
(3, "W-L-OTW-OTL"),
(4, "W-L-OTW-OTL-OTT"),
+ (5, "W-L"),
)
# record format to show on front end
record_format = models.CharField(choices=RECORD_FORMAT_CHOICES, default="W-L-OTL", max_length=20)
@@ -58,12 +60,11 @@ class LeagueDivision(models.Model):
class League(models.Model):
name = models.CharField(default="League Name", max_length=50)
- rules = models.ForeignKey(LeagueSettings, related_name="league_rules", on_delete=models.PROTECT)
+ settings = models.ForeignKey(LeagueSettings, related_name="league_settings", on_delete=models.PROTECT)
+ ruleset = models.ForeignKey(SingleTournamentRuleset, related_name="league_ruleset", on_delete=models.PROTECT)
# if set to true the league will display on the front page, false and it will not
active = models.BooleanField(default=False)
info = models.TextField(default="No information provided")
- # TODO - remove this, going to be redundant
- all_teams = models.ManyToManyField(LeagueTeam, blank=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
divisions = models.ManyToManyField(LeagueDivision, blank=True)
From 1c9530d072ac0da9a3e25be83b5faf7d27eccc31 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 20:48:48 -0400
Subject: [PATCH 003/104] add leagues to installed apps
---
olly/base_settings.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/olly/base_settings.py b/olly/base_settings.py
index 33cf456f6..4330120df 100644
--- a/olly/base_settings.py
+++ b/olly/base_settings.py
@@ -63,6 +63,8 @@
# wagers
'wagers',
+ 'leagues',
+
# ip package
'ipware',
From 1b4fb54b7c6ec972871ee03a4eef8fb895bc8dff Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 20:48:54 -0400
Subject: [PATCH 004/104] leagues initial migration
---
leagues/migrations/0001_initial.py | 82 ++++++++++++++++++++++++++++++
1 file changed, 82 insertions(+)
create mode 100644 leagues/migrations/0001_initial.py
diff --git a/leagues/migrations/0001_initial.py b/leagues/migrations/0001_initial.py
new file mode 100644
index 000000000..3fe93b481
--- /dev/null
+++ b/leagues/migrations/0001_initial.py
@@ -0,0 +1,82 @@
+# Generated by Django 2.2.12 on 2020-05-16 00:48
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ('matches', '0022_auto_20200410_1506'),
+ ('teams', '0008_team_image'),
+ ('singletournaments', '0021_auto_20200420_0007'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='LeagueSettings',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(default='League Ruleset', max_length=50)),
+ ('ot_losses', models.BooleanField(default=True)),
+ ('pts_ot_loss', models.PositiveSmallIntegerField(default=1)),
+ ('ot_wins', models.BooleanField(default=False)),
+ ('pts_ot_win', models.PositiveSmallIntegerField(default=3)),
+ ('pts_win', models.PositiveSmallIntegerField(default=3)),
+ ('pts_loss', models.PositiveSmallIntegerField(default=0)),
+ ('allow_tie', models.BooleanField(default=False)),
+ ('num_games', models.PositiveIntegerField(default=10)),
+ ('auto_schedule', models.BooleanField(default=False)),
+ ('record_format', models.CharField(choices=[(1, 'W-L-OTL'), (2, 'W-L-T'), (3, 'W-L-OTW-OTL'), (4, 'W-L-OTW-OTL-OTT'), (5, 'W-L')], default='W-L-OTL', max_length=20)),
+ ('num_divisons', models.PositiveSmallIntegerField(default=2)),
+ ('max_division_size', models.PositiveSmallIntegerField(default=5)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='LeagueTeam',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('wins', models.PositiveSmallIntegerField(default=0)),
+ ('losses', models.PositiveSmallIntegerField(default=0)),
+ ('ot_losses', models.PositiveSmallIntegerField(default=0)),
+ ('ot_wins', models.PositiveSmallIntegerField(default=0)),
+ ('ties', models.PositiveSmallIntegerField(default=0)),
+ ('team', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='league_team', to='teams.Team')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='LeagueDivision',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=50, null=True)),
+ ('games', models.ManyToManyField(blank=True, to='matches.Match')),
+ ('teams', models.ManyToManyField(blank=True, to='leagues.LeagueTeam')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='League',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(default='League Name', max_length=50)),
+ ('active', models.BooleanField(default=False)),
+ ('info', models.TextField(default='No information provided')),
+ ('created', models.DateTimeField(auto_now_add=True)),
+ ('updated', models.DateTimeField(auto_now=True)),
+ ('image', models.ImageField(blank=True, upload_to='league_images')),
+ ('teamformat', models.SmallIntegerField(choices=[(0, '1v1'), (1, '2v2'), (2, '3v3'), (3, '4v4'), (4, '5v5'), (5, '6v6')], default=1)),
+ ('bestof', models.SmallIntegerField(choices=[(0, 'Best of 1'), (1, 'Best of 3'), (2, 'Best of 5'), (3, 'Best of 7'), (4, 'Best of 9')], default=0)),
+ ('allow_register', models.BooleanField(default=False)),
+ ('open_register', models.DateTimeField()),
+ ('close_register', models.DateTimeField()),
+ ('start', models.DateTimeField()),
+ ('divisions', models.ManyToManyField(blank=True, to='leagues.LeagueDivision')),
+ ('game', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_game', to='matches.GameChoice')),
+ ('platform', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_platform', to='matches.PlatformChoice')),
+ ('ruleset', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='league_ruleset', to='singletournaments.SingleTournamentRuleset')),
+ ('settings', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='league_settings', to='leagues.LeagueSettings')),
+ ('sport', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_sport', to='matches.SportChoice')),
+ ],
+ ),
+ ]
From 9b52291ba2088cb3ba7a4dacd3619c1f510e0ef4 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 20:51:59 -0400
Subject: [PATCH 005/104] league staff templates
---
project-templates/staff/leagues/league_create.html | 0
project-templates/staff/leagues/league_detail.html | 0
project-templates/staff/leagues/league_edit.html | 0
project-templates/staff/leagues/league_list.html | 0
project-templates/staff/leagues/league_settings_create.html | 0
project-templates/staff/leagues/league_settings_detail.html | 0
project-templates/staff/leagues/league_settings_edit.html | 0
project-templates/staff/leagues/league_settings_list.html | 0
8 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 project-templates/staff/leagues/league_create.html
create mode 100644 project-templates/staff/leagues/league_detail.html
create mode 100644 project-templates/staff/leagues/league_edit.html
create mode 100644 project-templates/staff/leagues/league_list.html
create mode 100644 project-templates/staff/leagues/league_settings_create.html
create mode 100644 project-templates/staff/leagues/league_settings_detail.html
create mode 100644 project-templates/staff/leagues/league_settings_edit.html
create mode 100644 project-templates/staff/leagues/league_settings_list.html
diff --git a/project-templates/staff/leagues/league_create.html b/project-templates/staff/leagues/league_create.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_detail.html b/project-templates/staff/leagues/league_detail.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_edit.html b/project-templates/staff/leagues/league_edit.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_list.html b/project-templates/staff/leagues/league_list.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_settings_create.html b/project-templates/staff/leagues/league_settings_create.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_settings_detail.html b/project-templates/staff/leagues/league_settings_detail.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_settings_edit.html b/project-templates/staff/leagues/league_settings_edit.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_settings_list.html b/project-templates/staff/leagues/league_settings_list.html
new file mode 100644
index 000000000..e69de29bb
From f2509e660978f79800ea6071cd557d89a50002f4 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 20:52:11 -0400
Subject: [PATCH 006/104] add create league form and create league settings
form
---
staff/forms.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/staff/forms.py b/staff/forms.py
index 2406d82ab..0ac933d0f 100644
--- a/staff/forms.py
+++ b/staff/forms.py
@@ -10,6 +10,7 @@
from store.models import Product
from support.models import TicketComment, Ticket, TicketCategory, QuestionAnswerCategory, QuestionAnswer
from teams.models import Team, TeamInvite
+from leagues.models import League, LeagueDivision, LeagueSettings, LeagueTeam
class StaticInfoForm(forms.ModelForm):
@@ -299,3 +300,16 @@ class CreateSlide(forms.ModelForm):
class Meta:
model = FrontPageSlide
fields = '__all__'
+
+
+class CreateLeagueForm(forms.ModelForm):
+ class Meta:
+ model = League
+ fields = '__all__'
+
+
+class CreateLeagueSettingsForm(forms.ModelForm):
+ class Meta:
+ model = LeagueSettings
+ fields = '__all__'
+
From 340b4c26e48df0d1e71d7c14ff1bb6e28608a3e5 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 20:55:47 -0400
Subject: [PATCH 007/104] add maps field to league
---
leagues/migrations/0002_league_maps.py | 20 ++++++++++++++++++++
leagues/models.py | 1 +
2 files changed, 21 insertions(+)
create mode 100644 leagues/migrations/0002_league_maps.py
diff --git a/leagues/migrations/0002_league_maps.py b/leagues/migrations/0002_league_maps.py
new file mode 100644
index 000000000..5d0a053f5
--- /dev/null
+++ b/leagues/migrations/0002_league_maps.py
@@ -0,0 +1,20 @@
+# Generated by Django 2.2.12 on 2020-05-16 00:55
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('matches', '0022_auto_20200410_1506'),
+ ('leagues', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='league',
+ name='maps',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_maps', to='matches.MapPoolChoice'),
+ ),
+ ]
diff --git a/leagues/models.py b/leagues/models.py
index d370b3878..d633a43ad 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -85,6 +85,7 @@ class League(models.Model):
close_register = models.DateTimeField()
# when is the league going to start?
start = models.DateTimeField()
+ maps = models.ForeignKey(MapPoolChoice, related_name='league_maps', on_delete=models.PROTECT, null=True)
From 57bd5247e34df29a9a875097d5aaea3685d35ade Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:00:56 -0400
Subject: [PATCH 008/104] league staff views initial commit
---
staff/views/leagues.py | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 staff/views/leagues.py
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
new file mode 100644
index 000000000..9610f04c0
--- /dev/null
+++ b/staff/views/leagues.py
@@ -0,0 +1,26 @@
+from django.contrib import messages
+from django.shortcuts import render, redirect
+#from django.views.generic import View
+
+#from matches.models import MatchReport, MatchDispute, Match, MapChoice, MapPoolChoice
+from staff.forms import *
+
+
+def create_league(request):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ if request.method == 'GET':
+ form = CreateLeagueForm
+ return render(request, 'staff/leagues/league_create.html', {'form': form})
+ else:
+ # the form is posting, lets start validating
+ form = CreateLeagueForm(request.POSt, request.FILES)
+ if form.is_valid():
+ league = form.instance
+ league.save()
+ messages.success(request, 'Created League')
+ #return redirect()
+
From f331109874665e4357849514aa1a5b400b73f2bb Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:14:38 -0400
Subject: [PATCH 009/104] import league views for urls
---
staff/views/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/staff/views/__init__.py b/staff/views/__init__.py
index 533ac2084..bfea9e001 100644
--- a/staff/views/__init__.py
+++ b/staff/views/__init__.py
@@ -7,3 +7,4 @@
from .teams import *
from .wagers import *
from .staff import *
+from .leagues import *
From c2aedecd08adc5b63a725a2d5685d46097721b1d Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:20:00 -0400
Subject: [PATCH 010/104] add list_league, detail_league, edit_league,
list_league_settings, +more
---
staff/views/leagues.py | 67 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 66 insertions(+), 1 deletion(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 9610f04c0..75de9e0e3 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -22,5 +22,70 @@ def create_league(request):
league = form.instance
league.save()
messages.success(request, 'Created League')
- #return redirect()
+ return redirect()
+ else:
+ form = CreateLeagueForm(request.POST)
+ return render(request, 'staff/leagues/league_create.html', {'form': form})
+
+def list_league(request):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ leagues = League.objects.all()
+ return render(request, 'staff/leagues/league_list.html', {'leagues': leagues})
+
+
+def detail_league(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ return render(request, 'staff/leagues/league_detail.html', {'league': league})
+
+
+def edit_league(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ if request.method == 'POST':
+ league = League.objects.get(pk=pk)
+ form = CreateLeagueForm(request.POST, request.FILES, instance=league)
+ if form.is_valid():
+ form.save()
+ messages.success(request, 'League has been updated')
+ return redirect('staff:list_league')
+ else:
+ messages.error(request, 'Form validation error')
+ return redirect('staff:list_league')
+ else:
+ league = League.objects.get(pk=pk)
+ form = CreateLeagueForm(instance=league)
+ return render(request, 'staff/leagues/league_edit.html', {'form': form, 'pk':pk, 'league':league})
+
+
+def list_league_settings(request):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ settings = LeagueSettings.objects.all()
+ return render(request, 'staff/leagues/league_settings_list.html', {'settings': settings})
+
+
+def create_league_settings(request):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ if request.method == 'GET':
+ form = CreateLeagueSettingsForm
+ return render(request, 'staff/leagues/league_settings_create.html', {'form': form})
\ No newline at end of file
From 3e42361059d50224530f275a7577cd539b2c56bf Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:20:45 -0400
Subject: [PATCH 011/104] staff league urls
---
staff/urls.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/staff/urls.py b/staff/urls.py
index 7618d3c45..67b685c08 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -54,6 +54,13 @@
path('tournaments//addteams/', login_required(views.add_teams), name='add_team'),
path('tournaments//addteams//', login_required(views.add_teams), name='add_team'),
+ path('leagues/', login_required(views.list_league), name='list_league'),
+ path('leagues//', login_required(views.detail_league), name='detail_league'),
+ path('leagues//edit/', login_required(views.edit_league), name='edit_league'),
+ path('leagues/create/', login_required(views.create_league), name='create_league'),
+ path('leagues/settings', login_required(views.list_league_settings), name='list_league_settings'),
+ path('leagues/settings/create', login_required(views.create_league_settings), name='create_league_settings'),
+
path('matches/', login_required(views.matches_index), name='matches_index'),
path('matches/disputed/', login_required(views.disputed_matches), name='disputed_matches'),
path('match/', login_required(views.match_detail), name='match_detail'),
From 24e913b390a9375fd4079e17d43f611291ac2eb4 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:40:05 -0400
Subject: [PATCH 012/104] add credits and max size to leagues models
---
leagues/migrations/0003_auto_20200515_2139.py | 23 +++++++++++++++++++
leagues/models.py | 5 ++--
2 files changed, 26 insertions(+), 2 deletions(-)
create mode 100644 leagues/migrations/0003_auto_20200515_2139.py
diff --git a/leagues/migrations/0003_auto_20200515_2139.py b/leagues/migrations/0003_auto_20200515_2139.py
new file mode 100644
index 000000000..84e7b6b03
--- /dev/null
+++ b/leagues/migrations/0003_auto_20200515_2139.py
@@ -0,0 +1,23 @@
+# Generated by Django 2.2.12 on 2020-05-16 01:39
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0002_league_maps'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='league',
+ name='credits',
+ field=models.PositiveSmallIntegerField(default=0),
+ ),
+ migrations.AddField(
+ model_name='league',
+ name='size',
+ field=models.PositiveSmallIntegerField(default=8),
+ ),
+ ]
diff --git a/leagues/models.py b/leagues/models.py
index d633a43ad..f25602313 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -86,6 +86,7 @@ class League(models.Model):
# when is the league going to start?
start = models.DateTimeField()
maps = models.ForeignKey(MapPoolChoice, related_name='league_maps', on_delete=models.PROTECT, null=True)
-
-
+ # the amount of credits that should be charged when joining
+ credits = models.PositiveSmallIntegerField(default=0)
+ size = models.PositiveSmallIntegerField(default=8)
From bbad00ca4f850409f799c096e299512327a74346 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:40:16 -0400
Subject: [PATCH 013/104] add detail_league_settings staff view
---
staff/views/leagues.py | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 75de9e0e3..9d77e211e 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -88,4 +88,14 @@ def create_league_settings(request):
else:
if request.method == 'GET':
form = CreateLeagueSettingsForm
- return render(request, 'staff/leagues/league_settings_create.html', {'form': form})
\ No newline at end of file
+ return render(request, 'staff/leagues/league_settings_create.html', {'form': form})
+
+
+def detail_league_settings(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ settings = LeagueSettings.objects.get(pk=pk)
+ return render(request, 'staff/leagues/league_settings_detail.html', {'settings': settings})
\ No newline at end of file
From 62fdd921e5552f128391a93b642bb7433d8977c5 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:40:34 -0400
Subject: [PATCH 014/104] add detail_league_settings url
---
staff/urls.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/staff/urls.py b/staff/urls.py
index 67b685c08..40c6f3b53 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -60,6 +60,7 @@
path('leagues/create/', login_required(views.create_league), name='create_league'),
path('leagues/settings', login_required(views.list_league_settings), name='list_league_settings'),
path('leagues/settings/create', login_required(views.create_league_settings), name='create_league_settings'),
+ path('leagues/settings//', login_required(views.detail_league_settings), name='detail_league_settings'),
path('matches/', login_required(views.matches_index), name='matches_index'),
path('matches/disputed/', login_required(views.disputed_matches), name='disputed_matches'),
From 63624b04da4f256acb3fc9d60d1f4accafd4a50f Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:47:55 -0400
Subject: [PATCH 015/104] add leagues to staff base
---
project-templates/staff/staffbase.html | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/project-templates/staff/staffbase.html b/project-templates/staff/staffbase.html
index 369f4605b..aa9e16793 100644
--- a/project-templates/staff/staffbase.html
+++ b/project-templates/staff/staffbase.html
@@ -176,6 +176,25 @@
{% endif %}
+
+
+
+ Leagues
+
+
+
+
From 67b812983cff8f5f27184241a0a2fef06814fab7 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:48:06 -0400
Subject: [PATCH 016/104] staff:league_list template
---
.../staff/leagues/league_list.html | 72 +++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/project-templates/staff/leagues/league_list.html b/project-templates/staff/leagues/league_list.html
index e69de29bb..429a323ca 100644
--- a/project-templates/staff/leagues/league_list.html
+++ b/project-templates/staff/leagues/league_list.html
@@ -0,0 +1,72 @@
+{% extends 'staff/staffbase.html' %}
+{% load static %}
+
+
+{% block title %}
+ All Leagues
+{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% for league in leagues %}
+
+
+
+ #{{ league.id }}
+
+ {{ league.name }}
+
+ {{ league.settings.name }}
+
+ {{ league.platform.name }}
+
+ {{ league.game.name }}
+
+ {{ league.start }}
+ {{ league.open_register }}
+ {{ league.req_credits }}
+
+ {% if league.active %}
+ Active
+ {% elif not league.active %}
+ Not Active
+ {% endif %}
+
+ {{ league.size }}
+
+
+
+
+ {% endfor %}
+
+
+
+
+{% endblock %}
\ No newline at end of file
From a5d0c94f800f418bdb1c8c53a91568641c27c9d5 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 21:55:09 -0400
Subject: [PATCH 017/104] league create template
---
.../staff/leagues/league_create.html | 157 ++++++++++++++++++
1 file changed, 157 insertions(+)
diff --git a/project-templates/staff/leagues/league_create.html b/project-templates/staff/leagues/league_create.html
index e69de29bb..6a5da62b8 100644
--- a/project-templates/staff/leagues/league_create.html
+++ b/project-templates/staff/leagues/league_create.html
@@ -0,0 +1,157 @@
+{% extends 'staff/staffbase.html' %}
+
+{% load static %}
+
+{% block title %}
+ Create League
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+ {% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endfor %}
+ {% for error in form.non_field_errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endif %}
+
+
+ Create a new ruleset
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
From c405204c5b276eabcc9729c6028bdd371a2aa0f1 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 22:06:02 -0400
Subject: [PATCH 018/104] fix spelling error in leagues models
---
leagues/migrations/0004_auto_20200515_2205.py | 18 ++++++++++++++++++
leagues/models.py | 2 +-
2 files changed, 19 insertions(+), 1 deletion(-)
create mode 100644 leagues/migrations/0004_auto_20200515_2205.py
diff --git a/leagues/migrations/0004_auto_20200515_2205.py b/leagues/migrations/0004_auto_20200515_2205.py
new file mode 100644
index 000000000..a5e3b1e05
--- /dev/null
+++ b/leagues/migrations/0004_auto_20200515_2205.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.12 on 2020-05-16 02:05
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0003_auto_20200515_2139'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='leaguesettings',
+ old_name='num_divisons',
+ new_name='num_divisions',
+ ),
+ ]
diff --git a/leagues/models.py b/leagues/models.py
index f25602313..443c7667a 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -35,7 +35,7 @@ class LeagueSettings(models.Model):
# record format to show on front end
record_format = models.CharField(choices=RECORD_FORMAT_CHOICES, default="W-L-OTL", max_length=20)
# number of divisions to break teams into
- num_divisons = models.PositiveSmallIntegerField(default=2)
+ num_divisions = models.PositiveSmallIntegerField(default=2)
# max amount of teams to allow into a division
max_division_size = models.PositiveSmallIntegerField(default=5)
From dd81d30f4a709d678d6f2c0131ffff7eaba9e95f Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 22:24:20 -0400
Subject: [PATCH 019/104] temporarily removed record_format from leagues
---
.../0005_remove_leaguesettings_record_format.py | 17 +++++++++++++++++
leagues/models.py | 2 +-
2 files changed, 18 insertions(+), 1 deletion(-)
create mode 100644 leagues/migrations/0005_remove_leaguesettings_record_format.py
diff --git a/leagues/migrations/0005_remove_leaguesettings_record_format.py b/leagues/migrations/0005_remove_leaguesettings_record_format.py
new file mode 100644
index 000000000..a5596d88f
--- /dev/null
+++ b/leagues/migrations/0005_remove_leaguesettings_record_format.py
@@ -0,0 +1,17 @@
+# Generated by Django 2.2.12 on 2020-05-16 02:23
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0004_auto_20200515_2205'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='leaguesettings',
+ name='record_format',
+ ),
+ ]
diff --git a/leagues/models.py b/leagues/models.py
index 443c7667a..0f2ad6ab8 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -33,7 +33,7 @@ class LeagueSettings(models.Model):
(5, "W-L"),
)
# record format to show on front end
- record_format = models.CharField(choices=RECORD_FORMAT_CHOICES, default="W-L-OTL", max_length=20)
+ # record_format = models.CharField(choices=RECORD_FORMAT_CHOICES, default=1, max_length=20)
# number of divisions to break teams into
num_divisions = models.PositiveSmallIntegerField(default=2)
# max amount of teams to allow into a division
From 3ad87cc9bb629fe5668be77477515b9cd709bac8 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 22:24:37 -0400
Subject: [PATCH 020/104] post information of league_create_settings
---
staff/views/leagues.py | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 9d77e211e..0e6982b1b 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -89,6 +89,17 @@ def create_league_settings(request):
if request.method == 'GET':
form = CreateLeagueSettingsForm
return render(request, 'staff/leagues/league_settings_create.html', {'form': form})
+ else:
+ form = CreateLeagueSettingsForm(request.POST)
+ if form.is_valid():
+ settings = form.instance
+ settings.save()
+ messages.success(request, 'Create League Settings')
+ return redirect('staff:list_league_settings')
+ else:
+ messages.error(request, 'A form validation error has occured')
+ form = CreateLeagueSettingsForm(request.POST)
+ return render(request, 'staff/leagues/league_settings_create.html', {'form': form})
def detail_league_settings(request, pk):
From a46d874235244938c9720978f2474242116054cf Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 22:24:48 -0400
Subject: [PATCH 021/104] staff league_settings_create template
---
.../staff/leagues/league_settings_create.html | 96 +++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/project-templates/staff/leagues/league_settings_create.html b/project-templates/staff/leagues/league_settings_create.html
index e69de29bb..1604e4faf 100644
--- a/project-templates/staff/leagues/league_settings_create.html
+++ b/project-templates/staff/leagues/league_settings_create.html
@@ -0,0 +1,96 @@
+{% extends 'staff/staffbase.html' %}
+
+{% load static %}
+
+{% block title %}
+ Create League Settings
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+ {% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endfor %}
+ {% for error in form.non_field_errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endif %}
+
+
+ Create a new ruleset
+
+
+
+
+{% endblock %}
\ No newline at end of file
From 248b8fb06b2158835829ba524a533f5118e97df9 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 22:32:41 -0400
Subject: [PATCH 022/104] fix typo in success message
---
staff/views/leagues.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 0e6982b1b..4dcf39446 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -94,7 +94,7 @@ def create_league_settings(request):
if form.is_valid():
settings = form.instance
settings.save()
- messages.success(request, 'Create League Settings')
+ messages.success(request, 'Created League Settings')
return redirect('staff:list_league_settings')
else:
messages.error(request, 'A form validation error has occured')
From 9cd42d08bdb3a66945f61ec6ff0f0b8eeb492d2b Mon Sep 17 00:00:00 2001
From: Mike M
Date: Fri, 15 May 2020 22:32:51 -0400
Subject: [PATCH 023/104] staff:league settings list template
---
.../staff/leagues/league_settings_list.html | 66 +++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/project-templates/staff/leagues/league_settings_list.html b/project-templates/staff/leagues/league_settings_list.html
index e69de29bb..e395d0a16 100644
--- a/project-templates/staff/leagues/league_settings_list.html
+++ b/project-templates/staff/leagues/league_settings_list.html
@@ -0,0 +1,66 @@
+{% extends 'staff/staffbase.html' %}
+{% load static %}
+
+
+{% block title %}
+ League Settings
+{% endblock %}
+
+{% block body %}
+
+
+
+
+ {% for setting in settings %}
+
+
+
+ #{{ setting.id }}
+
+ {{ setting.name }}
+ {{ setting.ot_losses }}
+ {{ setting.pts_ot_loss }}
+ {{ setting.ot_wins }}
+ {{ setting.pts_ot_win }}
+ {{ setting.pts_win }}
+ {{ setting.pts_loss }}
+ {{ setting.allow_tie }}
+ {{ setting.num_games }}
+ {{ setting.auto_schedule }}
+ {{ setting.num_divisions }}
+ {{ setting.max_division_size }}
+
+
+ {% endfor %}
+
+
+
+
+{% endblock %}
\ No newline at end of file
From b6ab2ef0ab18b8fbcef8c2ceb49a40f8ec9f8992 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 16 May 2020 18:29:41 -0400
Subject: [PATCH 024/104] league model changes
---
.../0006_league_disable_userreport.py | 18 ++++++++++++
leagues/migrations/0007_auto_20200516_1809.py | 18 ++++++++++++
leagues/migrations/0008_auto_20200516_1814.py | 19 ++++++++++++
leagues/migrations/0009_auto_20200516_1815.py | 18 ++++++++++++
leagues/migrations/0010_auto_20200516_1817.py | 29 +++++++++++++++++++
leagues/migrations/0011_auto_20200516_1817.py | 18 ++++++++++++
leagues/migrations/0012_auto_20200516_1818.py | 19 ++++++++++++
7 files changed, 139 insertions(+)
create mode 100644 leagues/migrations/0006_league_disable_userreport.py
create mode 100644 leagues/migrations/0007_auto_20200516_1809.py
create mode 100644 leagues/migrations/0008_auto_20200516_1814.py
create mode 100644 leagues/migrations/0009_auto_20200516_1815.py
create mode 100644 leagues/migrations/0010_auto_20200516_1817.py
create mode 100644 leagues/migrations/0011_auto_20200516_1817.py
create mode 100644 leagues/migrations/0012_auto_20200516_1818.py
diff --git a/leagues/migrations/0006_league_disable_userreport.py b/leagues/migrations/0006_league_disable_userreport.py
new file mode 100644
index 000000000..a12fd4a35
--- /dev/null
+++ b/leagues/migrations/0006_league_disable_userreport.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.12 on 2020-05-16 22:08
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0005_remove_leaguesettings_record_format'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='league',
+ name='disable_userreport',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/leagues/migrations/0007_auto_20200516_1809.py b/leagues/migrations/0007_auto_20200516_1809.py
new file mode 100644
index 000000000..9d9b10c8b
--- /dev/null
+++ b/leagues/migrations/0007_auto_20200516_1809.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.12 on 2020-05-16 22:09
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0006_league_disable_userreport'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='league',
+ old_name='credits',
+ new_name='req_credits',
+ ),
+ ]
diff --git a/leagues/migrations/0008_auto_20200516_1814.py b/leagues/migrations/0008_auto_20200516_1814.py
new file mode 100644
index 000000000..64b19fe05
--- /dev/null
+++ b/leagues/migrations/0008_auto_20200516_1814.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.12 on 2020-05-16 22:14
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0007_auto_20200516_1809'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='league',
+ name='sport',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_sport', to='matches.SportChoice'),
+ ),
+ ]
diff --git a/leagues/migrations/0009_auto_20200516_1815.py b/leagues/migrations/0009_auto_20200516_1815.py
new file mode 100644
index 000000000..707d93cbb
--- /dev/null
+++ b/leagues/migrations/0009_auto_20200516_1815.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.12 on 2020-05-16 22:15
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0008_auto_20200516_1814'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='league',
+ name='divisions',
+ field=models.ManyToManyField(blank=True, null=True, to='leagues.LeagueDivision'),
+ ),
+ ]
diff --git a/leagues/migrations/0010_auto_20200516_1817.py b/leagues/migrations/0010_auto_20200516_1817.py
new file mode 100644
index 000000000..f345b55ba
--- /dev/null
+++ b/leagues/migrations/0010_auto_20200516_1817.py
@@ -0,0 +1,29 @@
+# Generated by Django 2.2.12 on 2020-05-16 22:17
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0009_auto_20200516_1815'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='league',
+ name='divisions',
+ field=models.ManyToManyField(blank=True, to='leagues.LeagueDivision'),
+ ),
+ migrations.AlterField(
+ model_name='league',
+ name='game',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_game', to='matches.GameChoice'),
+ ),
+ migrations.AlterField(
+ model_name='league',
+ name='platform',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_platform', to='matches.PlatformChoice'),
+ ),
+ ]
diff --git a/leagues/migrations/0011_auto_20200516_1817.py b/leagues/migrations/0011_auto_20200516_1817.py
new file mode 100644
index 000000000..fab41006a
--- /dev/null
+++ b/leagues/migrations/0011_auto_20200516_1817.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.12 on 2020-05-16 22:17
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0010_auto_20200516_1817'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='league',
+ name='image',
+ field=models.ImageField(blank=True, null=True, upload_to='league_images'),
+ ),
+ ]
diff --git a/leagues/migrations/0012_auto_20200516_1818.py b/leagues/migrations/0012_auto_20200516_1818.py
new file mode 100644
index 000000000..3c998c9ba
--- /dev/null
+++ b/leagues/migrations/0012_auto_20200516_1818.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.12 on 2020-05-16 22:18
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0011_auto_20200516_1817'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='league',
+ name='maps',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='league_maps', to='matches.MapPoolChoice'),
+ ),
+ ]
From 01feeee7d64ef3ef1d7ac9cfee7b58feb2961c50 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 16 May 2020 18:29:50 -0400
Subject: [PATCH 025/104] league create template
---
project-templates/staff/leagues/league_create.html | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/project-templates/staff/leagues/league_create.html b/project-templates/staff/leagues/league_create.html
index 6a5da62b8..2a470f206 100644
--- a/project-templates/staff/leagues/league_create.html
+++ b/project-templates/staff/leagues/league_create.html
@@ -71,6 +71,10 @@
{{ form.req_credits }}
+ Max Number of Teams (in the entire league)
+ {{ form.size }}
+
+
{% if ESPORTS_MODE %}
Platform
{{ form.platform }}
@@ -114,15 +118,15 @@
Prize 1
- {{ form.prize1 }}
+ form.prize1 }}
Prize 2
- {{ form.prize2 }}
+ form.prize2 }}
Prize 3
- {{ form.prize3 }}
+ form.prize3 }}
Active
From d976df8c5f4d86efa5e402be358cd1e216c0e0a0 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 16 May 2020 18:29:58 -0400
Subject: [PATCH 026/104] datetime fields for create league template
---
staff/forms.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/staff/forms.py b/staff/forms.py
index 0ac933d0f..c8faf52a2 100644
--- a/staff/forms.py
+++ b/staff/forms.py
@@ -306,6 +306,16 @@ class CreateLeagueForm(forms.ModelForm):
class Meta:
model = League
fields = '__all__'
+ widgets = {
+ 'open_register': forms.DateTimeInput(
+ attrs={'class': 'form-control datetimepicker-input', 'id': 'datetimepicker1',
+ 'data-toggle': 'datetimepicker', 'data-target': '#datetimepicker1'}),
+ 'close_register': forms.DateTimeInput(
+ attrs={'class': 'form-control datetimepicker-input', 'id': 'datetimepicker2',
+ 'data-toggle': 'datetimepicker', 'data-target': '#datetimepicker2'}),
+ 'start': forms.DateTimeInput(attrs={'class': 'form-control datetimepicker-input', 'id': 'datetimepicker3',
+ 'data-toggle': 'datetimepicker', 'data-target': '#datetimepicker3'})
+ }
class CreateLeagueSettingsForm(forms.ModelForm):
From 2c0b980518ee71869d0daad44374ea6f77acd25a Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 16 May 2020 18:30:09 -0400
Subject: [PATCH 027/104] fix redirect, and staff views
---
staff/views/leagues.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 4dcf39446..e24573b1e 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -17,12 +17,12 @@ def create_league(request):
return render(request, 'staff/leagues/league_create.html', {'form': form})
else:
# the form is posting, lets start validating
- form = CreateLeagueForm(request.POSt, request.FILES)
+ form = CreateLeagueForm(request.POST, request.FILES)
if form.is_valid():
league = form.instance
league.save()
messages.success(request, 'Created League')
- return redirect()
+ return redirect('staff:list_league')
else:
form = CreateLeagueForm(request.POST)
return render(request, 'staff/leagues/league_create.html', {'form': form})
From b53ab504058ca576cb05be6a005e97df5a2ef247 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 16 May 2020 18:30:18 -0400
Subject: [PATCH 028/104] league models changes
---
leagues/models.py | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/leagues/models.py b/leagues/models.py
index 0f2ad6ab8..abe7e9223 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -39,6 +39,9 @@ class LeagueSettings(models.Model):
# max amount of teams to allow into a division
max_division_size = models.PositiveSmallIntegerField(default=5)
+ def __str__(self):
+ return self.name
+
class LeagueTeam(models.Model):
team = models.ForeignKey(Team, related_name='league_team', on_delete=models.PROTECT)
@@ -68,10 +71,10 @@ class League(models.Model):
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
divisions = models.ManyToManyField(LeagueDivision, blank=True)
- platform = models.ForeignKey(PlatformChoice, related_name='league_platform', on_delete=models.PROTECT, null=True)
- game = models.ForeignKey(GameChoice, related_name='league_game', on_delete=models.PROTECT, null=True)
- sport = models.ForeignKey(SportChoice, related_name='league_sport', on_delete=models.PROTECT, null=True)
- image = models.ImageField(upload_to='league_images', blank=True)
+ platform = models.ForeignKey(PlatformChoice, related_name='league_platform', on_delete=models.PROTECT, null=True, blank=True)
+ game = models.ForeignKey(GameChoice, related_name='league_game', on_delete=models.PROTECT, null=True, blank=True)
+ sport = models.ForeignKey(SportChoice, related_name='league_sport', on_delete=models.PROTECT, null=True, blank=True)
+ image = models.ImageField(upload_to='league_images', blank=True, null=True)
# team format, ex 1v1, 2v2, 3v3, 4v4, 5v5, 6v6
teamformat = models.SmallIntegerField(choices=TEAMFORMAT_CHOICES, default=1)
# by default its a best of 1. Not sure if we need this here. Finals might be best of 3, etc in
@@ -85,8 +88,9 @@ class League(models.Model):
close_register = models.DateTimeField()
# when is the league going to start?
start = models.DateTimeField()
- maps = models.ForeignKey(MapPoolChoice, related_name='league_maps', on_delete=models.PROTECT, null=True)
+ maps = models.ForeignKey(MapPoolChoice, related_name='league_maps', on_delete=models.PROTECT, null=True, blank=True)
# the amount of credits that should be charged when joining
- credits = models.PositiveSmallIntegerField(default=0)
+ req_credits = models.PositiveSmallIntegerField(default=0)
size = models.PositiveSmallIntegerField(default=8)
+ disable_userreport = models.BooleanField(default=False)
From 27803d71f8ab4cce211fc3235131449c5e805434 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 16 May 2020 18:47:16 -0400
Subject: [PATCH 029/104] staff:league_teams initial commit
---
project-templates/staff/leagues/league_teams.html | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 project-templates/staff/leagues/league_teams.html
diff --git a/project-templates/staff/leagues/league_teams.html b/project-templates/staff/leagues/league_teams.html
new file mode 100644
index 000000000..e69de29bb
From f3394dcac5e3a56333717303a27b01a58f5e109f Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 17 May 2020 19:14:20 -0400
Subject: [PATCH 030/104] staff:league_teams_add template initial commit
---
project-templates/staff/leagues/league_teams_add.html | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 project-templates/staff/leagues/league_teams_add.html
diff --git a/project-templates/staff/leagues/league_teams_add.html b/project-templates/staff/leagues/league_teams_add.html
new file mode 100644
index 000000000..e69de29bb
From 083ebbfc3e84eb2f50a2efd54959728540dde680 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 17 May 2020 19:14:28 -0400
Subject: [PATCH 031/104] update staff urls
---
staff/urls.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/staff/urls.py b/staff/urls.py
index 40c6f3b53..caf39ee04 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -57,6 +57,8 @@
path('leagues/', login_required(views.list_league), name='list_league'),
path('leagues//', login_required(views.detail_league), name='detail_league'),
path('leagues//edit/', login_required(views.edit_league), name='edit_league'),
+ path('leagues//teams/', login_required(views.league_teams), name='teams_league'),
+ path('leagues//teams/add/', login_required(views.league_teams_add), name='teams_league_add'),
path('leagues/create/', login_required(views.create_league), name='create_league'),
path('leagues/settings', login_required(views.list_league_settings), name='list_league_settings'),
path('leagues/settings/create', login_required(views.create_league_settings), name='create_league_settings'),
From a5d7f9bb659aa60e6435ad22b544379598aec7f6 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 17 May 2020 19:14:35 -0400
Subject: [PATCH 032/104] additional league views
---
staff/views/leagues.py | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index e24573b1e..391b1d72e 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -45,9 +45,33 @@ def detail_league(request, pk):
return render(request, 'staff/permissiondenied.html')
else:
league = League.objects.get(pk=pk)
+ divisions = league.divisions
return render(request, 'staff/leagues/league_detail.html', {'league': league})
+# list all the teams in the league and the divisions
+def league_teams(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ divisions = league.divisions
+ return render(request, 'staff/leagues/league_teams.html', {'league': league, 'divisions': divisions})
+
+
+# used for adding teams to a league before the league is launched
+def league_teams_add(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.hmtl')
+ else:
+ league = League.objects.get(pk=pk)
+ return render(request, 'staff/leagues/league_teams_add.html', {'league': league})
+
+
def edit_league(request, pk):
user = UserProfile.objects.get(user__username=request.user.username)
allowed = ['superadmin', 'admin']
From de5258018e3abe1340ae958f9be70f4371e4f463 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 17 May 2020 19:14:46 -0400
Subject: [PATCH 033/104] league detail template
---
.../staff/leagues/league_detail.html | 128 ++++++++++++++++++
1 file changed, 128 insertions(+)
diff --git a/project-templates/staff/leagues/league_detail.html b/project-templates/staff/leagues/league_detail.html
index e69de29bb..67c44df02 100644
--- a/project-templates/staff/leagues/league_detail.html
+++ b/project-templates/staff/leagues/league_detail.html
@@ -0,0 +1,128 @@
+{% extends 'staff/staffbase.html' %}
+{% load static %}
+
+{% block title %}
+ League #{{ league.id }}
+{% endblock %}
+
+{% block body %}
+
+
+ Back to Tournament
+ list
+
+
+
+ Key
+ Value
+
+
+
+ ID
+ {{ league.id }}
+
+
+ Platform
+ {{ league.platform.name }}
+
+
+ Name
+ {{ league.name }}
+
+
+ Settings
+ {{ league.settings.name }}
+
+
+ Start Date/Time
+ {{ league.start }}
+
+
+ Registration Open
+ {{ league.open_register }}
+
+
+ Required Credits
+ {{ league.req_credits }}
+
+
+ Active
+ {% if league.active %}
+ Yes
+ {% elif not league.active %}
+ No
+ {% endif %}
+
+
+ Max Teams/Size
+ {{ league.size }}
+
+
+ Game
+ {{ league.game.name }}
+
+
+ Format
+ {% if league.teamformat == 0 %}
+ 1v1
+ {% elif league.teamformat == 1 %}
+ 2v2
+ {% elif league.teamformat == 2 %}
+ 3v3
+ {% elif league.teamformat == 3 %}
+ 4v4
+ {% elif league.teamformat == 4 %}
+ 5v5
+ {% elif league.teamformat == 5 %}
+ 6v6
+ {% endif %}
+
+
+
+ Best Of
+ {% if league.bestof == 0 %}
+ Best of 1
+ {% elif league.bestof == 1 %}
+ Best of 3
+ {% elif league.bestof == 2 %}
+ Best of 5
+ {% elif league.bestof == 3 %}
+ Best of 7
+ {% elif league.bestof == 4 %}
+ Best of 9
+ {% endif %}
+
+
+
+ Created
+ {{ league.created }}
+
+
+
+ Updated
+ {{ league.updated }}
+
+
+
+ Divisions
+ {% for x in divisions %}
+ Division: #{{ x.id }}- Name={{ x.name }}
+ {% endfor %}
+
+
+
+
+ Edit
+
+ DELETE
+
+
+{% endblock %}
From 708705b1255ba1722a8d1dcf671df0398d917721 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 17 May 2020 19:14:57 -0400
Subject: [PATCH 034/104] league teams and league teams add template
---
project-templates/staff/leagues/league_teams.html | 11 +++++++++++
project-templates/staff/leagues/league_teams_add.html | 10 ++++++++++
2 files changed, 21 insertions(+)
diff --git a/project-templates/staff/leagues/league_teams.html b/project-templates/staff/leagues/league_teams.html
index e69de29bb..039064345 100644
--- a/project-templates/staff/leagues/league_teams.html
+++ b/project-templates/staff/leagues/league_teams.html
@@ -0,0 +1,11 @@
+{% extends 'staff/staffbase.html' %}
+{% load static %}
+
+{% block title %}
+ League #{{ league.id }} Teams
+{% endblock %}
+
+{% block body %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/project-templates/staff/leagues/league_teams_add.html b/project-templates/staff/leagues/league_teams_add.html
index e69de29bb..82b17a32b 100644
--- a/project-templates/staff/leagues/league_teams_add.html
+++ b/project-templates/staff/leagues/league_teams_add.html
@@ -0,0 +1,10 @@
+{% extends 'staff/staffbase.html' %}
+{% load static %}
+
+{% block title %}
+Add Teams - League {{ league.id }}
+{% endblock %}
+
+{% block body %}
+
+{% endblock %}
\ No newline at end of file
From bd567093bf63c56811d45364d3d0cca43de63684 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 13:34:21 -0400
Subject: [PATCH 035/104] league forms front end initial commit
---
leagues/forms.py | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 leagues/forms.py
diff --git a/leagues/forms.py b/leagues/forms.py
new file mode 100644
index 000000000..e69de29bb
From 9f804554f4b838ea7f34db2930ee76d9489c8869 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 13:34:37 -0400
Subject: [PATCH 036/104] start basic functionality of staff:launch_league
---
staff/views/leagues.py | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index e24573b1e..b61cc852b 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -109,4 +109,14 @@ def detail_league_settings(request, pk):
return render(request, 'staff/permissiondenied.html')
else:
settings = LeagueSettings.objects.get(pk=pk)
- return render(request, 'staff/leagues/league_settings_detail.html', {'settings': settings})
\ No newline at end of file
+ return render(request, 'staff/leagues/league_settings_detail.html', {'settings': settings})
+
+
+def launch_league(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ settings = league.settings
From d2a3b33ce388123a3c1fac7b9d857a10d91de343 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 13:34:51 -0400
Subject: [PATCH 037/104] stub out basic views for front end leagues
---
leagues/views.py | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/leagues/views.py b/leagues/views.py
index 91ea44a21..0e4d5d8d2 100644
--- a/leagues/views.py
+++ b/leagues/views.py
@@ -1,3 +1,25 @@
from django.shortcuts import render
+from .models import League, LeagueDivision, LeagueSettings
-# Create your views here.
+def list_leagues(request):
+ pass
+
+
+def detail_league(request, pk):
+ pass
+
+
+def join_league(request, pk):
+ pass
+
+
+def detail_league_teams(request, pk):
+ pass
+
+
+def detail_league_divisions(request, pk):
+ pass
+
+
+def detail_league_rules(request, pk):
+ pass
\ No newline at end of file
From d6309b12f4bdd1f9a512ec22b919e1f306408b95 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 13:58:15 -0400
Subject: [PATCH 038/104] front end league urls initial commit
---
leagues/urls.py | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 leagues/urls.py
diff --git a/leagues/urls.py b/leagues/urls.py
new file mode 100644
index 000000000..e69de29bb
From eb032f605154dc31eed03c6cad094fc540dba8b7 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 13:58:31 -0400
Subject: [PATCH 039/104] league list front end template
---
project-templates/leagues/leagues_list.html | 124 ++++++++++++++++++++
1 file changed, 124 insertions(+)
diff --git a/project-templates/leagues/leagues_list.html b/project-templates/leagues/leagues_list.html
index e69de29bb..29469549d 100644
--- a/project-templates/leagues/leagues_list.html
+++ b/project-templates/leagues/leagues_list.html
@@ -0,0 +1,124 @@
+{% extends "base.html" %}
+{% load static %}
+
+{% block head %}
+ Leagues - {{ SITE_NAME }}
+{% endblock %}
+
+{% block body %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if leagues.count == 0 %}
+
No Leagues yet!
+ {% endif %}
+ {% for league in leagues %}
+
+
+ {% else %}
+ {{ league.sport.name }}
+ {% endif %}
+
{{ league.name }}
+
+
+ {% if ESPORTS_MODE %}
+ Platform: {{ league.platform.name }} {% endif %}
+ Starts: {{ league.start }}
+ Teams: {{ league.teams.count }}/{{ league.size }}
+ {% if ESPORTS_MODE %}
+ Game: {{ league.game.name }} {% endif %}
+ {% if league.teamformat == 0 %}
+ 1v1
+ {% elif league.teamformat == 1 %}
+ 2v2
+ {% elif league.teamformat == 2 %}
+ 3v3
+ {% elif league.teamformat == 3 %}
+ 4v4
+ {% elif league.teamformat == 4 %}
+ 5v5
+ {% elif league.teamformat == 5 %}
+ 6v6
+ {% endif %}
+
+
+
+ Registration Opens: (Local time)
+
+
+ Registration Closes (Local time)
+
+
+ Registration Fee: {{ league.req_credits }}
+
+
JOIN LEAGUE
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
From 31de738e49b6d023ec5b071c995dd6e5b811b125 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 13:58:58 -0400
Subject: [PATCH 040/104] list league and detail league from end view
---
leagues/views.py | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/leagues/views.py b/leagues/views.py
index 0e4d5d8d2..5fcc35299 100644
--- a/leagues/views.py
+++ b/leagues/views.py
@@ -1,12 +1,15 @@
-from django.shortcuts import render
+from django.shortcuts import render, get_object_or_404
from .models import League, LeagueDivision, LeagueSettings
+
def list_leagues(request):
- pass
+ leagues = League.objects.filter(active=True)
+ return render(request, 'leagues/leagues_list.html', {'leagues': leagues})
def detail_league(request, pk):
- pass
+ league = get_object_or_404(League, pk)
+ return render(request, 'leagues/league_detail.html', {'league': league})
def join_league(request, pk):
From 52125574e4d81c56d14aceed82600ce77d109188 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 14:08:30 -0400
Subject: [PATCH 041/104] include league urls in base urls
---
olly/urls.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/olly/urls.py b/olly/urls.py
index 1dafc88c7..d3648f908 100644
--- a/olly/urls.py
+++ b/olly/urls.py
@@ -41,7 +41,8 @@
path('staff/', include('staff.urls', namespace='staff')),
path('tournaments/', include('singletournaments.urls', namespace='singletournaments')),
path('matches/', include('matches.urls', namespace='matches')),
- path('wagers/', include('wagers.urls', namespace='wagers'))
+ path('wagers/', include('wagers.urls', namespace='wagers')),
+ path('leagues/', include('leagues.urls', namespace='leagues'))
]
#if settings.DEBUG is True:
# urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
From 99d00e8b1b9b24a006a41ad0f9fb733b7ab40139 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 18 May 2020 14:08:38 -0400
Subject: [PATCH 042/104] leagues front end urls
---
leagues/urls.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/leagues/urls.py b/leagues/urls.py
index e69de29bb..96c4e0065 100644
--- a/leagues/urls.py
+++ b/leagues/urls.py
@@ -0,0 +1,14 @@
+from django.contrib.auth.decorators import login_required
+from django.urls import path
+
+from . import views as views
+
+app_name = 'leagues'
+
+urlpatterns = [
+ path('', login_required(views.list_leagues), name='list'),
+ path('/', login_required(views.detail_league), name='detail'),
+ path('/teams/', login_required(views.detail_league_teams), name='teams'),
+ path('/divisions/', login_required(views.detail_league_divisions), name='divisions'),
+ path('/rules/', login_required(views.detail_league_rules), name='rules'),
+]
From 0cbbfb580b9cd43771b46f1f1bc06a271e42e466 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Tue, 26 May 2020 13:06:53 -0400
Subject: [PATCH 043/104] add auto_generate field to allow for staff to disable
match generation
---
.../0013_leaguesettings_auto_matchup.py | 18 ++++++++++++++++++
leagues/models.py | 2 ++
2 files changed, 20 insertions(+)
create mode 100644 leagues/migrations/0013_leaguesettings_auto_matchup.py
diff --git a/leagues/migrations/0013_leaguesettings_auto_matchup.py b/leagues/migrations/0013_leaguesettings_auto_matchup.py
new file mode 100644
index 000000000..f645200f2
--- /dev/null
+++ b/leagues/migrations/0013_leaguesettings_auto_matchup.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.12 on 2020-05-26 17:01
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0012_auto_20200516_1818'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='leaguesettings',
+ name='auto_matchup',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/leagues/models.py b/leagues/models.py
index abe7e9223..6343b395d 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -24,6 +24,8 @@ class LeagueSettings(models.Model):
num_games = models.PositiveIntegerField(default=10)
# automatically schedule games. TODO - implement auto schedule
auto_schedule = models.BooleanField(default=False)
+ # automatically generate matches, enabling this will create matches but will not set match times
+ auto_matchup = models.BooleanField(default=False)
# W=Win, L=Loss, OTL=Overtime Loss, T=Tie, OTW=Overtime Win, OTT=Overtime Tie
RECORD_FORMAT_CHOICES = (
(1, "W-L-OTL"),
From ca59d54f3da2b0571cd374ae82e6db1da3e405d4 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Tue, 26 May 2020 13:07:04 -0400
Subject: [PATCH 044/104] add editleaguesettings form
---
staff/forms.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/staff/forms.py b/staff/forms.py
index c8faf52a2..a7cdcd031 100644
--- a/staff/forms.py
+++ b/staff/forms.py
@@ -323,3 +323,9 @@ class Meta:
model = LeagueSettings
fields = '__all__'
+
+class EditLeagueSettingsForm(forms.ModelForm):
+ class Meta:
+ model = LeagueSettings
+ fields = '__all__'
+
From 0308776a8547b0d71929345af5d3f62b17abb9d5 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Tue, 26 May 2020 13:07:25 -0400
Subject: [PATCH 045/104] edit league settings urls and view
---
staff/urls.py | 2 ++
staff/views/leagues.py | 21 +++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/staff/urls.py b/staff/urls.py
index caf39ee04..3addd503a 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -63,6 +63,8 @@
path('leagues/settings', login_required(views.list_league_settings), name='list_league_settings'),
path('leagues/settings/create', login_required(views.create_league_settings), name='create_league_settings'),
path('leagues/settings//', login_required(views.detail_league_settings), name='detail_league_settings'),
+ path('leagues/settings//edit/', login_required(views.edit_league_settings), name='edit_league_settings'),
+
path('matches/', login_required(views.matches_index), name='matches_index'),
path('matches/disputed/', login_required(views.disputed_matches), name='disputed_matches'),
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 00b12fc60..c20f0a828 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -126,6 +126,27 @@ def create_league_settings(request):
return render(request, 'staff/leagues/league_settings_create.html', {'form': form})
+def edit_league_settings(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ if request.method == 'POST':
+ league = LeagueSettings.objects.get(pk=pk)
+ form = EditLeagueSettingsForm(request.POST, request.FILES, instance=league)
+ if form.is_valid():
+ form.save()
+ messages.success(request, 'League Settings has been updated')
+ return redirect('staff:list_league_settings')
+ else:
+ return render(request, 'staff/leagues/league_settings_edit.html', {'form': form})
+ else:
+ league = LeagueSettings.objects.get(pk=pk)
+ form = EditLeagueSettingsForm(instance=league)
+ return render(request, 'staff/leagues/league_settings_edit.html', {'form': form, 'pk': pk})
+
+
def detail_league_settings(request, pk):
user = UserProfile.objects.get(user__username=request.user.username)
allowed = ['superadmin', 'admin']
From de20bde5b9098281c954dc418da7e243357a2669 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Tue, 26 May 2020 13:07:55 -0400
Subject: [PATCH 046/104] add league_settings_edit template
---
.../staff/leagues/league_settings_edit.html | 101 ++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/project-templates/staff/leagues/league_settings_edit.html b/project-templates/staff/leagues/league_settings_edit.html
index e69de29bb..de857c3c9 100644
--- a/project-templates/staff/leagues/league_settings_edit.html
+++ b/project-templates/staff/leagues/league_settings_edit.html
@@ -0,0 +1,101 @@
+{% extends 'staff/staffbase.html' %}
+
+{% load static %}
+
+{% block title %}
+ Edit League Settings
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+ {% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endfor %}
+ {% for error in form.non_field_errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endif %}
+
+
+ Create a new ruleset
+
+
+
+
+{% endblock %}
\ No newline at end of file
From 9c460ff0b917a80ff8626113b4e01d94509d99c5 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Tue, 26 May 2020 13:08:13 -0400
Subject: [PATCH 047/104] add auto_matchup/auto_generate field to form on
creation
---
project-templates/staff/leagues/league_settings_create.html | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/project-templates/staff/leagues/league_settings_create.html b/project-templates/staff/leagues/league_settings_create.html
index 1604e4faf..158159eed 100644
--- a/project-templates/staff/leagues/league_settings_create.html
+++ b/project-templates/staff/leagues/league_settings_create.html
@@ -76,6 +76,11 @@
{% endblock %}
From 1148c9ba9d96b95d76eebbd17b9d05a9f2c7c570 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 30 May 2020 20:04:39 -0400
Subject: [PATCH 054/104] add divisions and match add urls for leagues
---
staff/urls.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/staff/urls.py b/staff/urls.py
index 3addd503a..e029f5847 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -56,6 +56,10 @@
path('leagues/', login_required(views.list_league), name='list_league'),
path('leagues//', login_required(views.detail_league), name='detail_league'),
+ path('leagues//division/', login_required(views.list_division), name='list_division'),
+ path('leagues//division/create', login_required(views.list_division), name='create_division'),
+ path('leagues//division//', login_required(views.division_match_list), name='division_matches_league'),
+ path('leagues//matches/add', login_required(views.league_match_add), name='add_match_league'),
path('leagues//edit/', login_required(views.edit_league), name='edit_league'),
path('leagues//teams/', login_required(views.league_teams), name='teams_league'),
path('leagues//teams/add/', login_required(views.league_teams_add), name='teams_league_add'),
From e688947dc5bd56f67bd0a250e09df430601ece05 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 30 May 2020 20:05:02 -0400
Subject: [PATCH 055/104] create division and match add views progress
---
staff/views/leagues.py | 66 ++++++++++++++++++++++++++++++++++++------
1 file changed, 57 insertions(+), 9 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 7c9101297..294f510da 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -167,26 +167,74 @@ def launch_league(request, pk):
settings = league.settings
+def list_division(request, pk):
+ pass
+
+
+def detail_division(request, pk):
+ pass
+
+
+def create_divisions(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ if league.divisions.count() >= league.settings.num_divisions:
+ messages.error(request, 'ERROR: There are already too many divisions created')
+ return redirect('staff:list_division')
+ else:
+ # lets make the divisions
+ ids = []
+ for x in league.settings.num_divisions:
+ tempdiv = LeagueDivision()
+ tempdiv.save()
+ ids.append(tempdiv.id)
+ messages.success(request, 'League divisions created with id: '+ids)
+ return redirect('staff:list_division')
+
+
def league_match_add(request, pk):
user = UserProfile.objects.get(user__username=request.user.username)
allowed = ['superadmin', 'admin']
if user.user_type not in allowed:
return render(request, 'staff/permissiondenied')
else:
- league = League.objects.get(pk=pk)
+ if request.method is 'POST':
+ league = League.objects.get(pk=pk)
+ form = AddLeagueMatchForm
+ if form.awayteam == '' or form.hometeam == '':
+ form.add_error(form, error='Away Team or Home Team values are blank', field=form.awayteam)
+ try:
+ awayteam = Team.objects.get(pk=form.awayteam)
+ hometeam = Team.objects.get(pk=form.hometeam)
+ except:
+ form.add_error(form, error='Team not found', field=form.awayteam)
+ return redirect('staff:add_match_league')
+ try:
+ tempmatch = Match(awayteam=awayteam, hometeam=hometeam, type='league', game=league.game,
+ platform=league.platform, sport=league.sport, bestof=1, teamformat=league.teamformat)
+ tempmatch.save()
+ division = LeagueDivision.objects.get(pk=form.division)
+ division.matches.add(tempmatch)
+ except:
+ messages.error(request, 'Error creating match')
+ return render(request, 'staff/leagues/league_addmatch.html', {'form': form})
+ else:
+ # its a simple get
+ form = AddLeagueMatchForm
+ return render(request, 'staff/leagues/league_addmatch.html', {'form': form})
-def league_match_list(request, pk):
+def division_match_list(request, pk, divid):
user = UserProfile.objects.get(user__username=request.user.username)
allowed = ['superadmin', 'admin']
if user.user_type not in allowed:
return render(request, 'staff/permissiondenied')
else:
- all = []
league = League.objects.get(pk=pk)
- divisions = league.divisions
- #for x in divisions:
- # for y in x.matches:
- # # each match
- # all.append(y)
- return render(request, 'staff/leagues/league_matches.html', {'divisions': divisions})
\ No newline at end of file
+ division = LeagueDivision.objects.get(pk=pk)
+ matches = division.matches
+ return render(request, 'staff/leagues/league_matches.html', {'league': league, 'division': division, 'matches':matches })
\ No newline at end of file
From e7512432dec09408d92354280babedfb338f76fe Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 30 May 2020 20:05:22 -0400
Subject: [PATCH 056/104] AddLeague match form for staff panel
---
staff/forms.py | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/staff/forms.py b/staff/forms.py
index a7cdcd031..5522aee61 100644
--- a/staff/forms.py
+++ b/staff/forms.py
@@ -329,3 +329,11 @@ class Meta:
model = LeagueSettings
fields = '__all__'
+
+class AddLeagueMatchForm(forms.Form):
+ awayteam = forms.IntegerField
+ hometeam = forms.IntegerField
+ division = forms.IntegerField
+
+ class Meta:
+ fields = ('hometeam', 'awayteam', 'division')
\ No newline at end of file
From a37e3dc2545f91c8a3712a1c8ca2814d35a8374f Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sat, 30 May 2020 20:05:35 -0400
Subject: [PATCH 057/104] work on league matches template
---
project-templates/staff/leagues/league_matches.html | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/project-templates/staff/leagues/league_matches.html b/project-templates/staff/leagues/league_matches.html
index e9b9bb059..20186e451 100644
--- a/project-templates/staff/leagues/league_matches.html
+++ b/project-templates/staff/leagues/league_matches.html
@@ -20,11 +20,9 @@ Tournament Matches
- {% for division in divisions %}
-
+ {% for match in matches %}
{{ division.id }}
-
- {% for match in division.matches %}
+
#{{ match.id }}
@@ -49,9 +47,9 @@ Tournament Matches
{% endfor %}
-
+
{% endblock %}
\ No newline at end of file
From 3cfdfb4a93640b78d702e819f59bb2ac531e4569 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 31 May 2020 14:50:20 -0400
Subject: [PATCH 058/104] league divisions list template initial commit
---
project-templates/staff/leagues/league_divisions_list.html | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 project-templates/staff/leagues/league_divisions_list.html
diff --git a/project-templates/staff/leagues/league_divisions_list.html b/project-templates/staff/leagues/league_divisions_list.html
new file mode 100644
index 000000000..e69de29bb
From d76580fb66aaf38645e7a4841197a88b2e87a24b Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 31 May 2020 14:50:41 -0400
Subject: [PATCH 059/104] add functionality for list divisions, and try except,
fix warning
---
staff/views/leagues.py | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 294f510da..afa76a716 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -168,7 +168,14 @@ def launch_league(request, pk):
def list_division(request, pk):
- pass
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ divisions = league.divisions.all()
+ return render(request, 'staff/leagues/league_divisions_list.html', {'league': league, 'divisions': divisions})
def detail_division(request, pk):
@@ -189,9 +196,13 @@ def create_divisions(request, pk):
# lets make the divisions
ids = []
for x in league.settings.num_divisions:
- tempdiv = LeagueDivision()
- tempdiv.save()
- ids.append(tempdiv.id)
+ try:
+ tempdiv = LeagueDivision()
+ tempdiv.save()
+ ids.append(tempdiv.id)
+ except:
+ messages.error(request, 'ERROR: Could not create divisions')
+ return redirect('staff:list_division')
messages.success(request, 'League divisions created with id: '+ids)
return redirect('staff:list_division')
@@ -202,7 +213,7 @@ def league_match_add(request, pk):
if user.user_type not in allowed:
return render(request, 'staff/permissiondenied')
else:
- if request.method is 'POST':
+ if request.method == 'POST':
league = League.objects.get(pk=pk)
form = AddLeagueMatchForm
if form.awayteam == '' or form.hometeam == '':
From c60bdc6fc9ccd30e4e9800b1338371e2dca62170 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 31 May 2020 14:50:50 -0400
Subject: [PATCH 060/104] league division list template work
---
.../staff/leagues/league_divisions_list.html | 51 +++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/project-templates/staff/leagues/league_divisions_list.html b/project-templates/staff/leagues/league_divisions_list.html
index e69de29bb..9620107f3 100644
--- a/project-templates/staff/leagues/league_divisions_list.html
+++ b/project-templates/staff/leagues/league_divisions_list.html
@@ -0,0 +1,51 @@
+{% extends 'staff/staffbase.html' %}
+{% load static %}
+
+
+{% block title %}
+ Leagues #{{ league.pk }} Division List
+{% endblock %}
+
+{% block body %}
+
+{% endblock %}
\ No newline at end of file
From 462d20dd295165959de7437b59b86667c2564752 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Mon, 1 Jun 2020 20:27:40 -0400
Subject: [PATCH 061/104] fix league division generation
---
.../staff/leagues/league_divisions_list.html | 10 +---------
staff/urls.py | 2 +-
staff/views/leagues.py | 15 +++++++++------
3 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/project-templates/staff/leagues/league_divisions_list.html b/project-templates/staff/leagues/league_divisions_list.html
index 9620107f3..70acc221a 100644
--- a/project-templates/staff/leagues/league_divisions_list.html
+++ b/project-templates/staff/leagues/league_divisions_list.html
@@ -13,14 +13,6 @@
ID
League Name
- Settings
- Platform
- Game
- Start Date/Time
- Registration Open
- Required Credits
- Active
- Size
@@ -30,7 +22,7 @@
href="{% url 'staff:division_matches_league' pk=league.id divid=division.pk %}">
#{{ division.id }}
-
+ {{ league.name }}
{% endfor %}
diff --git a/staff/urls.py b/staff/urls.py
index e029f5847..86cb9114b 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -57,7 +57,7 @@
path('leagues/', login_required(views.list_league), name='list_league'),
path('leagues//', login_required(views.detail_league), name='detail_league'),
path('leagues//division/', login_required(views.list_division), name='list_division'),
- path('leagues//division/create', login_required(views.list_division), name='create_division'),
+ path('leagues//division/create', login_required(views.create_divisions), name='create_division'),
path('leagues//division//', login_required(views.division_match_list), name='division_matches_league'),
path('leagues//matches/add', login_required(views.league_match_add), name='add_match_league'),
path('leagues//edit/', login_required(views.edit_league), name='edit_league'),
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index afa76a716..ca4ac574d 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -175,6 +175,7 @@ def list_division(request, pk):
else:
league = League.objects.get(pk=pk)
divisions = league.divisions.all()
+ print(divisions)
return render(request, 'staff/leagues/league_divisions_list.html', {'league': league, 'divisions': divisions})
@@ -191,20 +192,22 @@ def create_divisions(request, pk):
league = League.objects.get(pk=pk)
if league.divisions.count() >= league.settings.num_divisions:
messages.error(request, 'ERROR: There are already too many divisions created')
- return redirect('staff:list_division')
+ return redirect('staff:list_division', pk=league.id)
else:
# lets make the divisions
ids = []
- for x in league.settings.num_divisions:
+ for x in range(league.settings.num_divisions):
try:
- tempdiv = LeagueDivision()
+ tempdiv = LeagueDivision(name=league.name+" Division "+str(x))
tempdiv.save()
ids.append(tempdiv.id)
+ league.divisions.add(tempdiv)
+ league.save()
except:
messages.error(request, 'ERROR: Could not create divisions')
- return redirect('staff:list_division')
- messages.success(request, 'League divisions created with id: '+ids)
- return redirect('staff:list_division')
+ return redirect('staff:list_division', pk=league.id)
+ messages.success(request, 'League divisions created with id: '+str(ids))
+ return redirect('staff:list_division', pk=league.id)
def league_match_add(request, pk):
From c7a0a437f8a5b3c8cdff2613f2bbecc5d45b25dd Mon Sep 17 00:00:00 2001
From: Mike M
Date: Mon, 1 Jun 2020 20:28:59 -0400
Subject: [PATCH 062/104] remove bare try except
---
staff/views/leagues.py | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index ca4ac574d..d6ae3cb3d 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -197,15 +197,11 @@ def create_divisions(request, pk):
# lets make the divisions
ids = []
for x in range(league.settings.num_divisions):
- try:
- tempdiv = LeagueDivision(name=league.name+" Division "+str(x))
- tempdiv.save()
- ids.append(tempdiv.id)
- league.divisions.add(tempdiv)
- league.save()
- except:
- messages.error(request, 'ERROR: Could not create divisions')
- return redirect('staff:list_division', pk=league.id)
+ tempdiv = LeagueDivision(name=league.name+" Division "+str(x))
+ tempdiv.save()
+ ids.append(tempdiv.id)
+ league.divisions.add(tempdiv)
+ league.save()
messages.success(request, 'League divisions created with id: '+str(ids))
return redirect('staff:list_division', pk=league.id)
From d7877542e0a0c2533267f63518ae0a5af0ecbef9 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 2 Jun 2020 12:37:04 -0400
Subject: [PATCH 063/104] staff league division template initial commit
---
project-templates/staff/leagues/league_division_addteam.html | 0
project-templates/staff/leagues/league_division_creatematch.html | 0
project-templates/staff/leagues/league_division_detail.html | 0
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 project-templates/staff/leagues/league_division_addteam.html
create mode 100644 project-templates/staff/leagues/league_division_creatematch.html
create mode 100644 project-templates/staff/leagues/league_division_detail.html
diff --git a/project-templates/staff/leagues/league_division_addteam.html b/project-templates/staff/leagues/league_division_addteam.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_division_creatematch.html b/project-templates/staff/leagues/league_division_creatematch.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/staff/leagues/league_division_detail.html b/project-templates/staff/leagues/league_division_detail.html
new file mode 100644
index 000000000..e69de29bb
From da1be409c4b15d5adfb555b0c27ec4913667f120 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 2 Jun 2020 12:37:13 -0400
Subject: [PATCH 064/104] detail_division view
---
staff/views/leagues.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index d6ae3cb3d..21551955a 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -179,8 +179,16 @@ def list_division(request, pk):
return render(request, 'staff/leagues/league_divisions_list.html', {'league': league, 'divisions': divisions})
-def detail_division(request, pk):
- pass
+def detail_division(request, pk, divid):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ division = LeagueDivision.objects.get(pk=divid)
+ return render(request, 'staff/leagues/league_division_detail.html', {'league': league, 'division': division})
+ # show add match, add team button
def create_divisions(request, pk):
From 43912a92cacb2b6374c6daf997072f5c9431d562 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 2 Jun 2020 12:37:25 -0400
Subject: [PATCH 065/104] reorganize staff urls for leagues
---
staff/urls.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/staff/urls.py b/staff/urls.py
index 86cb9114b..fbe86d822 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -58,7 +58,8 @@
path('leagues//', login_required(views.detail_league), name='detail_league'),
path('leagues//division/', login_required(views.list_division), name='list_division'),
path('leagues//division/create', login_required(views.create_divisions), name='create_division'),
- path('leagues//division//', login_required(views.division_match_list), name='division_matches_league'),
+ path('leagues//division//', login_required(views.detail_division), name='detail_division'),
+ path('leagues//division//matches', login_required(views.division_match_list), name='division_matches_league'),
path('leagues//matches/add', login_required(views.league_match_add), name='add_match_league'),
path('leagues//edit/', login_required(views.edit_league), name='edit_league'),
path('leagues//teams/', login_required(views.league_teams), name='teams_league'),
From f0182030ed3f99bea90188c6cc8e75a576c8e7a9 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 15:41:57 -0400
Subject: [PATCH 066/104] rename match list template to division list
---
.../leagues/{league_matches.html => league_division_matches.html} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename project-templates/staff/leagues/{league_matches.html => league_division_matches.html} (100%)
diff --git a/project-templates/staff/leagues/league_matches.html b/project-templates/staff/leagues/league_division_matches.html
similarity index 100%
rename from project-templates/staff/leagues/league_matches.html
rename to project-templates/staff/leagues/league_division_matches.html
From 65f17152c8b2d65d59bc6b1981a7bbd3743bfe8e Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 15:43:01 -0400
Subject: [PATCH 067/104] update match list url for staff panel
---
staff/urls.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/staff/urls.py b/staff/urls.py
index fbe86d822..a242fd3b6 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -60,7 +60,7 @@
path('leagues//division/create', login_required(views.create_divisions), name='create_division'),
path('leagues//division//', login_required(views.detail_division), name='detail_division'),
path('leagues//division//matches', login_required(views.division_match_list), name='division_matches_league'),
- path('leagues//matches/add', login_required(views.league_match_add), name='add_match_league'),
+ path('leagues//division//matches/add', login_required(views.division_match_add), name='division_match_add'),
path('leagues//edit/', login_required(views.edit_league), name='edit_league'),
path('leagues//teams/', login_required(views.league_teams), name='teams_league'),
path('leagues//teams/add/', login_required(views.league_teams_add), name='teams_league_add'),
From 7c3a52a1917ececea053ec9f64c403a31cae0fe5 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 15:43:25 -0400
Subject: [PATCH 068/104] fix bare except, fix mtm manager error
---
staff/views/leagues.py | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 21551955a..69e1353e0 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -1,5 +1,6 @@
from django.contrib import messages
from django.shortcuts import render, redirect
+from django.core.exceptions import ObjectDoesNotExist
#from django.views.generic import View
#from matches.models import MatchReport, MatchDispute, Match, MapChoice, MapPoolChoice
@@ -214,7 +215,7 @@ def create_divisions(request, pk):
return redirect('staff:list_division', pk=league.id)
-def league_match_add(request, pk):
+def division_match_add(request, pk, divid):
user = UserProfile.objects.get(user__username=request.user.username)
allowed = ['superadmin', 'admin']
if user.user_type not in allowed:
@@ -222,24 +223,23 @@ def league_match_add(request, pk):
else:
if request.method == 'POST':
league = League.objects.get(pk=pk)
+ division = LeagueDivision.objects.get(pk=divid)
form = AddLeagueMatchForm
if form.awayteam == '' or form.hometeam == '':
form.add_error(form, error='Away Team or Home Team values are blank', field=form.awayteam)
try:
awayteam = Team.objects.get(pk=form.awayteam)
hometeam = Team.objects.get(pk=form.hometeam)
- except:
- form.add_error(form, error='Team not found', field=form.awayteam)
- return redirect('staff:add_match_league')
- try:
+
tempmatch = Match(awayteam=awayteam, hometeam=hometeam, type='league', game=league.game,
- platform=league.platform, sport=league.sport, bestof=1, teamformat=league.teamformat)
+ platform=league.platform, sport=league.sport, bestof=1,
+ teamformat=league.teamformat)
tempmatch.save()
division = LeagueDivision.objects.get(pk=form.division)
division.matches.add(tempmatch)
- except:
- messages.error(request, 'Error creating match')
- return render(request, 'staff/leagues/league_addmatch.html', {'form': form})
+ except ObjectDoesNotExist:
+ form.add_error(form, error='Team not found', field=form.awayteam)
+ return redirect('staff:add_match_league')
else:
# its a simple get
form = AddLeagueMatchForm
@@ -254,5 +254,5 @@ def division_match_list(request, pk, divid):
else:
league = League.objects.get(pk=pk)
division = LeagueDivision.objects.get(pk=pk)
- matches = division.matches
- return render(request, 'staff/leagues/league_matches.html', {'league': league, 'division': division, 'matches':matches })
\ No newline at end of file
+ matches = division.matches.all()
+ return render(request, 'staff/leagues/league_division_matches.html', {'league': league, 'division': division, 'matches':matches })
\ No newline at end of file
From 73cee4fde3be982b9dff186c539a703f87a4ac93 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 16:08:43 -0400
Subject: [PATCH 069/104] added todo for matches models
---
matches/models.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/matches/models.py b/matches/models.py
index d35c56ac0..87dfacd29 100644
--- a/matches/models.py
+++ b/matches/models.py
@@ -101,6 +101,9 @@ class Match(models.Model):
team2reportedwinner = models.ForeignKey(Team, related_name='team2reportedwinner', on_delete=models.SET_NULL,
null=True, blank=True)
+ # TODO: implement datetime field for matches
+ #datetime = models.DateTimeField(null=True)
+
info = models.TextField(default="Match Info: ")
disputed = models.BooleanField(default=False)
From 7ad4b431bfe8cf2877c31df0362415fe888a97f1 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 16:09:01 -0400
Subject: [PATCH 070/104] league add match template
---
.../staff/leagues/league_addmatch.html | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/project-templates/staff/leagues/league_addmatch.html b/project-templates/staff/leagues/league_addmatch.html
index e69de29bb..a35d20b60 100644
--- a/project-templates/staff/leagues/league_addmatch.html
+++ b/project-templates/staff/leagues/league_addmatch.html
@@ -0,0 +1,49 @@
+{% extends 'staff/staffbase.html' %}
+
+{% load static %}
+
+{% block title %}
+ Add match to Division #{{ division.id }}
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+ {% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endfor %}
+ {% for error in form.non_field_errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endif %}
+ Return to league list
+
+
+
+
+{% endblock %}
\ No newline at end of file
From 6ed176c7fea53c4bc33378a9c3a2fe2ee7c3bb5c Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 16:12:14 -0400
Subject: [PATCH 071/104] more work on staff:leagues views
---
staff/views/leagues.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 69e1353e0..d6aa0e588 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -221,15 +221,15 @@ def division_match_add(request, pk, divid):
if user.user_type not in allowed:
return render(request, 'staff/permissiondenied')
else:
+ league = League.objects.get(pk=pk)
+ division = LeagueDivision.objects.get(pk=divid)
if request.method == 'POST':
- league = League.objects.get(pk=pk)
- division = LeagueDivision.objects.get(pk=divid)
- form = AddLeagueMatchForm
- if form.awayteam == '' or form.hometeam == '':
- form.add_error(form, error='Away Team or Home Team values are blank', field=form.awayteam)
+ form = AddLeagueMatchForm(request.POST)
+ if form.is_valid():
try:
- awayteam = Team.objects.get(pk=form.awayteam)
- hometeam = Team.objects.get(pk=form.hometeam)
+
+ awayteam = Team.objects.get(pk=int(form.data['awayteam']))
+ hometeam = Team.objects.get(pk=int(form.data['hometeam']))
tempmatch = Match(awayteam=awayteam, hometeam=hometeam, type='league', game=league.game,
platform=league.platform, sport=league.sport, bestof=1,
@@ -242,8 +242,8 @@ def division_match_add(request, pk, divid):
return redirect('staff:add_match_league')
else:
# its a simple get
- form = AddLeagueMatchForm
- return render(request, 'staff/leagues/league_addmatch.html', {'form': form})
+ form = AddLeagueMatchForm()
+ return render(request, 'staff/leagues/league_addmatch.html', {'form': form, 'league': league, 'division': division})
def division_match_list(request, pk, divid):
From 1ebf22f70e42ecb1075ace9aa44b86ac931e7681 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 16:12:30 -0400
Subject: [PATCH 072/104] make awayteam and hometeam fields required
---
staff/forms.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/staff/forms.py b/staff/forms.py
index 5522aee61..6a560d9a1 100644
--- a/staff/forms.py
+++ b/staff/forms.py
@@ -331,9 +331,9 @@ class Meta:
class AddLeagueMatchForm(forms.Form):
- awayteam = forms.IntegerField
- hometeam = forms.IntegerField
- division = forms.IntegerField
+ awayteam = forms.IntegerField(required=True)
+ hometeam = forms.IntegerField(required=True)
+ division = forms.IntegerField(required=False)
class Meta:
- fields = ('hometeam', 'awayteam', 'division')
\ No newline at end of file
+ fields = ('hometeam', 'awayteam', 'division')
From 99f77048d208c744f15fe569ddc2d0ba44f70639 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 16:26:03 -0400
Subject: [PATCH 073/104] cleaned data over data for posted fields
---
staff/views/leagues.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index d6aa0e588..a6cce14b3 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -228,8 +228,8 @@ def division_match_add(request, pk, divid):
if form.is_valid():
try:
- awayteam = Team.objects.get(pk=int(form.data['awayteam']))
- hometeam = Team.objects.get(pk=int(form.data['hometeam']))
+ awayteam = Team.objects.get(pk=form.cleaned_data['awayteam'])
+ hometeam = Team.objects.get(pk=form.cleaned_data['hometeam'])
tempmatch = Match(awayteam=awayteam, hometeam=hometeam, type='league', game=league.game,
platform=league.platform, sport=league.sport, bestof=1,
From fdacdf5c44ada89785ac6e49a4cb90308ec4fd1f Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Tue, 9 Jun 2020 16:26:16 -0400
Subject: [PATCH 074/104] simple template improvements
---
project-templates/staff/leagues/league_division_matches.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/project-templates/staff/leagues/league_division_matches.html b/project-templates/staff/leagues/league_division_matches.html
index 20186e451..9b6bf4eb4 100644
--- a/project-templates/staff/leagues/league_division_matches.html
+++ b/project-templates/staff/leagues/league_division_matches.html
@@ -8,7 +8,8 @@
{% block body %}
-
Tournament Matches
+
Tournament Matches -
+ (Manually add a match to this division)
From 40b0e36326fd36355bfad42150e3027d24cfee66 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 22 Jun 2020 11:11:22 -0400
Subject: [PATCH 076/104] pass league divisions to league detail template
---
staff/views/leagues.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index a6cce14b3..d5ffbc2c7 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -46,8 +46,8 @@ def detail_league(request, pk):
return render(request, 'staff/permissiondenied.html')
else:
league = League.objects.get(pk=pk)
- divisions = league.divisions
- return render(request, 'staff/leagues/league_detail.html', {'league': league})
+ divisions = league.divisions.all()
+ return render(request, 'staff/leagues/league_detail.html', {'league': league, 'divisions': divisions})
# list all the teams in the league and the divisions
From 31c7503af150a09ab6c9aa3b9b4f9283fecb8d4b Mon Sep 17 00:00:00 2001
From: Mike M
Date: Mon, 22 Jun 2020 17:34:20 -0400
Subject: [PATCH 077/104] uncommited work
---
matches/models.py | 3 ++
.../staff/leagues/league_addmatch.html | 49 +++++++++++++++++++
...ches.html => league_division_matches.html} | 3 +-
staff/forms.py | 8 +--
staff/urls.py | 2 +-
staff/views/leagues.py | 38 +++++++-------
6 files changed, 78 insertions(+), 25 deletions(-)
rename project-templates/staff/leagues/{league_matches.html => league_division_matches.html} (90%)
diff --git a/matches/models.py b/matches/models.py
index d35c56ac0..87dfacd29 100644
--- a/matches/models.py
+++ b/matches/models.py
@@ -101,6 +101,9 @@ class Match(models.Model):
team2reportedwinner = models.ForeignKey(Team, related_name='team2reportedwinner', on_delete=models.SET_NULL,
null=True, blank=True)
+ # TODO: implement datetime field for matches
+ #datetime = models.DateTimeField(null=True)
+
info = models.TextField(default="Match Info: ")
disputed = models.BooleanField(default=False)
diff --git a/project-templates/staff/leagues/league_addmatch.html b/project-templates/staff/leagues/league_addmatch.html
index e69de29bb..a35d20b60 100644
--- a/project-templates/staff/leagues/league_addmatch.html
+++ b/project-templates/staff/leagues/league_addmatch.html
@@ -0,0 +1,49 @@
+{% extends 'staff/staffbase.html' %}
+
+{% load static %}
+
+{% block title %}
+ Add match to Division #{{ division.id }}
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+ {% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endfor %}
+ {% for error in form.non_field_errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endif %}
+ Return to league list
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/project-templates/staff/leagues/league_matches.html b/project-templates/staff/leagues/league_division_matches.html
similarity index 90%
rename from project-templates/staff/leagues/league_matches.html
rename to project-templates/staff/leagues/league_division_matches.html
index 20186e451..9b6bf4eb4 100644
--- a/project-templates/staff/leagues/league_matches.html
+++ b/project-templates/staff/leagues/league_division_matches.html
@@ -8,7 +8,8 @@
{% block body %}
-
Tournament Matches
+
Tournament Matches -
+ (Manually add a match to this division)
Teams
diff --git a/staff/urls.py b/staff/urls.py
index a242fd3b6..8c0af87d0 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -57,6 +57,7 @@
path('leagues/', login_required(views.list_league), name='list_league'),
path('leagues/
/', login_required(views.detail_league), name='detail_league'),
path('leagues//division/', login_required(views.list_division), name='list_division'),
+ path('leagues//division/add', login_required(views.add_division), name='add_division'),
path('leagues//division/create', login_required(views.create_divisions), name='create_division'),
path('leagues//division//', login_required(views.detail_division), name='detail_division'),
path('leagues//division//matches', login_required(views.division_match_list), name='division_matches_league'),
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index df29bbe5e..63d0a4d30 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -187,10 +187,26 @@ def detail_division(request, pk, divid):
else:
league = League.objects.get(pk=pk)
division = LeagueDivision.objects.get(pk=divid)
- return render(request, 'staff/leagues/league_division_detail.html', {'league': league, 'division': division})
+ matches = division.matches.all()
+ return render(request, 'staff/leagues/league_division_detail.html', {'league': league, 'division': division, 'matches':matches})
# show add match, add team button
+def add_division(request, pk):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ tempdiv = LeagueDivision()
+ tempdiv.save()
+ tempdiv.name = league.name + " Division " + str(tempdiv.pk)
+ league.divisions.add(tempdiv)
+ messages.success(request, "Division manually added")
+ return redirect('staff:detail_league', pk=pk)
+
+
def create_divisions(request, pk):
user = UserProfile.objects.get(user__username=request.user.username)
allowed = ['superadmin', 'admin']
@@ -205,9 +221,11 @@ def create_divisions(request, pk):
# lets make the divisions
ids = []
for x in range(league.settings.num_divisions):
- tempdiv = LeagueDivision(name=league.name+" Division "+str(x))
+ tempdiv = LeagueDivision()
+ tempdiv.save()
+ tempdiv.name = league.name+" Division "+str(tempdiv.pk)
tempdiv.save()
- ids.append(tempdiv.id)
+ ids.append(tempdiv.pk)
league.divisions.add(tempdiv)
league.save()
messages.success(request, 'League divisions created with id: '+str(ids))
From 0c3c2b32011f053db9f6a13f01c330c61e1000b7 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 20 Jul 2020 17:47:28 -0400
Subject: [PATCH 082/104] remove redundant staff template
---
project-templates/staff/leagues/league_division_creatematch.html | 0
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 project-templates/staff/leagues/league_division_creatematch.html
diff --git a/project-templates/staff/leagues/league_division_creatematch.html b/project-templates/staff/leagues/league_division_creatematch.html
deleted file mode 100644
index e69de29bb..000000000
From 840459ad9919c2dcb786be054dd0c08d6de8420e Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Mon, 20 Jul 2020 17:47:44 -0400
Subject: [PATCH 083/104] allow staff to manually add a team to a division
---
.../leagues/league_division_addteam.html | 45 +++++++++++++++++++
.../staff/leagues/league_division_detail.html | 17 ++++++-
staff/forms.py | 7 +++
staff/urls.py | 1 +
staff/views/leagues.py | 45 +++++++++++++++++--
5 files changed, 110 insertions(+), 5 deletions(-)
diff --git a/project-templates/staff/leagues/league_division_addteam.html b/project-templates/staff/leagues/league_division_addteam.html
index e69de29bb..e3a3ffe88 100644
--- a/project-templates/staff/leagues/league_division_addteam.html
+++ b/project-templates/staff/leagues/league_division_addteam.html
@@ -0,0 +1,45 @@
+{% extends 'staff/staffbase.html' %}
+
+{% load static %}
+
+{% block title %}
+ Add Team to Division #{{ division.id }}
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+ {% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endfor %}
+ {% for error in form.non_field_errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endif %}
+ Return to league list
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/project-templates/staff/leagues/league_division_detail.html b/project-templates/staff/leagues/league_division_detail.html
index e33930201..ca4850a08 100644
--- a/project-templates/staff/leagues/league_division_detail.html
+++ b/project-templates/staff/leagues/league_division_detail.html
@@ -32,6 +32,12 @@
+ Add a team to this division
+
+
+ Add a match to this division
+
+
Matches
Teams
- <
+ {% for team in division.teams.all %}
+ {{ team.name }}
+ {% endfor %}
{% endblock %}
diff --git a/staff/forms.py b/staff/forms.py
index 6a560d9a1..250017585 100644
--- a/staff/forms.py
+++ b/staff/forms.py
@@ -337,3 +337,10 @@ class AddLeagueMatchForm(forms.Form):
class Meta:
fields = ('hometeam', 'awayteam', 'division')
+
+
+class DivisionAddTeamForm(forms.Form):
+ teamid = forms.IntegerField(required=True)
+
+ class Meta:
+ fields = ('teamid')
diff --git a/staff/urls.py b/staff/urls.py
index 8c0af87d0..384ab6ab6 100644
--- a/staff/urls.py
+++ b/staff/urls.py
@@ -60,6 +60,7 @@
path('leagues//division/add', login_required(views.add_division), name='add_division'),
path('leagues//division/create', login_required(views.create_divisions), name='create_division'),
path('leagues//division//', login_required(views.detail_division), name='detail_division'),
+ path('leagues//division//teamadd', login_required(views.division_add_team), name='division_add_team'),
path('leagues//division//matches', login_required(views.division_match_list), name='division_matches_league'),
path('leagues//division//matches/add', login_required(views.division_match_add), name='division_match_add'),
path('leagues//edit/', login_required(views.edit_league), name='edit_league'),
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 63d0a4d30..98e30fdc1 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -243,15 +243,19 @@ def division_match_add(request, pk, divid):
if request.method == 'POST':
form = AddLeagueMatchForm(request.POST)
if form.is_valid():
+
try:
awayteam = Team.objects.get(pk=form.cleaned_data['awayteam'])
hometeam = Team.objects.get(pk=form.cleaned_data['hometeam'])
-
- tempmatch = Match(awayteam=awayteam, hometeam=hometeam, type='league', game=league.game,
+ if awayteam in division.teams.all() and hometeam in division.teams.all():
+ tempmatch = Match(awayteam=awayteam, hometeam=hometeam, type='league', game=league.game,
platform=league.platform, sport=league.sport, bestof=1,
teamformat=league.teamformat)
- tempmatch.save()
+ tempmatch.save()
+ else:
+ messages.error(request, "One of the teams does not exist within the division")
+ return redirect('staff:detail_division', pk=league.id, divid=division.pk)
division = LeagueDivision.objects.get(pk=form.division)
division.matches.add(tempmatch)
except ObjectDoesNotExist:
@@ -263,6 +267,39 @@ def division_match_add(request, pk, divid):
return render(request, 'staff/leagues/league_addmatch.html', {'form': form, 'league': league, 'division': division})
+def division_add_team(request, pk, divid):
+ user = UserProfile.objects.get(user__username=request.user.username)
+ allowed = ['superadmin', 'admin']
+ if user.user_type not in allowed:
+ return render(request, 'staff/permissiondenied.html')
+ else:
+ league = League.objects.get(pk=pk)
+ division = LeagueDivision.objects.get(pk=divid)
+ if request.method == 'POST':
+ form = DivisionAddTeamForm(request.POST)
+ if form.is_valid():
+ try:
+ team = Team.objects.get(pk=form.cleaned_data['teamid'])
+ except ObjectDoesNotExist:
+ messages.error(request, 'Team does not exist')
+ return redirect('staff:detail_division', pk=league.pk, divid=division.pk)
+ if team in division.teams.all():
+ messages.error(request, 'That Team already exists in the division')
+ return redirect('staff:detail_division', pk=league.pk, divid=division.pk)
+ temp = LeagueTeam(team=team)
+ temp.save()
+ division.teams.add(temp)
+ division.save()
+ messages.success(request, 'Team has been added to the division')
+ return redirect('staff:detail_division', pk=league.pk, divid=division.pk)
+ else:
+ messages.error(request, 'Form validation error')
+ return redirect('staff:detail_division', pk=league.pk, divid=division.pk)
+ else:
+ form = DivisionAddTeamForm()
+ return render(request, 'staff/leagues/league_division_addteam.html', {'division': division, 'league': league, 'form': form})
+
+
def division_match_list(request, pk, divid):
user = UserProfile.objects.get(user__username=request.user.username)
allowed = ['superadmin', 'admin']
@@ -270,6 +307,6 @@ def division_match_list(request, pk, divid):
return render(request, 'staff/permissiondenied')
else:
league = League.objects.get(pk=pk)
- division = LeagueDivision.objects.get(pk=pk)
+ division = LeagueDivision.objects.get(pk=divid)
matches = division.matches.all()
return render(request, 'staff/leagues/league_division_matches.html', {'league': league, 'division': division, 'matches':matches })
\ No newline at end of file
From 76aef406dc81a36c0f745755c242c10c8a3fe482 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 17:06:20 -0400
Subject: [PATCH 084/104] added pr fixes
---
leagues/migrations/0015_auto_20200726_1705.py | 28 ++++++++++++++
leagues/models.py | 4 ++
project-templates/leagues/leagues_list.html | 12 +++---
.../staff/leagues/league_create.html | 38 ++++++++++---------
.../staff/leagues/league_detail.html | 2 +-
5 files changed, 61 insertions(+), 23 deletions(-)
create mode 100644 leagues/migrations/0015_auto_20200726_1705.py
diff --git a/leagues/migrations/0015_auto_20200726_1705.py b/leagues/migrations/0015_auto_20200726_1705.py
new file mode 100644
index 000000000..ed99033cb
--- /dev/null
+++ b/leagues/migrations/0015_auto_20200726_1705.py
@@ -0,0 +1,28 @@
+# Generated by Django 2.2.14 on 2020-07-26 21:05
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0014_auto_20200530_1901'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='league',
+ name='prize1',
+ field=models.CharField(default='no prize specified', max_length=50),
+ ),
+ migrations.AddField(
+ model_name='league',
+ name='prize2',
+ field=models.CharField(default='no prize specified', max_length=50),
+ ),
+ migrations.AddField(
+ model_name='league',
+ name='prize3',
+ field=models.CharField(default='no prize specified', max_length=50),
+ ),
+ ]
diff --git a/leagues/models.py b/leagues/models.py
index 80cc8450a..ce63036b5 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -95,4 +95,8 @@ class League(models.Model):
req_credits = models.PositiveSmallIntegerField(default=0)
size = models.PositiveSmallIntegerField(default=8)
disable_userreport = models.BooleanField(default=False)
+ prize1 = models.CharField(default='no prize specified', max_length=50)
+ prize2 = models.CharField(default='no prize specified', max_length=50)
+ prize3 = models.CharField(default='no prize specified', max_length=50)
+
diff --git a/project-templates/leagues/leagues_list.html b/project-templates/leagues/leagues_list.html
index 29469549d..b3375d683 100644
--- a/project-templates/leagues/leagues_list.html
+++ b/project-templates/leagues/leagues_list.html
@@ -49,7 +49,7 @@
{% else %}
{{ league.sport.name }}
@@ -58,11 +58,15 @@ {{ league.name }}
{% if ESPORTS_MODE %}
- Platform: {{ league.platform.name }} {% endif %}
+ Platform: {{ league.platform.name }}
+ {% endif %}
Starts: {{ league.start }}
Teams: {{ league.teams.count }}/{{ league.size }}
{% if ESPORTS_MODE %}
- Game: {{ league.game.name }} {% endif %}
+ Game: {{ league.game.name }}
+ {% else %}
+ Sport: {{ league.sport.name }}
+ {% endif %}
{% if league.teamformat == 0 %}
1v1
{% elif league.teamformat == 1 %}
@@ -82,14 +86,12 @@ {{ league.name }}
Registration Opens: (Local time)
Registration Closes (Local time)
diff --git a/project-templates/staff/leagues/league_create.html b/project-templates/staff/leagues/league_create.html
index 2a470f206..69db809ef 100644
--- a/project-templates/staff/leagues/league_create.html
+++ b/project-templates/staff/leagues/league_create.html
@@ -13,6 +13,8 @@
src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/js/tempusdominus-bootstrap-4.min.js">
+
+
{% if form.errors %}
{% for field in form %}
@@ -31,6 +33,9 @@
Return to league list
Create a new ruleset
+
+ Create League Settings
+
-
Image
{{ form.image }}
@@ -118,15 +122,15 @@ Return to league list
Prize 1
- form.prize1 }}
+ {{ form.prize1 }}
Prize 2
- form.prize2 }}
+ {{ form.prize2 }}
Prize 3
- form.prize3 }}
+ {{ form.prize3 }}
Active
diff --git a/project-templates/staff/leagues/league_detail.html b/project-templates/staff/leagues/league_detail.html
index 7afbe2285..e3cd65e0f 100644
--- a/project-templates/staff/leagues/league_detail.html
+++ b/project-templates/staff/leagues/league_detail.html
@@ -8,7 +8,7 @@
{% block body %}
- Back to Tournament
+ Back to League
list
From 1912f2c6420bf51d2fd952e8515108ed77515894 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 17:11:06 -0400
Subject: [PATCH 085/104] specify .all() for mtm lists
---
staff/views/leagues.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index 98e30fdc1..f3509195b 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -58,7 +58,7 @@ def league_teams(request, pk):
return render(request, 'staff/permissiondenied.html')
else:
league = League.objects.get(pk=pk)
- divisions = league.divisions
+ divisions = league.divisions.all()
return render(request, 'staff/leagues/league_teams.html', {'league': league, 'divisions': divisions})
From d4f51d0b6bf662368bec01dbb612f497a3057df5 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 17:15:34 -0400
Subject: [PATCH 086/104] fixed division team loop
---
project-templates/staff/leagues/league_division_detail.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/project-templates/staff/leagues/league_division_detail.html b/project-templates/staff/leagues/league_division_detail.html
index ca4850a08..17edd63e5 100644
--- a/project-templates/staff/leagues/league_division_detail.html
+++ b/project-templates/staff/leagues/league_division_detail.html
@@ -57,6 +57,7 @@ Matches
Teams
{% for team in division.teams.all %}
- {{ team.name }}
+ {{ team.team.name }}
+
{% endfor %}
{% endblock %}
From bc789dda57b871d343f2c3417e680e25d4192a55 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 17:17:11 -0400
Subject: [PATCH 087/104] qol fix
---
.../staff/leagues/league_divisions_list.html | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/project-templates/staff/leagues/league_divisions_list.html b/project-templates/staff/leagues/league_divisions_list.html
index d2cddc8fe..3b5945de3 100644
--- a/project-templates/staff/leagues/league_divisions_list.html
+++ b/project-templates/staff/leagues/league_divisions_list.html
@@ -16,15 +16,17 @@
League Name
-
+
{% for division in divisions %}
- {{ division.id }}
+ {{ division.id }}
+
- Matches#{{ division.id }}
+ Matches for division {{ division.id }}
- {{ league.name }}
+ {{ league.name }}
{% endfor %}
@@ -35,7 +37,7 @@
Create a new league
-
+
Create new league settings
From e18b7e3a6e2bf80e7c533d89f99e570c34066dcd Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 17:40:28 -0400
Subject: [PATCH 088/104] add league edit page
---
.../staff/leagues/league_edit.html | 172 ++++++++++++++++++
1 file changed, 172 insertions(+)
diff --git a/project-templates/staff/leagues/league_edit.html b/project-templates/staff/leagues/league_edit.html
index e69de29bb..f9e60e676 100644
--- a/project-templates/staff/leagues/league_edit.html
+++ b/project-templates/staff/leagues/league_edit.html
@@ -0,0 +1,172 @@
+{% extends 'staff/staffbase.html' %}
+
+{% load static %}
+
+{% block title %}
+ Edit League - {{ league.pk }}
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+
+
+ {% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endfor %}
+ {% for error in form.non_field_errors %}
+
+ {{ error|escape }}
+
+ {% endfor %}
+ {% endif %}
+ Return to league list
+
+ Create a new ruleset
+
+ Create League Settings
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
From b54ca935ae09357145051edbeb29d12a73c405db Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 17:41:07 -0400
Subject: [PATCH 089/104] add league.teams field for registration purposes,
fixed /league/pk/teams
also add __str__ function calls
---
leagues/migrations/0016_league_teams.py | 18 ++++++++++++++++++
leagues/models.py | 10 ++++++++++
.../staff/leagues/league_create.html | 4 ++++
.../staff/leagues/league_detail.html | 4 ++++
.../staff/leagues/league_teams.html | 9 +++++++--
5 files changed, 43 insertions(+), 2 deletions(-)
create mode 100644 leagues/migrations/0016_league_teams.py
diff --git a/leagues/migrations/0016_league_teams.py b/leagues/migrations/0016_league_teams.py
new file mode 100644
index 000000000..78948d236
--- /dev/null
+++ b/leagues/migrations/0016_league_teams.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.14 on 2020-07-26 21:27
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('leagues', '0015_auto_20200726_1705'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='league',
+ name='teams',
+ field=models.ManyToManyField(blank=True, to='leagues.LeagueTeam'),
+ ),
+ ]
diff --git a/leagues/models.py b/leagues/models.py
index ce63036b5..ae44f42f2 100644
--- a/leagues/models.py
+++ b/leagues/models.py
@@ -53,6 +53,9 @@ class LeagueTeam(models.Model):
ot_wins = models.PositiveSmallIntegerField(default=0)
ties = models.PositiveSmallIntegerField(default=0)
+ def __str__(self):
+ return self.team.name
+
class LeagueDivision(models.Model):
# name for the league division - set to null in case admins wish to manually change it
@@ -62,6 +65,12 @@ class LeagueDivision(models.Model):
# games that are to be played and have been played in that division, blank until all matches are generated
matches = models.ManyToManyField(Match, blank=True)
+ def __str__(self):
+ if self.name is None:
+ return "Division "+str(self.pk)
+ else:
+ return self.name
+
class League(models.Model):
name = models.CharField(default="League Name", max_length=50)
@@ -98,5 +107,6 @@ class League(models.Model):
prize1 = models.CharField(default='no prize specified', max_length=50)
prize2 = models.CharField(default='no prize specified', max_length=50)
prize3 = models.CharField(default='no prize specified', max_length=50)
+ teams = models.ManyToManyField(LeagueTeam, blank=True)
diff --git a/project-templates/staff/leagues/league_create.html b/project-templates/staff/leagues/league_create.html
index 69db809ef..f3aca5c2d 100644
--- a/project-templates/staff/leagues/league_create.html
+++ b/project-templates/staff/leagues/league_create.html
@@ -121,6 +121,10 @@ Return to league list
{{ form.info }}
+ Teams
+ {{ form.teams }}
+
+
Prize 1
{{ form.prize1 }}
diff --git a/project-templates/staff/leagues/league_detail.html b/project-templates/staff/leagues/league_detail.html
index e3cd65e0f..10f1dcd85 100644
--- a/project-templates/staff/leagues/league_detail.html
+++ b/project-templates/staff/leagues/league_detail.html
@@ -111,6 +111,10 @@
{% endfor %}
+
+
+ Teams
+
diff --git a/project-templates/staff/leagues/league_teams.html b/project-templates/staff/leagues/league_teams.html
index 039064345..36157b954 100644
--- a/project-templates/staff/leagues/league_teams.html
+++ b/project-templates/staff/leagues/league_teams.html
@@ -6,6 +6,11 @@
{% endblock %}
{% block body %}
-
-
+
+ Add Teams to League
+
+ {% for team in league.teams.all %}
+ {{ team.team.name }}
+
+ {% endfor %}
{% endblock %}
\ No newline at end of file
From 2067b8200a8bbda828b3fd4af299c8d8b6e6174c Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 20:02:15 -0400
Subject: [PATCH 090/104] add join and leave league views
---
leagues/urls.py | 2 ++
leagues/views.py | 7 ++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/leagues/urls.py b/leagues/urls.py
index 96c4e0065..391ac52cc 100644
--- a/leagues/urls.py
+++ b/leagues/urls.py
@@ -11,4 +11,6 @@
path('/teams/', login_required(views.detail_league_teams), name='teams'),
path('/divisions/', login_required(views.detail_league_divisions), name='divisions'),
path('/rules/', login_required(views.detail_league_rules), name='rules'),
+ path('/join/', login_required(views.join_league), name='join'),
+ path('/leave/', login_required(views.leave_league), name='leave'),
]
diff --git a/leagues/views.py b/leagues/views.py
index 5fcc35299..40df4567c 100644
--- a/leagues/views.py
+++ b/leagues/views.py
@@ -9,13 +9,18 @@ def list_leagues(request):
def detail_league(request, pk):
league = get_object_or_404(League, pk)
- return render(request, 'leagues/league_detail.html', {'league': league})
+ teams = league.teams.all()
+ return render(request, 'leagues/league_detail.html', {'league': league, 'teams':teams})
def join_league(request, pk):
pass
+def leave_league(request, pk):
+ pass
+
+
def detail_league_teams(request, pk):
pass
From 6b6c537b172e543a335622f33468db35fb1e196a Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 26 Jul 2020 20:02:35 -0400
Subject: [PATCH 091/104] add league detail template
---
project-templates/leagues/league_detail.html | 187 +++++++++++++++++++
1 file changed, 187 insertions(+)
diff --git a/project-templates/leagues/league_detail.html b/project-templates/leagues/league_detail.html
index e69de29bb..3e0780f42 100644
--- a/project-templates/leagues/league_detail.html
+++ b/project-templates/leagues/league_detail.html
@@ -0,0 +1,187 @@
+{% extends "base.html" %}
+{% load static %}
+
+{% block head %}
+ {{ tournament.name }} Details - {{ SITE_NAME }}
+{% endblock %}
+
+{% block body %}
+
+
+
+
+
+
+
+
+
+ {% if not user.is_anonymous %}
+
Back to
+ League list
+ {% else %}
+
Back to home
+ {% endif %}
+
+
+
+
+
+
+ {% else %}
+ {{ league.sport.name }}
+ {% endif %}
+
+
+
+
{{ league.name }}
+ {% if ESPORTS_MODE %}
+
{{ league.platform.name }} | {{ league.game.name }}
+ Map Pool:
{{ league.maps }}
+
+ {% endif %}
+ {{ league.start }} | 1st Place: {{ league.prize1 }}, 2nd
+ Place: {{ league.prize2 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if ESPORTS_MODE %}
+
+
+
+
PLATFORM
+ {{ league.platform.name }}
+
+
+
+ {% endif %}
+
+
+
+
Format
+ {% if league.teamformat == 0 %}
+ 1v1
+ {% elif league.teamformat == 1 %}
+ 2v2
+ {% elif league.teamformat == 2 %}
+ 3v3
+ {% elif league.teamformat == 3 %}
+ 4v4
+ {% elif league.teamformat == 4 %}
+ 5v5
+ {% elif league.teamformat == 5 %}
+ 6v6
+ {% endif %}
+
+
+
+
+
+
+
Registration Opens->Closes
+
+ ->
+
+
+
+
+
+
+
+
Registration Fee
+ {{ league.req_credits }} credits
+
+
+
+
+ {{ league.info|linebreaksbr }}
+
+
+
+
+
+
+
+
+
+ {% if teams.count == 0 %}
+
There are no teams in this league!
+ {% endif %}
+ {% for team in teams %}
+
+
+
+
+
+
+
+
+
+
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
From 3266b5dd96ff8148dc4d7b56264972fbb7c99808 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:24:42 -0400
Subject: [PATCH 092/104] league division list, and league division detail
front end template
initial commit
---
project-templates/leagues/league_division.html | 0
project-templates/leagues/league_divisions.html | 0
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 project-templates/leagues/league_division.html
create mode 100644 project-templates/leagues/league_divisions.html
diff --git a/project-templates/leagues/league_division.html b/project-templates/leagues/league_division.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/project-templates/leagues/league_divisions.html b/project-templates/leagues/league_divisions.html
new file mode 100644
index 000000000..e69de29bb
From 4096dc49d56127c719a4d52a5c48bfb073ba7db6 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:25:08 -0400
Subject: [PATCH 093/104] fix frontend namespace error
---
olly/urls.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/olly/urls.py b/olly/urls.py
index d3648f908..02e6720f7 100644
--- a/olly/urls.py
+++ b/olly/urls.py
@@ -42,7 +42,7 @@
path('tournaments/', include('singletournaments.urls', namespace='singletournaments')),
path('matches/', include('matches.urls', namespace='matches')),
path('wagers/', include('wagers.urls', namespace='wagers')),
- path('leagues/', include('leagues.urls', namespace='leagues'))
+ path('leagues/', include('leagues.urls', namespace='league'))
]
#if settings.DEBUG is True:
# urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
From 49f2385d88d78fc0af84c6b0fbe424b734d0afb8 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:25:34 -0400
Subject: [PATCH 094/104] adjust league urls for detail division and list
division
---
leagues/urls.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/leagues/urls.py b/leagues/urls.py
index 391ac52cc..8b49435a7 100644
--- a/leagues/urls.py
+++ b/leagues/urls.py
@@ -9,7 +9,8 @@
path('', login_required(views.list_leagues), name='list'),
path('/', login_required(views.detail_league), name='detail'),
path('/teams/', login_required(views.detail_league_teams), name='teams'),
- path('/divisions/', login_required(views.detail_league_divisions), name='divisions'),
+ path('/divisions/', login_required(views.list_league_divisions), name='list_divisions'),
+ path('/divisions//', login_required(views.detail_league_division), name='detail_division'),
path('/rules/', login_required(views.detail_league_rules), name='rules'),
path('/join/', login_required(views.join_league), name='join'),
path('/leave/', login_required(views.leave_league), name='leave'),
From bb1baa72f2f0552712fb64a751b731dcdad46f15 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:26:40 -0400
Subject: [PATCH 095/104] styling fixes on front end league detail
---
project-templates/leagues/league_detail.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/project-templates/leagues/league_detail.html b/project-templates/leagues/league_detail.html
index 3e0780f42..0f0358955 100644
--- a/project-templates/leagues/league_detail.html
+++ b/project-templates/leagues/league_detail.html
@@ -37,6 +37,7 @@
{{ league.sport.name }}
{% endif %}
+
{{ league.name }}
From 107f3c1af958d36a5bf8891d82a5513a040f9e8a Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:26:59 -0400
Subject: [PATCH 096/104] rest of the front end league detail fixes
---
project-templates/leagues/league_detail.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/project-templates/leagues/league_detail.html b/project-templates/leagues/league_detail.html
index 0f0358955..b29c53a12 100644
--- a/project-templates/leagues/league_detail.html
+++ b/project-templates/leagues/league_detail.html
@@ -26,7 +26,7 @@
-
+
Registration Opens->Closes
From 8f2f5830e10f5c75f684b3b8354d514b65aa8b6f Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:31:11 -0400
Subject: [PATCH 097/104] league front end division views
---
leagues/views.py | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/leagues/views.py b/leagues/views.py
index 40df4567c..2aa46b8da 100644
--- a/leagues/views.py
+++ b/leagues/views.py
@@ -1,4 +1,6 @@
from django.shortcuts import render, get_object_or_404
+from django.contrib import messages
+from django.shortcuts import redirect
from .models import League, LeagueDivision, LeagueSettings
@@ -8,9 +10,9 @@ def list_leagues(request):
def detail_league(request, pk):
- league = get_object_or_404(League, pk)
+ league = get_object_or_404(League)
teams = league.teams.all()
- return render(request, 'leagues/league_detail.html', {'league': league, 'teams':teams})
+ return render(request, 'leagues/league_detail.html', {'league': league, 'teams': teams})
def join_league(request, pk):
@@ -25,9 +27,23 @@ def detail_league_teams(request, pk):
pass
-def detail_league_divisions(request, pk):
- pass
+def list_league_divisions(request, pk):
+ league = get_object_or_404(League)
+ if league.divisions.count() == 0:
+ messages.warning(request, "There are no divisions for this league yet")
+ return redirect('league:detail', pk)
+ else:
+ divisions = league.divisions.all()
+
+ return render(request, 'leagues/league_divisions.html', {'league': league, 'divisions': divisions})
+
+
+def detail_league_division(request, pk, divid):
+ league = get_object_or_404(League)
+ division = LeagueDivision.objects.get(pk=divid)
+ matches = division.matches.all()
+ return render(request, 'leagues/league_division.html', {'league': league, 'division': division, 'matches': matches})
def detail_league_rules(request, pk):
- pass
\ No newline at end of file
+ pass
From f3eaa3ae19f9ca96b8a652f0daec389e7e3cfb5b Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:31:22 -0400
Subject: [PATCH 098/104] league division front end match template
---
.../leagues/league_division.html | 32 +++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/project-templates/leagues/league_division.html b/project-templates/leagues/league_division.html
index e69de29bb..668336744 100644
--- a/project-templates/leagues/league_division.html
+++ b/project-templates/leagues/league_division.html
@@ -0,0 +1,32 @@
+{% extends "base.html" %}
+{% load static %}
+
+{% block head %}
+ Division #{{ division.id }} Matches - {{ SITE_NAME }}
+{% endblock %}
+
+
+{% block body %}
+
+
+{% endblock %}
\ No newline at end of file
From 49f959ec928708d19e14b7cece85fd38dc057b78 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 12:31:31 -0400
Subject: [PATCH 099/104] league division front end list template
---
.../leagues/league_divisions.html | 41 +++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/project-templates/leagues/league_divisions.html b/project-templates/leagues/league_divisions.html
index e69de29bb..dde91b513 100644
--- a/project-templates/leagues/league_divisions.html
+++ b/project-templates/leagues/league_divisions.html
@@ -0,0 +1,41 @@
+{% extends "base.html" %}
+{% load static %}
+
+{% block head %}
+ {{ league.name }} Divisions - {{ SITE_NAME }}
+{% endblock %}
+
+
+{% block body %}
+
+
+ {% for division in divisions %}
+
+
+
+
+ {{ division.name }}
+ {{ division.pk }}
+
+
+
+
+ {% endfor %}
+
+{% endblock %}
\ No newline at end of file
From 9b3768c3270b89f92d35ed6102be4ad5e7c8caac Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 13:00:09 -0400
Subject: [PATCH 100/104] fix template not found for edit teams
---
teams/views.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/teams/views.py b/teams/views.py
index d23a5395d..26e33c616 100644
--- a/teams/views.py
+++ b/teams/views.py
@@ -114,7 +114,7 @@ def edit_team_view(request, pk):
else:
teamobj = Team.objects.get(id=pk)
form = EditTeamProfileForm(instance=teamobj)
- return render(request, 'team/team_edit.html', {'form': form})
+ return render(request, 'teams/team_edit.html', {'form': form})
class MyTeamDetailView(DetailView):
From 8f3c44a2039cd5ab061ec7d710dd48fff78e05b5 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 13:00:29 -0400
Subject: [PATCH 101/104] temp fix for verifying team exists in division
---
staff/views/leagues.py | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/staff/views/leagues.py b/staff/views/leagues.py
index f3509195b..47297f866 100644
--- a/staff/views/leagues.py
+++ b/staff/views/leagues.py
@@ -243,12 +243,17 @@ def division_match_add(request, pk, divid):
if request.method == 'POST':
form = AddLeagueMatchForm(request.POST)
if form.is_valid():
-
try:
-
+ away = False
+ home = False
awayteam = Team.objects.get(pk=form.cleaned_data['awayteam'])
hometeam = Team.objects.get(pk=form.cleaned_data['hometeam'])
- if awayteam in division.teams.all() and hometeam in division.teams.all():
+ for team in division.teams.all():
+ if team.team.pk is awayteam.pk:
+ away = True
+ if team.team.pk is hometeam.pk:
+ home = True
+ if away and home:
tempmatch = Match(awayteam=awayteam, hometeam=hometeam, type='league', game=league.game,
platform=league.platform, sport=league.sport, bestof=1,
teamformat=league.teamformat)
@@ -256,8 +261,9 @@ def division_match_add(request, pk, divid):
else:
messages.error(request, "One of the teams does not exist within the division")
return redirect('staff:detail_division', pk=league.id, divid=division.pk)
- division = LeagueDivision.objects.get(pk=form.division)
+ division = LeagueDivision.objects.get(pk=division.pk)
division.matches.add(tempmatch)
+ return redirect('staff:detail_division', pk=league.id, divid=division.id)
except ObjectDoesNotExist:
form.add_error(form, error='Team not found', field=form.awayteam)
return redirect('staff:add_match_league')
From 6ed50f1f2a41de2a8ced1fe0f86944ef618b3c2f Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 13:00:39 -0400
Subject: [PATCH 102/104] fix division url on division detail
---
project-templates/leagues/league_detail.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/project-templates/leagues/league_detail.html b/project-templates/leagues/league_detail.html
index b29c53a12..40e9b4c79 100644
--- a/project-templates/leagues/league_detail.html
+++ b/project-templates/leagues/league_detail.html
@@ -55,7 +55,7 @@ {{ league.platform.name }} | {{ league.game.name }}
style="margin-bottom:4px;">INFO
TEAMS
- DIVISIONS
RULES
From 028cf81fc6b745cf9d5adef3b2d6248ba25525f4 Mon Sep 17 00:00:00 2001
From: Mike M
Date: Sun, 2 Aug 2020 13:15:05 -0400
Subject: [PATCH 103/104] bump version
---
olly/base_settings.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/olly/base_settings.py b/olly/base_settings.py
index 4330120df..925c59121 100644
--- a/olly/base_settings.py
+++ b/olly/base_settings.py
@@ -158,4 +158,4 @@
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/login/'
-SITE_VERSION = "0.8.1"
+SITE_VERSION = "0.9.0"
From 2ef9e014ceb8afc1b1a5aa94f20b873f8c3b8902 Mon Sep 17 00:00:00 2001
From: Michael Madden
Date: Sun, 2 Aug 2020 17:21:37 -0400
Subject: [PATCH 104/104] filter by active tournament - closes #89
---
singletournaments/views.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/singletournaments/views.py b/singletournaments/views.py
index ae26f61cc..2af84b2dc 100644
--- a/singletournaments/views.py
+++ b/singletournaments/views.py
@@ -20,7 +20,7 @@ class List(View):
def get(self, request):
form = self.form_class(None)
- tournament_list = SingleEliminationTournament.objects.all()
+ tournament_list = SingleEliminationTournament.objects.all().filter(active=True)
return render(request, 'singletournaments/singletournament_list.html',
{'tournament_list': tournament_list, 'form': form})