MCPcopy Create free account
hub / github.com/codingforentrepreneurs/full-stack-python / BlogPostState

Class BlogPostState

full_stack_python/blog/state.py:16–114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14 BLOG_POSTS_ROUTE = BLOG_POSTS_ROUTE[:-1]
15
16class BlogPostState(SessionState):
17 posts: List['BlogPostModel'] = []
18 post: Optional['BlogPostModel'] = None
19 post_content: str = ""
20 post_publish_active: bool = False
21
22 @rx.var
23 def blog_post_id(self):
24 return self.router.page.params.get("blog_id", "")
25
26 @rx.var
27 def blog_post_url(self):
28 if not self.post:
29 return f"{BLOG_POSTS_ROUTE}"
30 return f"{BLOG_POSTS_ROUTE}/{self.post.id}"
31
32 @rx.var
33 def blog_post_edit_url(self):
34 if not self.post:
35 return f"{BLOG_POSTS_ROUTE}"
36 return f"{BLOG_POSTS_ROUTE}/{self.post.id}/edit"
37
38 def get_post_detail(self):
39 if self.my_userinfo_id is None:
40 self.post = None
41 self.post_content = ""
42 self.post_publish_active = False
43 return
44 lookups = (
45 (BlogPostModel.userinfo_id == self.my_userinfo_id) &
46 (BlogPostModel.id == self.blog_post_id)
47 )
48 with rx.session() as session:
49 if self.blog_post_id == "":
50 self.post = None
51 return
52 sql_statement = select(BlogPostModel).options(
53 sqlalchemy.orm.joinedload(BlogPostModel.userinfo).joinedload(UserInfo.user)
54 ).where(lookups)
55 result = session.exec(sql_statement).one_or_none()
56 # if result.userinfo: # db lookup
57 # print('working')
58 # result.userinfo.user # db lookup
59 self.post = result
60 if result is None:
61 self.post_content = ""
62 return
63 self.post_content = self.post.content
64 self.post_publish_active = self.post.publish_active
65 # return
66
67
68 def load_posts(self, *args, **kwargs):
69 # if published_only:
70 # lookup_args = (
71 # (BlogPostModel.publish_active == True) &
72 # (BlogPostModel.publish_date < datetime.now())
73 # )

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected