1 from datetime
import datetime
3 from django
.shortcuts
import render
, get_object_or_404
4 from django
.template
import RequestContext
5 from django
.http
import HttpResponse
6 from meta
.models
import TournamentModel
, RecordModel
, DeckListModel
7 from mlpccg
.CardDb
import CARDDB
8 from mlpccg
.DeckList
import DeckList
9 from mlpccg
.Clustering
import Clustering
12 tournament_models
= TournamentModel
.objects
.all().order_by('-date')
14 for tournament
in tournament_models
:
15 tournament_records
= tournament
.recordmodel_set
.all().order_by('placement')
16 tournament_decks
= [(record
.placement
, DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
)) for record
in tournament_records
]
17 tournament_data
+= [{'tournament': tournament
, 'decklists': tournament_decks
}]
19 records
= RecordModel
.objects
.all()
20 placements
= [{'decklist': DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
), 'placement': record
.placement
} for record
in records
if record
.decklist
.url
]
21 clustering
= Clustering(records
=placements
)
22 ranking
= [(int(avg
), label
, [decklist
for decklist
in clustering
.clusters
[label
]]) for avg
, label
in clustering
.ranking()]
24 return render(request
, 'index.html', {
26 'tournaments': tournament_data
27 }, context_instance
=RequestContext(request
))
29 def tournaments(request
):
30 return HttpResponse(json
.dumps([{'name': t
.name
, 'id': t
.id} for t
in TournamentModel
.objects
.all()]),
31 content_type
='application/json')
33 def tournaments_detail(request
, tournament_id
):
34 tournament
= get_object_or_404(TournamentModel
, pk
=tournament_id
)
35 records
= [(record
.placement
,
36 DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
),
37 record
.verified
) for record
in tournament
.recordmodel_set
.all()]
39 records
.sort(key
=lambda x
: x
[0])
41 return render(request
, 'tournament_detail.html', {
43 'tournament': tournament
})
46 decklist
= DeckList(url
=request
.POST
['url'])
48 if request
.POST
.get('d_name') and request
.POST
.get('t_date') and request
.POST
.get('t_name') and request
.POST
.get('t_placement'):
50 tournament
= TournamentModel
.objects
.get(name__iexact
=request
.POST
['t_name'])
52 except TournamentModel
.DoesNotExist
:
53 tournament
= TournamentModel(name
=request
.POST
['t_name'],
54 date
=datetime
.strptime(request
.POST
['t_date'], '%Y-%m-%d'),
58 decklist_model
= DeckListModel(name
=request
.POST
['d_name'], url
=request
.POST
['url'])
61 record
= RecordModel(placement
=request
.POST
['t_placement'],
62 tournament
=tournament
,
63 decklist
=decklist_model
,
67 records
= RecordModel
.objects
.all()
68 placements
= [{'decklist': DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
), 'placement': record
.placement
, 'record': record
} for record
in records
if record
.decklist
.url
]
69 clustering
= Clustering(records
=placements
)
70 label
= clustering
.predict(decklist
)
73 for placement
in placements
:
74 for deck
in clustering
.clusters
[label
]:
75 if placement
['decklist'] == deck
:
76 similiar
+= [(deck
, placement
['record'])]
78 return render(request
, 'rate.html', {
81 }, context_instance
=RequestContext(request
))