Repository: zestedesavoir/zds-site

Issue:
Le lien de la dernière réponse donne (parfois) une 404
> Je ne suis pas sûr que ce soit dû à la ZEP-12, mais il semble y avoir un problème avec le [lien vers la dernière réponse](https://zestedesavoir.com/forums/sujet/4288/publier-une-app-android-material-design-de-a-a-z/?page=2#p84199) à [ce sujet](https://zestedesavoir.com/forums/sujet/4288/publier-une-app-android-material-design-de-a-a-z/). 
> 
> Edit : plus maintenant, vu qu'Andr0 a mis à jour la bêta. Mais du coup, je pense que le problème intervient quand la dernière réponse est le dernier message de la dernière page. L'adresse de la dernière réponse (utilisée dans la liste des forums et dans celle des sujet du forum concerné) est `...?page=n+1#id` au lieu de `...?page=n#id`.



Discussion:
@artragis @pierre-24 vous disiez avoir touché au paginateur. Ca peut venir de là ?

on n'y a pas "touché" on a mis le paginateur des MP codé par 
@gerardpaligot au lieu du paginateur adhoc qu'il y avait avant.

Le 01/11/2015 12:53, Eskimon a écrit :

> @artragis https://github.com/artragis @pierre-24 
> https://github.com/pierre-24 vous disiez avoir touché au paginateur. 
> Ca peut venir de là ?
> 
> —
> Reply to this email directly or view it on GitHub 
> https://github.com/zestedesavoir/zds-site/issues/3150#issuecomment-152821542.

En fait ... J'ai pas compris le problème (j'ai lu ça vite fait ce matin, mais maintenant que je le relis, je vois pas le souchi o_O )

Le lien vers la dernière réponse du [sujet 3150](http://zds.francoisdambrine.me/forums/communaute/discussions-generales/) mène à une 404, parce que dans l'url, on est à la page 2 (http://zds.francoisdambrine.me/forums/sujet/69/3150/?page=2#p2279) au lieu de la page 1 (http://zds.francoisdambrine.me/forums/sujet/69/3150/?page=1#p2279).

Ce bug n'intervient que lorsque la dernière réponse est le dernier message de la page (le 21è).

Aaaaah, ok, je viens de comprendre. Indeed, rien à voir avec la ZEP-12.

C'est également reproductible sur le sujet Your Desktop. Page 32 au lieu de 31. J'ai l'impression que cela arrive quand le dernier message posté est le dernier avant que le prochain message ne crée une nouvelle page (ce sera donc lui qui sera cité en tant que "dernier message de la page précédente")..

![bug_lien](https://cloud.githubusercontent.com/assets/634461/10904336/c2af923e-8212-11e5-8566-695087acce44.png)

Le souci est ici : https://github.com/zestedesavoir/zds-site/blob/dev/templates/forum/includes/topic_row.part.html#L67

Mais je ne parviens pas à trouver la vue qui utilise ce template. On inclut ce dernier [ici](https://github.com/zestedesavoir/zds-site/blob/dev/templates/forum/category/forum.html#L89), et mentionne ce template [là](https://github.com/zestedesavoir/zds-site/blob/dev/zds/forum/views.py#L65), mais je ne vois pas de `last_read_url`.

Le lien de la dernière réponse n'est pas gérée par la pagination. A mon avis, le problème est ailleurs. Surement dans les zones pointées par @Vayel.

Manifestement, le problème vient d'ici : https://github.com/zestedesavoir/zds-site/blob/80f08da6c39888c7cd30f6d002ac3598e65de285/zds/forum/models.py#L300

En effet : 
- https://github.com/zestedesavoir/zds-site/search?utf8=%E2%9C%93&q=last_read_url
- Puis : https://github.com/zestedesavoir/zds-site/search?utf8=%E2%9C%93&q=resolve_last_read_post_absolute_url

oui ça vient de là. il faudrait faire (position - 1) / nb

2015-11-06 17:47 GMT+01:00 Vincent notifications@github.com:

> Manifestement, le problème vient d'ici :
> https://github.com/zestedesavoir/zds-site/blob/80f08da6c39888c7cd30f6d002ac3598e65de285/zds/forum/models.py#L300
> 
> En effet :
> 
>    -
>    https://github.com/zestedesavoir/zds-site/search?utf8=%E2%9C%93&q=last_read_url
> - Puis :
>   https://github.com/zestedesavoir/zds-site/search?utf8=%E2%9C%93&q=resolve_last_read_post_absolute_url
> 
> —
> Reply to this email directly or view it on GitHub
> https://github.com/zestedesavoir/zds-site/issues/3150#issuecomment-154468230
> .


Resolving patch:
diff --git a/zds/forum/models.py b/zds/forum/models.py
--- a/zds/forum/models.py
+++ b/zds/forum/models.py
@@ -312,7 +312,7 @@ def resolve_last_read_post_absolute_url(self):
                 pk, pos = self.resolve_last_post_pk_and_pos_read_by_user(user)
                 return '{}?page={}#p{}'.format(
                     self.get_absolute_url(),
-                    pos / ZDS_APP["forum"]["posts_per_page"] + 1, pk)
+                    (pos - 1) / ZDS_APP["forum"]["posts_per_page"] + 1, pk)
             except TopicRead.DoesNotExist:
                 return self.resolve_first_post_url()
 


Test patch: