1 from datetime
import datetime
4 from django
.shortcuts
import render
, get_object_or_404
5 from django
.template
import RequestContext
6 from django
.http
import HttpResponse
7 from meta
.models
import TournamentModel
, RecordModel
, DeckListModel
8 from mlpccg
.CardDb
import CARDDB
9 from mlpccg
.DeckList
import DeckList
10 from mlpccg
.Clustering
import Clustering
13 tournament_models
= TournamentModel
.objects
.all().order_by('-date')
15 for tournament
in tournament_models
:
16 tournament_records
= tournament
.recordmodel_set
.all().order_by('placement')
17 tournament_decks
= [DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
) for record
in tournament_records
]
18 tournament_data
+= [{'tournament': tournament
, 'decklists': tournament_decks
}]
20 records
= RecordModel
.objects
.all()
21 placements
= [{'decklist': DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
), 'placement': record
.placement
} for record
in records
if record
.decklist
.url
]
22 clustering
= Clustering(records
=placements
)
23 ranking
= [(int(avg
), label
, [decklist
for decklist
in clustering
.clusters
[label
]]) for avg
, label
in clustering
.ranking()]
25 return render(request
, 'index.html', {
27 'tournaments': tournament_data
28 }, context_instance
=RequestContext(request
))
30 def tournaments(request
):
31 return HttpResponse(json
.dumps([{'name': t
.name
, 'id': t
.id} for t
in TournamentModel
.objects
.all()]),
32 content_type
='application/json')
34 def tournaments_detail(request
, tournament_id
):
35 tournament
= get_object_or_404(TournamentModel
, pk
=tournament_id
)
36 records
= [(record
.placement
,
37 DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
),
38 record
.verified
) for record
in tournament
.recordmodel_set
.all()]
40 records
.sort(key
=lambda x
: x
[0])
42 return render(request
, 'tournament_detail.html', {
44 'tournament': tournament
})
47 decklist
= DeckList(url
=request
.POST
['url'])
49 if request
.POST
.get('d_name') and request
.POST
.get('t_date') and request
.POST
.get('t_name') and request
.POST
.get('t_placement'):
51 tournament
= TournamentModel
.objects
.get(name__iexact
=request
.POST
['t_name'])
53 except TournamentModel
.DoesNotExist
:
54 tournament
= TournamentModel(name
=request
.POST
['t_name'],
55 date
=datetime
.strptime(request
.POST
['t_date'], '%Y-%m-%d'),
59 decklist_model
= DeckListModel(name
=request
.POST
['d_name'], url
=request
.POST
['url'])
62 record
= RecordModel(placement
=request
.POST
['t_placement'],
63 tournament
=tournament
,
64 decklist
=decklist_model
,
68 records
= RecordModel
.objects
.all()
69 placements
= [{'decklist': DeckList(name
=record
.decklist
.name
, url
=record
.decklist
.url
), 'placement': record
.placement
, 'record': record
} for record
in records
if record
.decklist
.url
]
70 clustering
= Clustering(records
=placements
)
71 label
= clustering
.predict(decklist
)
74 for placement
in placements
:
75 for deck
in clustering
.clusters
[label
]:
76 if placement
['decklist'] == deck
:
77 similiar
+= [(deck
, placement
['record'])]
79 return render(request
, 'rate.html', {
82 }, context_instance
=RequestContext(request
))