Skip to content

Commit 5a83527

Browse files
34 - Blog Post Redirect and Urls
1 parent 9ceb849 commit 5a83527

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

full_stack_python/blog/detail.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# @rx.page(route='/about')
88
def blog_post_detail_page() -> rx.Component:
99
can_edit = True
10-
edit_link = rx.link("Edit", href=f"/blog/{state.BlogPostState.blog_post_id}/edit")
10+
edit_link = rx.link("Edit", href=f"{state.BlogPostState.blog_post_edit_url}")
1111
edit_link_el = rx.cond(
1212
can_edit,
1313
edit_link,

full_stack_python/blog/state.py

+27-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@
33

44
from sqlmodel import select
55

6+
from .. import navigation
67
from .model import BlogPostModel
78

9+
BLOG_POSTS_ROUTE = navigation.routes.BLOG_POSTS_ROUTE
10+
if BLOG_POSTS_ROUTE.endswith("/"):
11+
BLOG_POSTS_ROUTE = BLOG_POSTS_ROUTE[:-1]
12+
813
class BlogPostState(rx.State):
914
posts: List['BlogPostModel'] = []
1015
post: Optional['BlogPostModel'] = None
@@ -14,6 +19,18 @@ class BlogPostState(rx.State):
1419
def blog_post_id(self):
1520
return self.router.page.params.get("blog_id", "")
1621

22+
@rx.var
23+
def blog_post_url(self):
24+
if not self.post:
25+
return f"{BLOG_POSTS_ROUTE}"
26+
return f"{BLOG_POSTS_ROUTE}/{self.post.id}"
27+
28+
@rx.var
29+
def blog_post_edit_url(self):
30+
if not self.post:
31+
return f"{BLOG_POSTS_ROUTE}"
32+
return f"{BLOG_POSTS_ROUTE}/{self.post.id}/edit"
33+
1734
def get_post_detail(self):
1835
with rx.session() as session:
1936
if self.blog_post_id == "":
@@ -65,7 +82,14 @@ def save_post_edits(self, post_id:int, updated_data:dict):
6582
session.add(post)
6683
session.commit()
6784
session.refresh(post)
68-
#
85+
self.post = post
86+
87+
def to_blog_post(self, edit_page=False):
88+
if not self.post:
89+
return rx.redirect(BLOG_POSTS_ROUTE)
90+
if edit_page:
91+
return rx.redirect(f"{self.blog_post_edit_url}")
92+
return rx.redirect(f"{self.blog_post_url}")
6993

7094

7195
class BlogAddPostFormState(BlogPostState):
@@ -74,7 +98,7 @@ class BlogAddPostFormState(BlogPostState):
7498
def handle_submit(self, form_data):
7599
self.form_data = form_data
76100
self.add_post(form_data)
77-
# redirect
101+
return self.to_blog_post(edit_page=True)
78102

79103

80104
class BlogEditFormState(BlogPostState):
@@ -86,4 +110,4 @@ def handle_submit(self, form_data):
86110
post_id = form_data.pop('post_id')
87111
updated_data = {**form_data}
88112
self.save_post_edits(post_id, updated_data)
89-
# redirect
113+
return self.to_blog_post()

0 commit comments

Comments
 (0)