33
44from sqlmodel import select
55
6+ from .. import navigation
67from .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+
813class 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
7195class 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
80104class 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