aifeilong 13b1ca2b9b Namespace API routes by app and flatten package layout.
Move Django apps out of apps/ and mount them under auth/, common/, content/, and cms/ so endpoint paths map directly to the owning app.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-15 08:42:37 +08:00

157 lines
4.2 KiB
Python

from django.contrib import admin
from .models import (
Article,
ArticleCollect,
ArticleShare,
ArticleComment,
ArticleLike,
ArticleType,
Column,
Magazine,
MagazineCategory,
Organize,
OrganizeCategory,
Professor,
RuleBand,
Specialty,
StarRule,
Subject,
WorkGroup,
WorkGroupMembership,
WorkGroupTerm,
)
@admin.register(Column)
class ColumnAdmin(admin.ModelAdmin):
list_display = ("id", "name", "position", "sort", "path", "is_disabled")
list_filter = ("position", "is_disabled")
search_fields = ("name",)
@admin.register(Subject)
class SubjectAdmin(admin.ModelAdmin):
list_display = ("id", "name", "parent", "sort", "is_disabled")
list_filter = ("is_disabled",)
search_fields = ("name",)
@admin.register(OrganizeCategory)
class OrganizeCategoryAdmin(admin.ModelAdmin):
list_display = ("id", "name", "parent", "sort", "is_disabled")
list_filter = ("is_disabled",)
search_fields = ("name",)
@admin.register(MagazineCategory)
class MagazineCategoryAdmin(admin.ModelAdmin):
list_display = ("id", "name", "parent", "sort", "is_disabled")
list_filter = ("is_disabled",)
search_fields = ("name",)
@admin.register(ArticleType)
class ArticleTypeAdmin(admin.ModelAdmin):
list_display = ("id", "code", "name", "sort", "is_disabled")
list_filter = ("is_disabled",)
search_fields = ("name", "code", "note")
@admin.register(Organize)
class OrganizeAdmin(admin.ModelAdmin):
list_display = ("id", "name", "category", "rank", "is_disabled")
search_fields = ("name",)
@admin.register(Magazine)
class MagazineAdmin(admin.ModelAdmin):
list_display = ("id", "name", "category", "is_disabled")
search_fields = ("name",)
filter_horizontal = ("subjects",)
class RuleBandInline(admin.TabularInline):
model = RuleBand
extra = 1
@admin.register(StarRule)
class StarRuleAdmin(admin.ModelAdmin):
list_display = ("id", "name", "year", "is_disabled")
inlines = [RuleBandInline]
@admin.register(WorkGroup)
class WorkGroupAdmin(admin.ModelAdmin):
list_display = ("id", "name", "parent", "sort", "is_disabled")
list_filter = ("is_disabled",)
search_fields = ("name",)
@admin.register(WorkGroupTerm)
class WorkGroupTermAdmin(admin.ModelAdmin):
list_display = (
"id",
"workgroup",
"name",
"parent",
"start_year",
"end_year",
"is_current",
"is_disabled",
)
list_filter = ("is_current", "is_disabled", "workgroup")
search_fields = ("name", "workgroup__name")
class WorkGroupMembershipInline(admin.TabularInline):
model = WorkGroupMembership
extra = 1
@admin.register(Professor)
class ProfessorAdmin(admin.ModelAdmin):
list_display = ("id", "name", "role", "job", "is_disabled")
search_fields = ("name",)
inlines = [WorkGroupMembershipInline]
@admin.register(Specialty)
class SpecialtyAdmin(admin.ModelAdmin):
list_display = ("id", "name", "position", "is_disabled")
search_fields = ("name",)
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ("id", "title", "type", "year", "score", "rank", "is_disabled")
list_filter = ("type", "year", "is_disabled")
search_fields = ("title", "serial_number")
filter_horizontal = ("organizes", "magazines", "subjects")
@admin.register(ArticleComment)
class ArticleCommentAdmin(admin.ModelAdmin):
list_display = ("id", "article", "member", "star", "review_status", "created_at")
list_filter = ("review_status",)
search_fields = ("content", "member__name", "article__title")
@admin.register(ArticleLike)
class ArticleLikeAdmin(admin.ModelAdmin):
list_display = ("id", "article", "member", "created_at")
search_fields = ("member__name", "member__phone", "article__title")
@admin.register(ArticleCollect)
class ArticleCollectAdmin(admin.ModelAdmin):
list_display = ("id", "article", "member", "created_at")
search_fields = ("member__name", "member__phone", "article__title")
@admin.register(ArticleShare)
class ArticleShareAdmin(admin.ModelAdmin):
list_display = ("id", "article", "member", "visitor_key", "created_at")
search_fields = ("member__name", "member__phone", "visitor_key", "article__title")