コード例 #1
0
    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)))
コード例 #2
0
 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))