from django.shortcuts import render_to_response
from django.core.urlresolvers import reverse
from django.contrib.admin.views.decorators import staff_member_required
from django.utils.translation import ugettext_lazy as _
from django.db import connection

CACHE_TABLE_OID = 69126

@staff_member_required
def admin_cache_management(request):
    cursor = connection.cursor()
    message = ""
    if request.POST:
    	cursor.execute("DELETE FROM django_cache")
    	cursor.execute("COMMIT")
    	cursor.execute("VACUUM FULL FREEZE ANALYZE django_cache")
    	message = _("A manual cache flush has been requested by an administrator, and was executed with success")
    	
    cursor.execute("""
    SELECT 
		pg_stat_get_numscans(%s),
		pg_stat_get_tuples_updated(%s),
		pg_stat_get_tuples_inserted(%s),
		pg_stat_get_tuples_deleted(%s),
		COUNT(*),
		pg_size_pretty(pg_total_relation_size('django_cache'))
	FROM django_cache;
    """, (CACHE_TABLE_OID, CACHE_TABLE_OID, CACHE_TABLE_OID, CACHE_TABLE_OID));
    data = cursor.fetchone()
    cache_hits = int(data[0])
    cache_updated = int(data[1])
    cache_inserted = int(data[2])
    cache_deleted = int(data[3])
    cache_entry_amount = int(data[4])
    cache_size = data[5]

    cursor.execute("COMMIT")
    return render_to_response("system/admin_cache_management.html", 
    {
    	"cache_entry_amount": cache_entry_amount,
    	"cache_size": cache_size,
    	"cache_hits": cache_hits,
    	"cache_updated": cache_updated,
    	"cache_inserted": cache_inserted,
    	"cache_deleted": cache_deleted,
    	"message": message,
    })