Skip to content

Commit 254e568

Browse files
authored
Merge pull request #754 from Lingghh/bugfix/fix_project_delete
🐛修复项目删除逻辑
2 parents 8165d4e + 77a77ec commit 254e568

8 files changed

Lines changed: 67 additions & 7 deletions

File tree

server/configs/django/local_analysis.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
# 管理员列表
2828
ADMINS = []
2929

30+
# Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
31+
# 生成方式:
32+
# 步骤一:执行 python 命令
33+
# 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
34+
# 步骤三:获取执行输出,拷贝替换下方的SECRET_KEY
3035
# SECURITY WARNING: keep the secret key used in production secret!
3136
SECRET_KEY = os.environ.get("ANALYSIS_SECRET_KEY", "25n=e*_e=4q!ert$4u#9v&^2n+)_#mi7&7ll@x29@j=w=k^q@^")
3237

server/configs/django/local_file.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212

1313
DEBUG = True if os.environ.get("FILE_DEBUG_MODE") == "true" else False
1414

15+
# Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
16+
# 生成方式:
17+
# 步骤一:执行 python 命令
18+
# 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
19+
# 步骤三:获取执行输出,拷贝替换下方的SECRET_KEY
1520
SECRET_KEY = os.environ.get("FILE_SECRET_KEY", "4uf)0sfdth1bn7t450_6)_^+pcx4qa8_nw5l1!g3gp%0loq5p^")
1621

1722
# 服务域名

server/configs/django/local_login.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515

1616
DEBUG = True if os.environ.get("LOGIN_DEBUG_MODE") == "true" else False
1717

18+
# Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
19+
# 生成方式:
20+
# 步骤一:执行 python 命令
21+
# 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
22+
# 步骤三:获取执行输出,拷贝替换下方的SECRET_KEY
1823
SECRET_KEY = os.environ.get("LOGIN_SECRET_KEY", "iht%_(ixb)w&sedrh2t-ydxnre)uy+=_hv4v^8m@19p27r6sz_")
1924

2025
# 数据库配置,可参考django数据库配置

server/configs/django/local_main.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
# 管理员列表
2828
ADMINS = []
2929

30+
# Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
31+
# 生成方式:
32+
# 步骤一:执行 python 命令
33+
# 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
34+
# 步骤三:获取执行输出,拷贝替换下方的SECRET_KEY
3035
# SECURITY WARNING: keep the secret key used in production secret!
3136
SECRET_KEY = os.environ.get("MAIN_SECRET_KEY", "lh+6y8pyf16bbor*)p=kp=p(cg615+y+5nnin$l(n%os$8z^v%")
3237

@@ -106,6 +111,7 @@
106111
}
107112

108113
# 登录鉴权公钥
114+
# Notice:默认的公钥仅测试用途,如在正式环境部署请重新生成
109115
AUTHORIZATION_PUBKEY = """-----BEGIN PUBLIC KEY-----
110116
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtuJtwo+ZkqAA7ZKNdzcQM1N+r
111117
anRqpNE+R4MKfzCa4uKURK9z7cG6DQT6ihpdSYw36iaMIRMYUM7SsismpYYe68q3

server/dockerconfs/.env.local

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ FILE_SERVER_URL=http://nginx:8000/files/
1515

1616
# Main工程配置
1717
## 框架配置
18+
## Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
19+
## 生成方式:
20+
## 步骤一:执行 python 命令
21+
## 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
22+
## 步骤三:获取执行输出,拷贝替换下方的MAIN_SECRET_KEY
1823
MAIN_DEBUG_MODE=true
1924
MAIN_SECRET_KEY='lh+6y8pyf16bbor*)p=kp=p(cg615+y+5nnin$l(n%os$8z^v%'
2025
HTTPS_CLONE_FLAG=true
@@ -36,6 +41,11 @@ MAIN_REDIS_DBID=1
3641
MAIN_SENTRY_DSN=
3742

3843
## 服务交互配置
44+
## Notice:默认的KEY和Token仅测试用途,如在正式环境部署请重新生成
45+
## 生成方式:
46+
## 步骤一:执行 python 命令
47+
## 步骤二:输入代码 import random, string; print(''.join(random.sample(string.ascii_lowercase + string.digits, 16)))
48+
## 步骤三:获取执行输出,拷贝替换下方的PASSWORD_KEY和API_TICKET_SALT
3949
PASSWORD_KEY=a6x4c7esudcv396w
4050
API_TICKET_SALT=a6x4c7esudcv396w
4151
API_TICKET_TOKEN=tca@public@2021
@@ -44,6 +54,11 @@ CODEDOG_TOKEN=0712b895f30c5e958ec71a7c22e1b1a2ad1d5c6b
4454
SCMPROXY_TIMEOUT=300
4555

4656
# Analysis工程配置
57+
## Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
58+
## 生成方式:
59+
## 步骤一:执行 python 命令
60+
## 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
61+
## 步骤三:获取执行输出,拷贝替换下方的ANALYSIS_SECRET_KEY
4762
ANALYSIS_DEBUG_MODE=true
4863
ANALYSIS_SECRET_KEY='25n=e*_e=4q!ert$4u#9v&^2n+)_#mi7&7ll@x29@j=w=k^q@^'
4964

@@ -64,12 +79,22 @@ ANALYSIS_REDIS_DBID=0
6479
ANALYSIS_SENTRY_DSN=
6580

6681
## 服务交互配置
82+
## Notice:默认的KEY和Token仅测试用途,如在正式环境部署请重新生成
83+
## 生成方式:
84+
## 步骤一:执行 python 命令
85+
## 步骤二:输入代码 import random, string; print(''.join(random.sample(string.ascii_lowercase + string.digits, 16)))
86+
## 步骤三:获取执行输出,拷贝替换下方的PASSWORD_KEY和API_TICKET_SALT
6787
API_TICKET_SALT=a6x4c7esudcv396w
6888
API_TICKET_TOKEN=tca@public@2021
6989
FILE_SERVER_TOKEN=0712b895f30c5e958ec71a7c22e1b1a2ad1d5c6b
7090

7191

7292
# Login工程配置
93+
## Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
94+
## 生成方式:
95+
## 步骤一:执行 python 命令
96+
## 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
97+
## 步骤三:获取执行输出,拷贝替换下方的LOGIN_SECRET_KEY
7398
LOGIN_DEBUG_MODE=true
7499
LOGIN_SECRET_KEY='iht%_(ixb)w&sedrh2t-ydxnre)uy+=_hv4v^8m@19p27r6sz_'
75100
# 默认的账号密码
@@ -85,12 +110,22 @@ LOGIN_DB_PORT=3306
85110

86111

87112
## 服务交互配置
113+
## Notice:默认的KEY和Token仅测试用途,如在正式环境部署请重新生成
114+
## 生成方式:
115+
## 步骤一:执行 python 命令
116+
## 步骤二:输入代码 import random, string; print(''.join(random.sample(string.ascii_lowercase + string.digits, 16)))
117+
## 步骤三:获取执行输出,拷贝替换下方的PASSWORD_KEY和API_TICKET_SALT
88118
PASSWORD_KEY=a6x4c7esudcv396w
89119
API_TICKET_SALT=a6x4c7esudcv396w
90120
API_TICKET_TOKEN=tca@public@2021
91121

92122

93123
# File工程配置
124+
## Notice:默认的SECRET_KEY仅测试用途,如在正式环境部署请重新生成
125+
## 生成方式:
126+
## 步骤一:执行 python 命令
127+
## 步骤二:输入代码: from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())
128+
## 步骤三:获取执行输出,拷贝替换下方的FILEs_SECRET_KEY
94129
FILE_SECRET_KEY='8b_!6t@kb=63c)4#e^0wub=x8%xd9624jm@#eiv3y#%b_%4!n='
95130

96131
## 服务DB配置
@@ -107,6 +142,11 @@ FILE_SENTRY_DSN=
107142
FILE_STORAGE_DIR=data/file/
108143

109144
## 服务交互配置
145+
## Notice:默认的KEY和Token仅测试用途,如在正式环境部署请重新生成
146+
## 生成方式:
147+
## 步骤一:执行 python 命令
148+
## 步骤二:输入代码 import random, string; print(''.join(random.sample(string.ascii_lowercase + string.digits, 16)))
149+
## 步骤三:获取执行输出,拷贝替换下方的PASSWORD_KEY和API_TICKET_SALT
110150
PASSWORD_KEY=a6x4c7esudcv396w
111151
API_TICKET_SALT=a6x4c7esudcv396w
112152
API_TICKET_TOKEN=tca@public@2021

server/projects/main/apps/codeproj/core/projmgr.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,13 +1095,12 @@ def delete_project(cls, repo_id, project_id, user):
10951095
if not project:
10961096
raise ServerOperationError("分支项目[%s-%s]不存在" % (repo_id, project_id))
10971097
project_str = str(project)
1098-
old_branch = project.branch
1099-
deleted_time = now()
1100-
logger.info("[User: %s] 在 %s 删除了 %s 分支项目" % (user.username, deleted_time, project))
1101-
project.branch = ("deleted by %s(%s)" % (user.username, deleted_time))[:198]
1098+
old_project_key = project.project_key
1099+
project.project_key = None
11021100
project.status = models.Project.StatusEnum.DISACTIVE
1103-
project.update_remark(**{"branch": old_branch})
1101+
project.update_remark({"project_key": old_project_key})
11041102
project.save()
1103+
logger.info("[User: %s] 在 %s 删除了 %s 分支项目" % (user.username, now(), project))
11051104
project.delete(user=user)
11061105
OperationRecordHandler.add_project_operation_record(
11071106
project, "删除分支项目", user.username, message="删除分支项目: %s" % project_str

server/projects/main/apps/codeproj/models/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ def remark_info(self):
493493
else:
494494
return {}
495495

496-
def update_remark(self, **kwargs):
496+
def update_remark(self, kwargs):
497497
"""更新备注信息
498498
"""
499499
self.remark = json.dumps(self.remark_info.update(**kwargs))

server/projects/main/apps/codeproj/serializers/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1402,7 +1402,7 @@ def update(self, instance, validated_data):
14021402
user = self.context["request"].user
14031403
status = validated_data.get("status")
14041404
if status == models.Project.StatusEnum.ARCHIVED_WITHOUT_CLEAN:
1405-
instance.update_remark(**{
1405+
instance.update_remark({
14061406
"archived_time": str(localnow()),
14071407
"clean_time": str(localnow() + settings.PROJECT_ARCHIVE_CLEAN_TIMEOUT)})
14081408
elif status == models.Project.StatusEnum.ACTIVE \

0 commit comments

Comments
 (0)