diff --git a/Main/models/userinfo.py b/Main/models/userinfo.py index 13a3eb5..adeab60 100644 --- a/Main/models/userinfo.py +++ b/Main/models/userinfo.py @@ -53,11 +53,11 @@ class UserInfo(models.Model): @cached_property def available_tasks(self): - return Task.objects.filter(Q(public=True) | Q(creator=self.user) | Q(editors__in=self.user.username)).order_by('name') + return Task.objects.filter(Q(public=True) | Q(creator=self.user) | Q(editors__contains=[self.user.username])).order_by('name') @property def available_sets(self): - return Set.objects.filter(Q(public=True) | Q(creator=self.user) | Q(editors__in=self.user.username)).order_by('name') + return Set.objects.filter(Q(public=True) | Q(creator=self.user) | Q(editors__contains=[self.user.username])).order_by('name') @property def place(self): diff --git a/SprintLib/testers/BaseTester.py b/SprintLib/testers/BaseTester.py index 400da1a..8ad1f9b 100644 --- a/SprintLib/testers/BaseTester.py +++ b/SprintLib/testers/BaseTester.py @@ -38,8 +38,13 @@ class BaseTester: raise TestException("RE") result = open(join(self.solution.testing_directory, "output.txt"), "r").read() print("got result", result) - if result.strip().replace('\r\n', '\n') != self.predicted.strip().replace('\r\n', '\n'): - raise TestException("WA") + if exists(f"solutions/{self.solution.id}/checker.sh"): + code = self.solution.exec_command(f"./checker.sh --expected {self.predicted} --output {result}") + if code != 0: + raise TestException("WA") + else: + if result.strip().replace('\r\n', '\n') != self.predicted.strip().replace('\r\n', '\n'): + raise TestException("WA") def after_test(self): pass diff --git a/templates/task_settings.html b/templates/task_settings.html index 959957a..0e2c1bf 100644 --- a/templates/task_settings.html +++ b/templates/task_settings.html @@ -168,7 +168,7 @@