from django.contrib import admin
from django.http import HttpResponse
import csv
from datetime import datetime
from .models import Donation

# Register your models here.

@admin.register(Donation)
class DonationAdmin(admin.ModelAdmin):
    list_display = ('display_name', 'email', 'get_amount', 'submitted_at', 'is_anonymous')
    list_filter = ('submitted_at', 'is_anonymous', 'amount')
    search_fields = ('full_name', 'email', 'message')
    date_hierarchy = 'submitted_at'
    readonly_fields = ('submitted_at',)
    
    def get_amount(self, obj):
        return obj.display_amount
    get_amount.short_description = 'Amount'
    
    def display_name(self, obj):
        return obj.display_name
    display_name.short_description = 'Name'
    
    actions = ['export_as_csv']
    
    def export_as_csv(self, request, queryset):
        meta = self.model._meta
        field_names = ['display_name', 'email', 'amount', 'custom_amount', 'message', 'submitted_at']
        
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = f'attachment; filename=donations-{datetime.now().strftime("%Y-%m-%d")}.csv'
        writer = csv.writer(response)
        
        # Write header
        writer.writerow(['Name', 'Email', 'Amount', 'Custom Amount', 'Message', 'Submitted At'])
        
        # Write data
        for obj in queryset:
            row = []
            for field in field_names:
                if field == 'display_name':
                    value = obj.display_name
                elif field == 'amount':
                    value = obj.display_amount
                else:
                    value = getattr(obj, field)
                row.append(str(value))
            writer.writerow(row)
        
        return response
    export_as_csv.short_description = "Export selected donations to CSV"
