def make_match(self, pla_query, plb_query, pla_race_or, plb_race_or, sca, scb, make_flag, dup_flag): pla = self.get_player(pla_query, make_flag) plb = self.get_player(plb_query, make_flag) if (pla is None or plb is None) and self.is_adm: return None if not self.is_adm: match = PreMatch( group = self.prematchgroup, pla = pla, plb = plb, pla_string = ' '.join(pla_query), plb_string = ' '.join(plb_query), sca = sca, scb = scb, date = self.cleaned_data['date'], rca = pla_race_or, rcb = plb_race_or, ) return match else: match = Match( pla = pla, plb = plb, sca = sca, scb = scb, rca = pla_race_or or (pla.race if pla.race != 'S' else 'R'), rcb = plb_race_or or (plb.race if plb.race != 'S' else 'R'), date = self.cleaned_data['date'], treated = False, eventobj = self.cleaned_data['eventobj'], game = self.cleaned_data['game'], offline = self.cleaned_data['offline'], ) if check_duplicates(match, dup_flag): self.messages.append(Message( _("Could not make match %(pla)s vs %(plb)s: possible duplicate found.") % {'pla': pla.tag, 'plb': plb.tag}, type=Message.ERROR, )) self.close_after = False return None if 'R' in [match.rca, match.rcb]: self.messages.append(Message( _("Unknown race in %(pla)s vs %(plb)s: set to random.") % {'pla': pla.tag, 'plb': plb.tag}, type=Message.WARNING, )) match.set_period() match.set_ratings() return match
def commit(self, post, submitter): self.messages = [] if not self.is_valid(): self.messages.append( Message(_('Entered data was invalid, no changes made.'), type=Message.ERROR)) for field, errors in self.errors.items(): for error in errors: if field == '__all__': self.messages.append(Message(error, type=Message.ERROR)) else: self.messages.append( Message(error=error, field=self.fields[field].label)) return prematches = [ PreMatch.objects.get(id=int(key.split('-')[-1])) for key in sorted(post.keys()) if key[0:6] == 'match-' and post[key] == 'y' ] matches = [] for pm in prematches: if not self.approve: group = pm.group pm.delete() if not group.prematch_set.exists(): group.delete() continue if pm.pla is None: pm.pla_string = post['match-%i-pla' % pm.id] if pm.plb is None: pm.plb_string = post['match-%i-plb' % pm.id] pm.save() for msg in fill_players(pm): self.messages.append(Message(msg, type=Message.ERROR)) if pm.is_valid(): m = Match( pla=pm.pla, plb=pm.plb, sca=pm.sca, scb=pm.scb, rca=pm.rca or (pm.pla.race if pm.pla.race != 'S' else 'R'), rcb=pm.rcb or (pm.plb.race if pm.plb.race != 'S' else 'R'), date=self.cleaned_data['date'] or pm.group.date, eventobj=self.cleaned_data['eventobj'], event=pm.group.event, submitter=submitter, offline=pm.group.offline, game=pm.group.game, ) if check_duplicates(m, self.cleaned_data['dup_flag']): self.messages.append( Message( _("Could not make match %(pla)s vs %(plb)s: possible duplicate found." ) % { 'pla': m.pla.tag, 'plb': m.plb.tag }, type=Message.ERROR, )) continue if 'R' in [m.rca, m.rcb]: self.messages.append( Message( _("Unknown race in %(pla)s vs %(plb)s: set to random." ) % { 'pla': pla.tag, 'plb': plb.tag }, type=Message.WARNING, )) m.set_period() m.set_ratings() m.save() matches.append(m) group = pm.group pm.delete() if not group.prematch_set.exists(): group.delete() else: pm.save() if self.approve and len(matches) > 0: self.messages.append( Message(ungettext_lazy('Successfully approved %i match.', 'Successfully approved %i matches.', len(matches)) % len(matches), type=Message.SUCCESS)) elif not self.approve and len(prematches) > 0: self.messages.append( Message(ungettext_lazy('Successfully rejected %i match.', 'Successfully rejected %i matches.', len(prematches)) % len(prematches), type=Message.SUCCESS))