From 480050fac361be86e5f444a70bbb62e6a4158bf0 Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Tue, 26 Jan 2016 16:39:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B8=85=E7=90=86=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E5=90=8C=E6=97=B6=E6=9B=B4=E6=96=B0=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=96=87=E5=AD=97=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/management/commands/cleantestcase.py | 36 ++++++++++++++++++++++ utils/management/commands/initadmin.py | 8 ++--- 2 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 utils/management/commands/cleantestcase.py diff --git a/utils/management/commands/cleantestcase.py b/utils/management/commands/cleantestcase.py new file mode 100644 index 00000000..5b111e9f --- /dev/null +++ b/utils/management/commands/cleantestcase.py @@ -0,0 +1,36 @@ +# coding=utf-8 +import shutil +import os +from django.conf import settings +from django.core.management.base import BaseCommand +from problem.models import Problem +from contest.models import ContestProblem + + +class Command(BaseCommand): + """ + 清除测试用例文件夹中无用的测试用例 + """ + def handle(self, *args, **options): + self.stdout.write(self.style.WARNING("Please backup your test case dir firstly!")) + problem_test_cases = [item.test_case_id for item in Problem.objects.all()] + contest_problem_test_cases = [item.test_case_id for item in ContestProblem.objects.all()] + + test_cases = list(set(problem_test_cases + contest_problem_test_cases)) + test_cases_dir = os.listdir(settings.TEST_CASE_DIR) + + # 在 test_cases_dir 而不在 test_cases 中的 + dir_to_be_removed = list(set(test_cases_dir).difference(set(test_cases))) + if dir_to_be_removed: + self.stdout.write(self.style.ERROR("Following dirs will be removed: ")) + for item in dir_to_be_removed: + self.stdout.write(self.style.WARNING(os.path.join(settings.TEST_CASE_DIR, item))) + self.stdout.write(self.style.ERROR("Input yes to confirm: ")) + if raw_input() == "yes": + for item in dir_to_be_removed: + shutil.rmtree(os.path.join(settings.TEST_CASE_DIR, item), ignore_errors=True) + self.stdout.write(self.style.SUCCESS("Done")) + else: + self.stdout.write(self.style.SUCCESS("Nothing happened")) + else: + self.stdout.write(self.style.SUCCESS("Test case dir is clean, nothing to do")) diff --git a/utils/management/commands/initadmin.py b/utils/management/commands/initadmin.py index 94d2c3ae..64cc2672 100644 --- a/utils/management/commands/initadmin.py +++ b/utils/management/commands/initadmin.py @@ -1,5 +1,5 @@ # coding=utf-8 -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from account.models import User, SUPER_ADMIN, UserProfile from utils.shortcuts import rand_str @@ -11,6 +11,6 @@ class Command(BaseCommand): user.set_password(rand_password) user.save() UserProfile.objects.create(user=user) - self.stdout.write("Successfully created super admin user.\nUsername: root\nPassword: %s\n" - "Remember to change password and turn on two factors auth " - "after installation." % rand_password) + self.stdout.write(self.style.SUCCESS("Successfully created super admin user.\nUsername: root\nPassword: %s\n" + "Remember to change password and turn on two factors auth " + "after installation." % rand_password))