scieloorg/SciELO-Manager — pull request #425 by jamilatta (2013-03-07 14:21:23+00:00)
Title: Bug no cacheamento da lista de usuários

Alterado o ``objects`` do usuário para ser um Manager cacheado(CachingManager):

Motivo: o objeto CachingQuerySet contém um método **count()** este objeto esta sendo cacheado, porém não esta sendo atualizado (DEL -> SET) no momento em que um novo usuário é cadastrado, retornando sempre um valor viciado no momento que o paginator tenta acessar o método count da lista.

Reparem no trecho de código:

O objeto paginator avalia a existência de um método count do objeto: https://github.com/django/django/blob/master/django/core/paginator.py#L72

Nesse momento como o objeto passado como param é um CachingQuerySet e ele contém um count com um valor viciado o paginator realiza um slice considerando esse count o que gera uma lista sempre com o valor cacheado, ou seja menor, até que o cache seja invalidado pelo timeout.

Isso ocorre por que a view add_user utilizando o ``objects``, que não é cacheado não utilizando os métodos **post_save** e **post_delete** para atualizar o cache.

Houve também uma tentativa de invalidar somente o método count, porém não é possível: http://jbalogh.me/projects/cache-machine/#settings