Spaces:
Sleeping
Sleeping
| """ | |
| Configuration de l'administration Django pour les datasets | |
| Created by BlackBenAI Team - AfriDataHub Platform | |
| """ | |
| from django.contrib import admin | |
| from django.utils.html import format_html | |
| from .models import Dataset, DataPoint, Alert | |
| class DatasetAdmin(admin.ModelAdmin): | |
| """Administration des datasets""" | |
| list_display = [ | |
| 'title', 'domain', 'source_name', 'status', | |
| 'data_points_count', 'last_updated', 'is_public' | |
| ] | |
| list_filter = ['domain', 'status', 'is_public', 'created_at', 'last_updated'] | |
| search_fields = ['title', 'description', 'source_name'] | |
| readonly_fields = ['created_at', 'last_updated', 'data_points_count', 'latest_data_date'] | |
| fieldsets = ( | |
| ('Informations générales', { | |
| 'fields': ('title', 'description', 'domain') | |
| }), | |
| ('Source', { | |
| 'fields': ('source_name', 'source_url') | |
| }), | |
| ('Configuration', { | |
| 'fields': ('status', 'update_frequency', 'is_public', 'created_by') | |
| }), | |
| ('Métadonnées', { | |
| 'fields': ('created_at', 'last_updated', 'data_points_count', 'latest_data_date'), | |
| 'classes': ('collapse',) | |
| }), | |
| ) | |
| def save_model(self, request, obj, form, change): | |
| """Définit l'utilisateur créateur lors de la création""" | |
| if not change: # Nouveau dataset | |
| obj.created_by = request.user | |
| super().save_model(request, obj, form, change) | |
| class DataPointAdmin(admin.ModelAdmin): | |
| """Administration des points de données""" | |
| list_display = [ | |
| 'dataset', 'country_name', 'value', 'unit', 'date', 'created_at' | |
| ] | |
| list_filter = ['dataset', 'country', 'date', 'created_at'] | |
| search_fields = ['dataset__title', 'country'] | |
| readonly_fields = ['created_at', 'updated_at'] | |
| fieldsets = ( | |
| ('Données', { | |
| 'fields': ('dataset', 'country', 'value', 'unit', 'date') | |
| }), | |
| ('Informations supplémentaires', { | |
| 'fields': ('extra_info',), | |
| 'classes': ('collapse',) | |
| }), | |
| ('Métadonnées', { | |
| 'fields': ('created_at', 'updated_at'), | |
| 'classes': ('collapse',) | |
| }), | |
| ) | |
| class AlertAdmin(admin.ModelAdmin): | |
| """Administration des alertes""" | |
| list_display = [ | |
| 'title', 'dataset', 'country_name', 'alert_type', | |
| 'severity_badge', 'is_active', 'created_at' | |
| ] | |
| list_filter = ['alert_type', 'severity', 'is_active', 'created_at'] | |
| search_fields = ['title', 'message', 'dataset__title'] | |
| readonly_fields = ['created_at'] | |
| fieldsets = ( | |
| ('Alerte', { | |
| 'fields': ('title', 'message', 'dataset', 'country') | |
| }), | |
| ('Configuration', { | |
| 'fields': ('alert_type', 'severity', 'is_active') | |
| }), | |
| ('Valeurs', { | |
| 'fields': ('threshold_value', 'current_value'), | |
| 'classes': ('collapse',) | |
| }), | |
| ('Métadonnées', { | |
| 'fields': ('created_at', 'resolved_at'), | |
| 'classes': ('collapse',) | |
| }), | |
| ) | |
| def severity_badge(self, obj): | |
| """Affiche un badge coloré pour la sévérité""" | |
| colors = { | |
| 'low': '#28a745', # Vert | |
| 'medium': '#ffc107', # Jaune | |
| 'high': '#fd7e14', # Orange | |
| 'critical': '#dc3545' # Rouge | |
| } | |
| color = colors.get(obj.severity, '#6c757d') | |
| return format_html( | |
| '<span style="background-color: {}; color: white; padding: 2px 8px; ' | |
| 'border-radius: 3px; font-size: 11px;">{}</span>', | |
| color, obj.get_severity_display() | |
| ) | |
| severity_badge.short_description = 'Sévérité' | |
| def country_name(self, obj): | |
| """Affiche le nom complet du pays""" | |
| return obj.get_country_display() if obj.country else '-' | |
| country_name.short_description = 'Pays' | |
| # Configuration globale de l'admin | |
| admin.site.site_header = "AfriDataHub Administration" | |
| admin.site.site_title = "AfriDataHub Admin" | |
| admin.site.index_title = "Bienvenue dans l'administration AfriDataHub" | |