提升项目链接功能,优化列表展示,项目管理更强大!

This commit is contained in:
张建平 2025-02-27 14:23:31 +08:00
parent de84796560
commit 595debaed2
3 changed files with 46 additions and 1 deletions

View File

@ -10,6 +10,7 @@ class AIConfigAdmin(AjaxAdmin):
list_display = ["api_base", "api_key", "llm_model"] list_display = ["api_base", "api_key", "llm_model"]
readonly_fields = ["create_by", "delete_at", "detail"] readonly_fields = ["create_by", "delete_at", "detail"]
list_per_page = 10
top_html = ' <el-alert title="可配置多个AI模型厂商!" type="success"></el-alert>' top_html = ' <el-alert title="可配置多个AI模型厂商!" type="success"></el-alert>'
def save_model(self, request, obj, form, change): def save_model(self, request, obj, form, change):
@ -23,6 +24,7 @@ class GitConfigAdmin(AjaxAdmin):
list_display = ["git_name", "git_type", "git_url", "access_token"] list_display = ["git_name", "git_type", "git_url", "access_token"]
readonly_fields = ["create_by", "delete_at", "detail"] readonly_fields = ["create_by", "delete_at", "detail"]
list_per_page = 10
top_html = '<el-alert title="可配置多个Git服务上!" type="success"></el-alert>' top_html = '<el-alert title="可配置多个Git服务上!" type="success"></el-alert>'
def save_model(self, request, obj, form, change): def save_model(self, request, obj, form, change):
@ -37,10 +39,13 @@ class ProjectConfigAdmin(AjaxAdmin):
list_display = [ list_display = [
"project_id", "project_id",
"project_name", "project_name",
"pr_url",
"project_secret", "project_secret",
"commands", "commands",
"is_enable", "is_enable",
] ]
list_filter = ["git_config"]
list_per_page = 10
readonly_fields = ["create_by", "delete_at", "detail"] readonly_fields = ["create_by", "delete_at", "detail"]
top_html = '<el-alert title="可配置多个项目!" type="success"></el-alert>' top_html = '<el-alert title="可配置多个项目!" type="success"></el-alert>'
@ -48,15 +53,32 @@ class ProjectConfigAdmin(AjaxAdmin):
obj.create_by = request.user.username obj.create_by = request.user.username
return super().save_model(request, obj, form, change) return super().save_model(request, obj, form, change)
def pr_url(self, obj):
return f'<el-link type="primary" href={obj.project_url} target="_blank">{obj.project_name}</el-link>'
pr_url.short_description = "项目地址"
@admin.register(models.ProjectHistory) @admin.register(models.ProjectHistory)
class ProjectHistoryAdmin(admin.ModelAdmin): class ProjectHistoryAdmin(admin.ModelAdmin):
"""Admin配置""" """Admin配置"""
list_display = ["project", "mr_url", "source_branch", "target_branch", "mr_title"] list_display = ["pr_url", "ml", "source_branch", "target_branch", "mr_title"]
list_filter = ["project"] list_filter = ["project"]
readonly_fields = ["create_by", "delete_at", "detail"]
list_per_page = 10 list_per_page = 10
def save_model(self, request, obj, form, change): def save_model(self, request, obj, form, change):
obj.create_by = request.user.username obj.create_by = request.user.username
return super().save_model(request, obj, form, change) return super().save_model(request, obj, form, change)
# @staticmethod
def ml(self, obj):
return f'<el-link type="primary" href={obj.mr_url} target="_blank">{obj.mr_title}</el-link>'
ml.short_description = "MR地址"
def pr_url(self, obj):
return f'<el-link type="primary" href={obj.project_url} target="_blank">{obj.project.project_name}</el-link>'
pr_url.short_description = "项目地址"

View File

@ -0,0 +1,20 @@
# Generated by Django 5.1.6 on 2025-02-27 11:40
import simplepro.components.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("pr", "0002_projecthistory"),
]
operations = [
migrations.AddField(
model_name="projectconfig",
name="project_url",
field=simplepro.components.fields.CharField(
blank=True, max_length=256, null=True, verbose_name="项目地址"
),
),
]

View File

@ -79,6 +79,9 @@ class ProjectConfig(BaseModel):
project_name = fields.CharField( project_name = fields.CharField(
null=True, blank=True, max_length=16, verbose_name="项目名称" null=True, blank=True, max_length=16, verbose_name="项目名称"
) )
project_url = fields.CharField(
null=True, blank=True, max_length=256, verbose_name="项目地址"
)
project_secret = fields.CharField( project_secret = fields.CharField(
null=True, blank=True, max_length=128, verbose_name="项目密钥" null=True, blank=True, max_length=128, verbose_name="项目密钥"
) )