85 lines
2.8 KiB
Python
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) |