diff --git a/app/routes/forum/topic.py b/app/routes/forum/topic.py index 6e46c80..0539551 100644 --- a/app/routes/forum/topic.py +++ b/app/routes/forum/topic.py @@ -11,8 +11,7 @@ from app.models.thread import Thread from app.models.comment import Comment -@app.route('/forum//', - methods=['GET', 'POST']) +@app.route('/forum//', methods=['GET', 'POST']) def forum_topic(f, page): t, page = page @@ -33,7 +32,8 @@ def forum_topic(f, page): flash('Message envoyé', 'ok') # Redirect to empty the form - return redirect(url_for('forum_topic', f=f, page=(t,"last"))) + return redirect(url_for('forum_topic', f=f, page=(t,"fin"), + _anchor=c.id)) # Update views t.views += 1 diff --git a/app/templates/base/navbar/forum.html b/app/templates/base/navbar/forum.html index e0ba1a5..785dffb 100644 --- a/app/templates/base/navbar/forum.html +++ b/app/templates/base/navbar/forum.html @@ -19,7 +19,7 @@ diff --git a/app/utils/converters.py b/app/utils/converters.py index 9ff6735..6d0ab90 100644 --- a/app/utils/converters.py +++ b/app/utils/converters.py @@ -39,11 +39,12 @@ class ForumConverter(BaseConverter): def to_url(self, forum): return forum.url[1:] -class TopicPageConverter(BaseConverter): +class PageConverter(BaseConverter): # Matches integers for the topic number, then either nothing, a page # number, a slug, or a page number followed by a slug - regex = r'(\d+)(?:/(\d+)|/last)(?:/[\w-]+)?' + regex = r'(\d+)(?:/(\d+)|/fin)(?:/[\w-]+)?' + object = None def to_python(self, url): tid, *args = url.split('/') @@ -51,7 +52,7 @@ class TopicPageConverter(BaseConverter): if len(args) == 0: page = 1 - elif args[0] == "last": + elif args[0] == "fin": page = -1 else: # The argument is considered to be a slug if it's not "last" and it @@ -61,17 +62,20 @@ class TopicPageConverter(BaseConverter): except ValueError: page = 1 - t = Topic.query.filter_by(id=tid).first() + t = self.object.query.filter_by(id=tid).first() if t is None: - raise Exception(f"TopicConverter: no topic with id {url}") + raise Exception(f"BaseConverter: no object with id {url}") return (t, page) - def to_url(self, topic_and_page): - t, page = topic_and_page - page = str(page) if page != -1 else "last" - slug = slugify(t.title) - return f'{t.id}/{page}/{slug}' + def to_url(self, object_and_page): + o, page = object_and_page + page = str(page) if page != -1 else "fin" + slug = slugify(o.title) + return f'{o.id}/{page}/{slug}' + +class TopicPageConverter(PageConverter): + object = Topic # Export only the converter classes __all__ = "ForumConverter TopicPageConverter".split()