Ejemplo n.º 1
0
    def _connected(self):
        judge = self.judge = Judge.objects.get(name=self.name)
        judge.start_time = timezone.now()
        judge.online = True
        judge.problems.set(
            Problem.objects.filter(code__in=list(self.problems.keys())))
        judge.runtimes.set(
            Language.objects.filter(key__in=list(self.executors.keys())))

        # Delete now in case we somehow crashed and left some over from the last connection
        RuntimeVersion.objects.filter(judge=judge).delete()
        versions = []
        for lang in judge.runtimes.all():
            versions += [
                RuntimeVersion(language=lang,
                               name=name,
                               version='.'.join(map(str, version)),
                               priority=idx,
                               judge=judge)
                for idx, (name, version) in enumerate(self.executors[lang.key])
            ]
        RuntimeVersion.objects.bulk_create(versions)
        judge.last_ip = self.client_address[0]
        judge.save()
        self.judge_address = '[%s]:%s' % (self.client_address[0],
                                          self.client_address[1])
        json_log.info(
            self._make_json_log(action='auth',
                                info='judge successfully authenticated',
                                executors=list(self.executors.keys())))
Ejemplo n.º 2
0
    def _connected(self):
        judge = Judge.objects.get(name=self.name)
        judge.start_time = timezone.now()
        judge.online = True
        judge.problems = Problem.objects.filter(code__in=self.problems.keys())
        judge.runtimes = Language.objects.filter(key__in=self.executors.keys())

        # Delete now in case we somehow crashed and left some over from the last connection
        RuntimeVersion.objects.filter(judge=judge).delete()
        for lang in judge.runtimes.all():
            runtimes = []
            for idx, data in enumerate(self.executors[lang.key]):
                name, version = data
                runtimes.append(
                    RuntimeVersion(language=lang,
                                   name=name,
                                   version='.'.join(map(str, version)),
                                   priority=idx,
                                   judge=judge))
            RuntimeVersion.objects.bulk_create(runtimes)
        judge.last_ip = self.client_address[0]
        judge.save()