Skip to content

Commit

Permalink
Bootsrtap added
Browse files Browse the repository at this point in the history
Datetime picking added
Major improvements
  • Loading branch information
uHappyLogic committed Jun 12, 2016
1 parent 99b2be9 commit 2e6d43f
Show file tree
Hide file tree
Showing 21 changed files with 98 additions and 98 deletions.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion football/apps.py → contest/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@


class FootballConfig(AppConfig):
name = 'football'
name = 'contest'
2 changes: 1 addition & 1 deletion football/forms.py → contest/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def clean(self):
cleaned_data = super(TournamentForm, self).clean()
form_date = cleaned_data.get("date")
if timezone.now() > form_date:
self.add_error('date', "You cannot add aisite from past.")
self.add_error('date', "You cannot add overseer from past.")

if cleaned_data.get("deadline") > form_date:
self.add_error('deadline', "Deadline must start later than start date.")
Expand Down
File renamed without changes.
26 changes: 13 additions & 13 deletions football/models.py → contest/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ def __str__(self):

class Enrollment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
aisite = models.ForeignKey(Tournament)
overseer = models.ForeignKey(Tournament)
ranking = models.IntegerField(unique=True)
license_id = models.IntegerField(unique=True)

def __str__(self):
return "%s joined %s" % (self.user, self.aisite.name)
return "%s joined %s" % (self.user, self.overseer.name)


@receiver(user_registered)
Expand All @@ -63,7 +63,7 @@ def user_registered_handler(sender, user, request, **kwargs):


class Round(models.Model):
aisite = models.ForeignKey(Tournament)
overseer = models.ForeignKey(Tournament)
name = models.IntegerField(blank=False)
# seeded = models.BooleanField()

Expand Down Expand Up @@ -103,14 +103,14 @@ def __str__(self):
}'''

@classmethod
def generate_json(cls, aisite):
def generate_json(cls, overseer):
results = []
teams = []
# teams = [u.user for u in Enrollment.objects.filter(tou)
_round = Match.objects.filter(round__aisite=aisite).aggregate(Max('round__name'))['round__name__max']
_round = Match.objects.filter(round__overseer=overseer).aggregate(Max('round__name'))['round__name__max']
if _round:
for r in range(1, _round + 1):
matches = Match.objects.filter(round__name=str(r), round__aisite=aisite)
matches = Match.objects.filter(round__name=str(r), round__overseer=overseer)
scores = []
for m in matches:
if r == 1:
Expand All @@ -122,13 +122,13 @@ def generate_json(cls, aisite):
'results': results})

@classmethod
def random_matches(cls, teams, aisite):
def random_matches(cls, teams, overseer):
new_round = Round()
new_round.aisite = aisite
new_round.overseer = overseer
new_round.name = Round.objects.all().aggregate(Max('name'))['name__max'] + 1 if Round.objects.count() else 1
new_round.save()
seeded_teams = teams[:aisite.seeded_players]
teams = teams[aisite.seeded_players:]
seeded_teams = teams[:overseer.seeded_players]
teams = teams[overseer.seeded_players:]
for team in seeded_teams:
opponent = random.choice(teams)
match = Match.objects.create(round=new_round,
Expand Down Expand Up @@ -156,7 +156,7 @@ def random_matches(cls, teams, aisite):
teams.remove(team)


def generate_aisite_bracket(sender, instance, created, **kwargs):
def generate_overseer_bracket(sender, instance, created, **kwargs):
if created or instance.tracker.previous('score') == '-':
return
if instance.tracker.has_changed('score') and instance.last_filled:
Expand All @@ -174,7 +174,7 @@ def generate_aisite_bracket(sender, instance, created, **kwargs):
return
pairs = zip(teams[::2], teams[1::2])
new_round = Round()
new_round.aisite = instance.round.aisite
new_round.overseer = instance.round.overseer
new_round.name = instance.round.name + 1
new_round.save()
for player_1, player_2 in pairs:
Expand All @@ -183,4 +183,4 @@ def generate_aisite_bracket(sender, instance, created, **kwargs):
player_2=player_2)


signals.post_save.connect(generate_aisite_bracket, sender=Match)
signals.post_save.connect(generate_overseer_bracket, sender=Match)
File renamed without changes.
26 changes: 13 additions & 13 deletions football/templates/detail.html → contest/templates/detail.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{% extends "full.html" %}

{% block title %}{{ aisite.name }} - details{% endblock %}
{% block title %}{{ overseer.name }} - details{% endblock %}

{% block head %}
{% load staticfiles %}
Expand All @@ -13,36 +13,36 @@
{% load bootstrap3 %}

<div class="row">
<h1>{{ aisite.name }}</h1>
<h1>{{ overseer.name }}</h1>
</div>

<div class="row" style="margin-top:10px;">
<div class="col-md-8">
<dl class="dl-horizontal">
<dt>Description</dt>
<dd>{{ aisite.description }}</dd>
<dd>{{ overseer.description }}</dd>
<dt>Limit</dt>
<dd>{{ count }}/{{ aisite.limit }}</dd>
<dd>{{ count }}/{{ overseer.limit }}</dd>
<dt>Deadline</dt>
<dd>{{ aisite.deadline }}</dd>
<dd>{{ overseer.deadline }}</dd>
<dt>Start date</dt>
<dd>{{ aisite.date }}</dd>
<dd>{{ overseer.date }}</dd>
<dt>Sponsors</dt>
{% for item in aisite.sponsors.all %}
{% for item in overseer.sponsors.all %}
<dd>{{ item.name }}</dd>
{% endfor %}
</dl>
</div>
<div class="col-md-4">
<img src="https://maps.googleapis.com/maps/api/staticmap?zoom=13&size=300x300&maptype=roadmap
&markers=color:blue|{{ aisite.latitude }},{{ aisite.longitude }}" class="img-rounded"/>
&markers=color:blue|{{ overseer.latitude }},{{ overseer.longitude }}" class="img-rounded"/>
</div>
{% if user.is_authenticated %}
<div>
<a class="btn btn-default{% if enrolled != 0 %} disabled{% endif %}" role="button"
{% if enrolled == 0 %}href="{% url 'football:join' aisite.id %}"{% endif %}>Enroll</a>
{% if user == aisite.organizer %}
<a class="btn btn-default" role="button" href="{% url 'football:edit' aisite.id %}">Edit</a>
{% if enrolled == 0 %}href="{% url 'contest:join' overseer.id %}"{% endif %}>Enroll</a>
{% if user == overseer.organizer %}
<a class="btn btn-default" role="button" href="{% url 'contest:edit' overseer.id %}">Edit</a>
{% endif %}
</div>
{% endif %}
Expand All @@ -63,7 +63,7 @@ <h3>Teams</h3>
</tr>
{% endfor %}
</table>
<a class="btn btn-default" role="button" href="{% url 'football:force_detail' aisite.id 1 %}">Start!</a>
<a class="btn btn-default" role="button" href="{% url 'contest:force_detail' overseer.id 1 %}">Start!</a>
{% if matches %}
<h3>Matches</h3>
<table class="table table-condensed">
Expand All @@ -85,7 +85,7 @@ <h3>Matches</h3>
{% if item.last_filled and item.last_filled == request.user %}
Update
{% elif item.player_1 == request.user or item.player_2 == request.user %}
<a href="{% url 'football:update_match' item.id %}">Update</a>
<a href="{% url 'contest:update_match' item.id %}">Update</a>
{% else %}
-
{% endif %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{% extends 'form.html' %}

{% block title %}Join aisite{% endblock %}
{% block title %}Join overseer{% endblock %}

{% block form %}
{% load bootstrap3 %}
{% load bootstrap %}

<h2 class="form-signin-heading">Join aisite</h2>
<h2 class="form-signin-heading">Join overseer</h2>
<form class="form-signin" method="post" action="">
{% csrf_token %}
{% load bootstrap %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
<td>Date</td>
<td>Description</td>
</tr>
{% for item in aisites %}
{% for item in overseers %}
<tr>
<td><a href="{% url 'football:detail' item.id %}">{{ item.name }}</a></td>
<td><a href="{% url 'contest:detail' item.id %}">{{ item.name }}</a></td>
<td>{{ item.date }}</td>
<td>{{ item.description }}</td>
</tr>
{% endfor %}
</table>

{% bootstrap_pagination aisites url="?page={{ aisites.next_page_number }}" size="small" %}
{% bootstrap_pagination overseers url="?page={{ overseers.next_page_number }}" size="small" %}

{% endblock %}
File renamed without changes.
16 changes: 16 additions & 0 deletions contest/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from django.conf.urls import url
from . import views

"""
URL patterns used by 'spierdon' app.
"""
urlpatterns = [
url(r'^overseer/new', views.create, name='create'),
url(r'^overseer/match/(?P<match_id>[0-9]+)/update', views.update_match, name='update_match'),
url(r'^overseer/(?P<overseer_id>[0-9]+)/detail/force=(?P<force>[0-9]+)', views.detail, name='force_detail'),
url(r'^overseer/(?P<overseer_id>[0-9]+)/detail', views.detail, name='detail'),
url(r'^overseer/(?P<overseer_id>[0-9]+)/join', views.join, name='join'),
url(r'^overseer/(?P<overseer_id>[0-9]+)/edit', views.edit, name='edit'),
# url(r'^challenges/', views.get_challenges, name='get_challenges'),
url(r'^', views.index, name='index'),
]
72 changes: 36 additions & 36 deletions football/views.py → contest/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,85 +14,85 @@ def index(request):
paginator = Paginator(Tournament.objects.all(), 10)
page = request.GET.get('page')
try:
aisites = paginator.page(page)
overseers = paginator.page(page)
except PageNotAnInteger:
aisites = paginator.page(1)
overseers = paginator.page(1)
except EmptyPage:
aisites = paginator.page(paginator.num_pages)
return render(request, 'index.html', {'aisites': aisites})
overseers = paginator.page(paginator.num_pages)
return render(request, 'index.html', {'overseers': overseers})


def detail(request, aisite_id, force=0):
aisite = Tournament.objects.get(id=aisite_id)
count = Enrollment.objects.filter(aisite=aisite).count()
enrolled = Enrollment.objects.filter(aisite__pk=aisite_id, user__id=request.user.id).count()
def detail(request, overseer_id, force=0):
overseer = Tournament.objects.get(id=overseer_id)
count = Enrollment.objects.filter(overseer=overseer).count()
enrolled = Enrollment.objects.filter(overseer__pk=overseer_id, user__id=request.user.id).count()

if force:
Tournament.objects.filter(pk=aisite.pk).update(in_progress=False)
Tournament.objects.filter(pk=overseer.pk).update(in_progress=False)

if count == aisite.limit and not aisite.in_progress:
teams = [e.user for e in Enrollment.objects.filter(aisite=aisite).order_by('-ranking')]
Match.random_matches(teams, aisite)
Tournament.objects.filter(pk=aisite.pk).update(in_progress=True)
if count == overseer.limit and not overseer.in_progress:
teams = [e.user for e in Enrollment.objects.filter(overseer=overseer).order_by('-ranking')]
Match.random_matches(teams, overseer)
Tournament.objects.filter(pk=overseer.pk).update(in_progress=True)

return render(request, "detail.html",
{"aisite": aisite,
{"overseer": overseer,
"count": count,
"enrolled": enrolled,
"enrollments": Enrollment.objects.filter(aisite=aisite),
"matches": Match.objects.filter(round__aisite=aisite).order_by('round__name'),
"bracket": Match.generate_json(aisite)})
"enrollments": Enrollment.objects.filter(overseer=overseer),
"matches": Match.objects.filter(round__overseer=overseer).order_by('round__name'),
"bracket": Match.generate_json(overseer)})


@login_required(login_url=reverse_lazy('auth_login'))
def join(request, aisite_id):
def join(request, overseer_id):
if request.method == "POST":
form = EnrollForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.aisite = Tournament.objects.get(pk=aisite_id)
post.overseer = Tournament.objects.get(pk=overseer_id)
post.save()
return redirect('football:detail', aisite_id=aisite_id)
return redirect('contest:detail', overseer_id=overseer_id)
else:
form = EnrollForm()
return render(request, 'enroll.html', {'form': form,
'aisite_id': aisite_id})
'overseer_id': overseer_id})


@login_required(login_url=reverse_lazy('auth_login'))
def create(request):
if request.method == "POST":
form = TournamentForm(request.POST)
if form.is_valid():
aisite = form.save(commit=False)
aisite.organizer = request.user
aisite.save()
overseer = form.save(commit=False)
overseer.organizer = request.user
overseer.save()
form.save_m2m()
return redirect('football:index')
return redirect('contest:index')
else:
form = TournamentForm()
return render(request, 'create.html', {'form': form,
'label': 'Create aisite'})
'label': 'Create overseer'})


@login_required(login_url=reverse_lazy('auth_login'))
def edit(request, aisite_id):
aisite = Tournament.objects.filter(id=aisite_id)
if not aisite:
def edit(request, overseer_id):
overseer = Tournament.objects.filter(id=overseer_id)
if not overseer:
return HttpResponse("Tournament not exist!")
if aisite[0].organizer != request.user:
return HttpResponse("It's not your aisite!")
if overseer[0].organizer != request.user:
return HttpResponse("It's not your overseer!")
if request.method == "POST":
form = TournamentForm(request.POST, instance=aisite[0])
form = TournamentForm(request.POST, instance=overseer[0])
if form.is_valid():
form.save()
return redirect('football:index')
return redirect('contest:index')
else:
form = TournamentForm(instance=aisite[0])
form = TournamentForm(instance=overseer[0])

return render(request, 'create.html', {'form': form,
'label': 'Edit aisite'})
'label': 'Edit overseer'})


@login_required(login_url=reverse_lazy('auth_login'))
Expand All @@ -111,7 +111,7 @@ def update_match(request, match_id):
match = form.save(commit=False)
match.last_filled = request.user
match.save()
return redirect('football:index')
return redirect('contest:index')
else:
form = MatchForm(instance=match)
return render(request, 'create.html', {'form': form,
Expand Down
16 changes: 0 additions & 16 deletions football/urls.py

This file was deleted.

2 changes: 1 addition & 1 deletion manage.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "aisite.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "overseer.settings")

from django.core.management import execute_from_command_line

Expand Down
File renamed without changes.
Loading

0 comments on commit 2e6d43f

Please sign in to comment.