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))
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 self.cleaned_data['reject']: 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.cleaned_data['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 self.cleaned_data['reject'] 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 ))