Add page
This commit is contained in:
		| @@ -1,7 +1,7 @@ | |||||||
| import json | import json | ||||||
| from channels.generic.websocket import AsyncWebsocketConsumer | from channels.generic.websocket import AsyncWebsocketConsumer | ||||||
| from asgiref.sync import sync_to_async | from asgiref.sync import sync_to_async | ||||||
| from .views import page_talks | from .views import page_talks, page_about | ||||||
|  |  | ||||||
| class WebsiteConsumer(AsyncWebsocketConsumer): | class WebsiteConsumer(AsyncWebsocketConsumer): | ||||||
|  |  | ||||||
| @@ -20,7 +20,7 @@ class WebsiteConsumer(AsyncWebsocketConsumer): | |||||||
|         await self.channel_layer.group_send( |         await self.channel_layer.group_send( | ||||||
|             self.room_group_name, |             self.room_group_name, | ||||||
|             { |             { | ||||||
|                 "type": "page_talks" |                 "type": "send_page_talks" | ||||||
|             } |             } | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
| @@ -30,12 +30,41 @@ class WebsiteConsumer(AsyncWebsocketConsumer): | |||||||
|         await self.channel_layer.group_discard(self.room_group_name, self.channel_name) |         await self.channel_layer.group_discard(self.room_group_name, self.channel_name) | ||||||
|  |  | ||||||
|     async def receive(self, text_data): |     async def receive(self, text_data): | ||||||
|         pass |         # Load data | ||||||
|  |         data = json.loads(text_data) | ||||||
|  |         # Change page | ||||||
|  |         if data["action"] == "page": | ||||||
|  |             # Talks | ||||||
|  |             if data["value"] == "talks": | ||||||
|  |                 await self.channel_layer.group_send( | ||||||
|  |                     self.room_group_name, | ||||||
|  |                     { | ||||||
|  |                         "type": "send_page_talks" | ||||||
|  |                     } | ||||||
|  |                 ) | ||||||
|  |             # About | ||||||
|  |             if data["value"] == "about": | ||||||
|  |                 await self.channel_layer.group_send( | ||||||
|  |                     self.room_group_name, | ||||||
|  |                     { | ||||||
|  |                         "type": "send_page_about" | ||||||
|  |                     } | ||||||
|  |                 ) | ||||||
|  |  | ||||||
|  |     # Pages | ||||||
|  |  | ||||||
|     def _get_talks(self): |     def _get_talks(self): | ||||||
|         return page_talks() |         return page_talks() | ||||||
|  |  | ||||||
|     async def page_talks(self, event): |     async def send_page_talks(self, event): | ||||||
|         ''' Send Home page ''' |         ''' Send Home page ''' | ||||||
|         html = await sync_to_async(self._get_talks)() |         html = await sync_to_async(self._get_talks)() | ||||||
|         await self.send(text_data=html) |         await self.send(text_data=html) | ||||||
|  |  | ||||||
|  |     def _get_about(self): | ||||||
|  |         return page_about() | ||||||
|  |  | ||||||
|  |     async def send_page_about(self, event): | ||||||
|  |         ''' Send About page ''' | ||||||
|  |         html = await sync_to_async(self._get_about)() | ||||||
|  |         await self.send(text_data=html) | ||||||
| @@ -24,9 +24,23 @@ | |||||||
|                 <li><strong>HTML over WebSockets with htmx</strong></li> |                 <li><strong>HTML over WebSockets with htmx</strong></li> | ||||||
|               </ul> |               </ul> | ||||||
|               <ul> |               <ul> | ||||||
|                   <li><a href="#">Events</a></li> |                   <li> | ||||||
|  |                       {# To page Talks #} | ||||||
|  |                       <form hx-ws="send"> | ||||||
|  |                           <input type="hidden" name="action" value="page"> | ||||||
|  |                           <input type="hidden" name="value" value="talks"> | ||||||
|  |                           <a href="#" hx-ws="send" hx-trigger="click">Talks</a> | ||||||
|  |                       </form> | ||||||
|  |                   </li> | ||||||
|                   <li><a href="#">Profiles</a></li> |                   <li><a href="#">Profiles</a></li> | ||||||
|                   <li><a href="#" hx-ws="send" hx-trigger="click">About</a></li> |                   <li> | ||||||
|  |                       {# To page About #} | ||||||
|  |                       <form hx-ws="send"> | ||||||
|  |                           <input type="hidden" name="action" value="page"> | ||||||
|  |                           <input type="hidden" name="value" value="about"> | ||||||
|  |                           <a href="#" hx-ws="send" hx-trigger="click">About</a> | ||||||
|  |                       </form> | ||||||
|  |                   </li> | ||||||
|               </ul> |               </ul> | ||||||
|             </nav> |             </nav> | ||||||
|         </header> |         </header> | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ | |||||||
|                     </div> |                     </div> | ||||||
|                 </header> |                 </header> | ||||||
|                 <p> |                 <p> | ||||||
|                     {{ talk.content|truncatechars:100 }} |                     {{ talk.content|truncatechars:150 }} | ||||||
|                 </p> |                 </p> | ||||||
|                 <footer>Author {{ talk.author.full_name }} - {{ talk.category.name }}</footer> |                 <footer>Author {{ talk.author.full_name }} - {{ talk.category.name }}</footer> | ||||||
|             </article> |             </article> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user