pr_manager/apps/pr/admin.py

85 lines
2.7 KiB
Python

from django.contrib import admin
from simpleui.admin import AjaxAdmin
from pr import models
@admin.register(models.AIConfig)
class AIConfigAdmin(AjaxAdmin):
"""Admin配置"""
list_display = ["api_base", "api_key", "llm_model"]
readonly_fields = ["create_by", "delete_at", "detail"]
list_per_page = 10
top_html = ' <el-alert title="可配置多个AI模型厂商!" type="success"></el-alert>'
def save_model(self, request, obj, form, change):
obj.create_by = request.user.username
return super().save_model(request, obj, form, change)
@admin.register(models.GitConfig)
class GitConfigAdmin(AjaxAdmin):
"""Admin配置"""
list_display = ["git_name", "git_type", "git_url", "access_token", "reviewer"]
readonly_fields = ["create_by", "delete_at", "detail"]
list_per_page = 10
top_html = '<el-alert title="可配置多个Git服务上!" type="success"></el-alert>'
def save_model(self, request, obj, form, change):
obj.create_by = request.user.username
return super().save_model(request, obj, form, change)
@admin.register(models.ProjectConfig)
class ProjectConfigAdmin(AjaxAdmin):
"""Admin配置"""
list_display = [
"project_id",
"project_name",
"pr_url",
"project_secret",
"commands",
"is_enable",
]
list_filter = ["git_config"]
list_per_page = 10
readonly_fields = ["create_by", "delete_at", "detail"]
top_html = '<el-alert title="可配置多个项目!" type="success"></el-alert>'
def save_model(self, request, obj, form, change):
obj.create_by = request.user.username
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)
class ProjectHistoryAdmin(admin.ModelAdmin):
"""Admin配置"""
list_display = ["pr_url", "ml", "source_branch", "target_branch", "mr_title"]
list_filter = ["project"]
readonly_fields = ["create_by", "delete_at", "detail"]
list_per_page = 10
def save_model(self, request, obj, form, change):
obj.create_by = request.user.username
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 = "项目地址"