2025-12-29 04:50:49 +03:00

85 lines
2.8 KiB
Python

from django.contrib import admin
from .models import (
LandingPageSettings, Partners, Expertise,
Product, Inquiry, Testimonial, TeamMember
)
@admin.register(LandingPageSettings)
class LandingPageSettingsAdmin(admin.ModelAdmin):
list_display = ('logo', 'company_address_en')
@admin.register(Partners)
class PartnersAdmin(admin.ModelAdmin):
list_display = ('name_en', 'name_ar', 'order')
list_editable = ('order',)
ordering = ('order',)
@admin.register(Expertise)
class ExpertiseAdmin(admin.ModelAdmin):
list_display = ('title_en', 'title_ar', 'order')
list_editable = ('order',)
ordering = ('order',)
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = ('name_en', 'name_ar', 'order', 'link')
list_editable = ('order',)
ordering = ('order',)
@admin.register(Inquiry)
class InquiryAdmin(admin.ModelAdmin):
list_display = ('name', 'email','message', 'created_at')
readonly_fields = ('created_at',)
@admin.register(Testimonial)
class TestimonialAdmin(admin.ModelAdmin):
list_display = ('client_name_en', 'client_name_ar', 'order')
list_editable = ('order',)
ordering = ('order',)
@admin.register(TeamMember)
class TeamMemberAdmin(admin.ModelAdmin):
list_display = ('name_en', 'name_ar', 'role_en', 'order')
list_editable = ('order',)
ordering = ('order',)
# admin.py
import json
from django.contrib import admin
from django.db.models import Count
from rangefilter.filters import DateRangeFilterBuilder # Improved range picker
from .models import VisitorLog
@admin.register(VisitorLog)
class VisitorLogAdmin(admin.ModelAdmin):
list_display = ('ip_address', 'country', 'city', 'timestamp')
# 1. Add the Date Range Filter to the sidebar
list_filter = (
("timestamp", DateRangeFilterBuilder()),
'country',
)
change_list_template = 'admin/visitor_log_changelist.html'
def changelist_view(self, request, extra_context=None):
# 2. Get the current filtered results based on your date selection
response = super().changelist_view(request, extra_context)
try:
# This captures the exact filtered queryset being shown in the list
qs = response.context_data['cl'].queryset
except (AttributeError, KeyError):
return response
# 3. Aggregate data from the FILTERED queryset
country_stats = list(qs.values('country').annotate(total=Count('id')).order_by('-total')[:10])
city_stats = list(qs.values('city').annotate(total=Count('id')).order_by('-total')[:10])
extra_context = extra_context or {}
extra_context['country_data'] = json.dumps(country_stats)
extra_context['city_data'] = json.dumps(city_stats)
return super().changelist_view(request, extra_context=extra_context)