def unpack(self, env): pp = ProblemPackage.objects.get(id=env['package_id']) p = Problem.create(name='foo', short_name='bar', controller_name= 'oioioi.problems.controllers.ProblemController') env['problem_id'] = p.id if 'FAIL' in pp.package_file.name: raise DummyPackageException("DUMMY_FAILURE") return env
def _create_problem_instance(self): author_username = self.env.get('author') if author_username: author = User.objects.get(username=author_username) else: author = None return Problem.create(name=self.short_name, short_name=self.short_name, controller_name=self.controller_name, contest=self.package.contest, is_public=(author is None), author=author)
def _create_problem_instance(self): author_username = self.env.get('author') if author_username: author = User.objects.get(username=author_username) else: author = None return Problem.create( name=self.short_name, short_name=self.short_name, controller_name=self.controller_name, contest=self.package.contest, is_public=(author is None), author=author)
def unpack(self, env, package): self.short_name = self._find_main_folder() self.env = env self.package = package existing_problem = self.package.problem if existing_problem: self.problem = existing_problem self.main_problem_instance = self.problem.main_problem_instance if existing_problem.short_name != self.short_name: raise ProblemPackageError(_("Tried to replace problem " "'%(oldname)s' with '%(newname)s'. For safety, changing " "problem short name is not possible.") % dict(oldname=existing_problem.short_name, newname=self.short_name)) else: author_username = env.get('author') if author_username: author = User.objects.get(username=author_username) else: author = None self.problem = Problem.create( name=self.short_name, short_name=self.short_name, controller_name=self.controller_name, contest=self.package.contest, is_public=(author is None), author=author) problem_site = ProblemSite(problem=self.problem, url_key=generate_key()) problem_site.save() self.problem.problem_site = problem_site self.main_problem_instance = self.problem.main_problem_instance self.problem.package_backend_name = self.package_backend_name self.problem.save() tmpdir = tempfile.mkdtemp() logger.info("%s: tmpdir is %s", self.filename, tmpdir) try: self.archive.extract(to_path=tmpdir) self.rootdir = os.path.join(tmpdir, self.short_name) self.process_package() return self.problem finally: shutil.rmtree(tmpdir) if self.prog_archive: get_client().delete_file(self.prog_archive)
def _create_problem_instance(self): author_username = self.env.get('author') if author_username: author = User.objects.get(username=author_username) else: author = None return Problem.create( name=self.short_name, short_name=self.short_name, controller_name=self.controller_name, contest=self.package.contest, visibility=(Problem.VISIBILITY_PUBLIC if author is None else self.env.get( 'visibility', Problem.VISIBILITY_FRIENDS)), author=author)