Marwan Alwali 0357921e3d update
2025-09-21 17:35:20 +03:00

56 lines
1.8 KiB
Python

from django.contrib import messages
from . import models
from .utils import extract_summary_from_pdf
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.admin import GroupAdmin as BaseGroupAdmin
from django.contrib.auth.models import User, Group
from unfold.forms import AdminPasswordChangeForm, UserChangeForm, UserCreationForm
from unfold.admin import ModelAdmin
admin.site.unregister(User)
admin.site.unregister(Group)
@admin.register(User)
class UserAdmin(BaseUserAdmin, ModelAdmin):
form = UserChangeForm
add_form = UserCreationForm
change_password_form = AdminPasswordChangeForm
@admin.register(Group)
class GroupAdmin(BaseGroupAdmin, ModelAdmin):
pass
@admin.register(models.Job)
class JobAdmin(ModelAdmin):
list_display = ('title', 'is_published', 'posted_to_linkedin', 'created_at')
list_filter = ('is_published', 'posted_to_linkedin')
search_fields = ('title', 'description_en', 'description_ar')
@admin.action(description="Parse selected resumes")
def parse_resumes(modeladmin, request, queryset):
for candidate in queryset:
if candidate.resume:
summary = extract_summary_from_pdf(candidate.resume.path)
candidate.parsed_summary = str(summary)
candidate.save()
messages.success(request, f"Parsed {queryset.count()} resumes successfully.")
@admin.register(models.Candidate)
class CandidateAdmin(ModelAdmin):
list_display = ('name', 'email', 'job', 'applied', 'created_at')
list_filter = ('applied', 'job')
search_fields = ('name', 'email')
# readonly_fields = ('parsed_summary',)
actions = [parse_resumes]
@admin.register(models.TrainingMaterial)
class TrainingMaterialAdmin(ModelAdmin):
list_display = ('title', 'created_by', 'created_at')
search_fields = ('title', 'content')