def generate_pairings_view(self, request, object_id):
round_ = get_object_or_404(Round, pk=object_id)
if not request.user.has_perm('tournament.generate_pairings', round_.season.league):
raise PermissionDenied
if request.method == 'POST':
form = forms.GeneratePairingsForm(request.POST)
if form.is_valid():
try:
if form.cleaned_data['run_in_background']:
signals.do_generate_pairings.send(sender=self.__class__, round_id=round_.pk, overwrite=form.cleaned_data['overwrite_existing'])
self.message_user(request, 'Generating pairings in background.', messages.INFO)
return redirect('admin:review_pairings', object_id)
else:
pairinggen.generate_pairings(round_, overwrite=form.cleaned_data['overwrite_existing'])
with reversion.create_revision():
reversion.set_user(request.user)
reversion.set_comment('Generated pairings.')
round_.publish_pairings = False
round_.save()
self.message_user(request, 'Pairings generated.', messages.INFO)
return redirect('admin:review_pairings', object_id)
except pairinggen.PairingsExistException:
if not round_.publish_pairings:
self.message_user(request, 'Unpublished pairings already exist.', messages.WARNING)
return redirect('admin:review_pairings', object_id)
self.message_user(request, 'Pairings already exist for the selected round.', messages.ERROR)
except pairinggen.PairingHasResultException:
self.message_user(request, 'Pairings with results can\'t be overwritten.', messages.ERROR)
except pairinggen.PairingGenerationException as e:
self.message_user(request, 'Error generating pairings. %s' % e.message, messages.ERROR)
return redirect('admin:generate_pairings', object_id=round_.pk)
else:
form = forms.GeneratePairingsForm()
context = {
'has_permission': True,
'opts': self.model._meta,
'site_url': '/',
'original': round_,
'title': 'Generate pairings',
'form': form
}
return render(request, 'tournament/admin/generate_pairings.html', context)
评论列表
文章目录