-from django.shortcuts import render
+from datetime import datetime
+import json
+from django.shortcuts import render, get_object_or_404
from django.template import RequestContext
-from meta.models import TournamentModel, RecordModel
+from django.http import HttpResponse
+from meta.models import TournamentModel, RecordModel, DeckListModel
from mlpccg.CardDb import CARDDB
from mlpccg.DeckList import DeckList
from mlpccg.Clustering import Clustering
tournament_data = []
for tournament in tournament_models:
tournament_records = tournament.recordmodel_set.all().order_by('placement')
- tournament_decks = [DeckList(name=record.decklist.name, url=record.decklist.url) for record in tournament_records]
+ tournament_decks = [(record.placement, DeckList(name=record.decklist.name, url=record.decklist.url)) for record in tournament_records]
tournament_data += [{'tournament': tournament, 'decklists': tournament_decks}]
records = RecordModel.objects.all()
return render(request, 'index.html', {
'ranking': ranking,
- 'tournaments': tournament_data},
- context_instance=RequestContext(request))
+ 'tournaments': tournament_data
+ }, context_instance=RequestContext(request))
+
+def tournaments_json(request):
+ return HttpResponse(json.dumps([{'name': t.name, 'id': t.id} for t in TournamentModel.objects.all()]),
+ content_type='application/json')
+
+def tournaments_detail(request, tournament_id):
+ tournament = get_object_or_404(TournamentModel, pk=tournament_id)
+ records = [(record.placement,
+ DeckList(name=record.decklist.name, url=record.decklist.url),
+ record.verified) for record in tournament.recordmodel_set.all()]
+
+ records.sort(key=lambda x: x[0])
+
+ return render(request, 'tournament_detail.html', {
+ 'records': records,
+ 'tournament': tournament})
+
+def decklists(request):
+ decklists = DeckListModel.objects.all()
+
+ return render(request, 'decklists.html', {
+ 'decklists': decklists})
+
+def decklists_detail(request, decklist_id):
+ decklist = get_object_or_404(DeckListModel, pk=decklist_id)
+
+ return render(request, 'decklists_detail.html', {
+ 'decklist': decklist})
def rate(request):
+ url = request.POST.get('url', 'v1code=%s' % request.GET.get('v1code'))
+
+ decklist = DeckList(url=url)
+
+ if request.POST.get('d_name') and request.POST.get('t_date') and request.POST.get('t_name') and request.POST.get('t_placement'):
+ try:
+ tournament = TournamentModel.objects.get(name__iexact=request.POST['t_name'])
+
+ except TournamentModel.DoesNotExist:
+ tournament = TournamentModel(name=request.POST['t_name'],
+ date=datetime.strptime(request.POST['t_date'], '%Y-%m-%d'),
+ verified=False)
+ tournament.save()
+
+ decklist_model = DeckListModel(name=request.POST['d_name'], url=request.POST['url'])
+ decklist_model.save()
+
+ record = RecordModel(placement=request.POST['t_placement'],
+ tournament=tournament,
+ decklist=decklist_model,
+ verified=False)
+ record.save()
+
records = RecordModel.objects.all()
- placements = [{'decklist': DeckList(name=record.decklist.name, url=record.decklist.url), 'placement': record.placement} for record in records if record.decklist.url]
+ placements = [{'decklist': DeckList(name=record.decklist.name, url=record.decklist.url), 'placement': record.placement, 'record': record} for record in records if record.decklist.url]
clustering = Clustering(records=placements)
- decklist = DeckList(url=request.POST['url'])
label = clustering.predict(decklist)
- return render(request, 'rate.html', {})
+ similiar = []
+ for placement in placements:
+ for deck in clustering.clusters[label]:
+ if placement['decklist'] == deck:
+ similiar += [(deck, placement['record'])]
+
+ return render(request, 'rate.html', {
+ 'deck': decklist,
+ 'similiar': similiar
+ }, context_instance=RequestContext(request))