from django.contrib import admin

from core.models import Project, AuditLog, ProjectMembership, ProjectApplication


@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = ("name", "owner", "database_status", "database_name", "is_active", "created_at")
    list_filter = ("is_active", "database_status")
    search_fields = ("name", "location", "database_name", "database_user")
    readonly_fields = ("database_password", "database_provisioned_at", "database_error")


@admin.register(AuditLog)
class AuditLogAdmin(admin.ModelAdmin):
    list_display = ("timestamp", "user", "action", "model_name", "object_id", "object_repr")
    list_filter = ("action", "model_name")
    search_fields = ("object_repr", "model_name", "user__username")
    readonly_fields = [f.name for f in AuditLog._meta.fields]

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        return False

    def has_delete_permission(self, request, obj=None):
        return request.user.is_superuser


@admin.register(ProjectMembership)
class ProjectMembershipAdmin(admin.ModelAdmin):
    list_display = ("project", "user", "role", "is_active", "created_at")
    list_filter = ("role", "is_active")
    search_fields = ("project__name", "user__username", "user__email")


@admin.register(ProjectApplication)
class ProjectApplicationAdmin(admin.ModelAdmin):
    list_display = ("project_name", "applicant", "status", "approved_project", "created_at")
    list_filter = ("status",)
    search_fields = ("project_name", "applicant__username", "applicant__email")
