def handle(self, *args, **options): if len(args) != 1: raise CommandError(_("Expected one argument")) try: contest = Contest.objects.get(id=args[0]) except Contest.DoesNotExist: raise CommandError(_("Contest %s does not exist") % args[0]) rcontroller = contest.controller.registration_controller() if not issubclass(getattr(rcontroller, 'participant_admin', None), OnsiteRegistrationParticipantAdmin): raise CommandError(_("Wrong type of contest")) with transaction.atomic(): DnsToUser.objects.all().delete() dns_names = set() for participant in Participant.objects.filter(contest=contest) \ .select_related('user'): user = participant.user dns_name = username_to_dns_name(user.username) if dns_name in dns_names: raise CommandError(_("DNS names confilct: %s") % dns_name) dns_names.add(dns_name) DnsToUser(user=user, dns_name=dns_name).save() self.stdout.write(_("Processed %d entries") % (len(dns_names)))
def load_data(self, module, modelMgr, data): self.stderr.write("Loading...\n") for row in data: try: if module == 'ip': binding = IpToUser(user=User.objects.get(username=row[0]), ip_addr=row[1]) elif module == 'dns': binding = DnsToUser(user=User.objects.get(username=row[0]), dns_name=row[1]) binding.full_clean() binding.save() except Exception as e: self.stderr.write("Error for %s: %s\n" % (row, e))