Pues aqui esta parte del codigo que use para registrar el numero de visitas que tengo asi como sus respectivos IP's muahahahaha. Ahi si alguien tiene una mejora me la hacen saber. Use la base de datos GeoIP... creo (por dios! ya no me acuerdo ni como se llama!) en fin, necesitan instalar el api de dicha base de datos. Por lo demas, todo esta bastante entendible, cada view pasa la funcion client_record, y aunque es demasiado rustico (esto lo debi haber hecho como un "custom middleware") funciona, sin embargo es mejor que utilizen este codigo donde corresponde (MIDDLEWAREEE!!) Provecho!
from datetime import datetime, timedelta
from kubuntero.clients.models import *
def client_record(ipaddress, url, obj):
now = datetime.now()
defurl, new_url = Url.objects.get_or_create(path=url)
history, created = Client.objects.get_or_create(address=ipaddress)
if (now - history.date) > timedelta(minutes = 2) or (defurl.path not in history.visited_sites.values_list('path', flat=True)):
history.date = now
history.visited_sites.add(defurl.id)
history.save()
try:
for post in obj:
new_count = int(post.view_count) + 1
post.view_count = new_count
post.save()
except TypeError:
new_count = int(obj.view_count) + 1
obj.view_count = new_count
obj.save()
Ya en mi views.py, hago lo siguiente:
client_record(request.META['REMOTE_ADDR'], request.path, show.object_list)
donde show.object_list es el resultado de un queryset usando django-pagination, pero pueden usar una sola instancia tambien... pfft, ahora que lo veo, que feo codigo :S