| 14 | BLOG_POSTS_ROUTE = BLOG_POSTS_ROUTE[:-1] |
| 15 | |
| 16 | class 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 | # ) |
nothing calls this directly
no outgoing calls
no test coverage detected