From 4fd5d8a81db814a91c8b6cbd935d8f20c606d4c3 Mon Sep 17 00:00:00 2001 From: tijani Date: Sun, 6 Jun 2021 23:51:57 +0200 Subject: [PATCH] Name all arguments in functions and reneme channel_name field to channel_id field --- wagtail_live/adapters/slack/receiver.py | 26 ++++-- wagtail_live/models.py | 13 +-- wagtail_live/receivers.py | 105 ++++++++++++++---------- 3 files changed, 87 insertions(+), 57 deletions(-) diff --git a/wagtail_live/adapters/slack/receiver.py b/wagtail_live/adapters/slack/receiver.py index 6f08e0ba..c29d3a59 100644 --- a/wagtail_live/adapters/slack/receiver.py +++ b/wagtail_live/adapters/slack/receiver.py @@ -21,17 +21,17 @@ class SlackEventsAPIReceiver(BaseMessageReceiver): def dispatch(self, event): message = event if "subtype" in message and message["subtype"] == "message_changed": - self.change_message(message) + self.change_message(message=message) return elif "subtype" in message and message["subtype"] == "message_deleted": - self.delete_message(message) + self.delete_message(message=message) return else: - self.add_message(message) + self.add_message(message=message) - def get_channel_name_from_message(self, message): + def get_channel_id_from_message(self, message): return message["channel"] def get_message_id_from_message(self, message): @@ -46,10 +46,22 @@ def get_message_files(self, message): return [] def get_message_id_from_edited_message(self, message): - return self.get_message_id_from_message(message["previous_message"]) + return self.get_message_id_from_message(message=message["previous_message"]) def get_message_text_from_edited_message(self, message): - return self.get_message_text(message["message"]) + return self.get_message_text(message=message["message"]) def get_message_files_from_edited_message(self, message): - return self.get_message_files(message["message"]) + return self.get_message_files(message=message["message"]) + + def is_embed(self, text): + # Strip leading `<` and trailing `>`. + + return is_embed(text=text[1:-1]) + + def get_embed(self, text): + + # Not sure if it's the normal behavior, but have repeatedly received links + # from SLack API that looks like below: + # ' + return text[1:-1].split("|")[0] diff --git a/wagtail_live/models.py b/wagtail_live/models.py index 78068301..67ad2fed 100644 --- a/wagtail_live/models.py +++ b/wagtail_live/models.py @@ -22,8 +22,8 @@ class LiveBlogPage(Page, LivePageMixin): class LivePageMixin(models.Model): """A helper class for pages using Wagtail Live. Attributes: - channel_name (str): - Name of the corresponding channel in a messaging app. + channel_id (str): + Id of the corresponding channel in a messaging app. last_update_at (DateTime): Date and time of the last update for this channel/page. live_posts (StreamField): @@ -31,8 +31,8 @@ class LivePageMixin(models.Model): respectively on this page/channel. """ - channel_name = models.CharField( - help_text="Channel name", + channel_id = models.CharField( + help_text="Channel ID", max_length=255, ) @@ -50,7 +50,7 @@ class LivePageMixin(models.Model): ) panels = [ - FieldPanel("channel_name"), + FieldPanel("channel_id"), FieldPanel("last_update_at"), StreamFieldPanel("live_posts"), ] @@ -101,7 +101,8 @@ def get_live_post_by_index(self, live_post_index): live_post = self.live_posts[live_post_index] except KeyError: raise - return live_post + else: + return live_post def get_live_post_by_id(self, live_post_id): """Retrieve a live post by its ID. diff --git a/wagtail_live/receivers.py b/wagtail_live/receivers.py index c8997552..2e628cd9 100644 --- a/wagtail_live/receivers.py +++ b/wagtail_live/receivers.py @@ -65,32 +65,32 @@ def dispatch(self, event): raise NotImplementedError - def get_channel_name_from_message(self, message): - """Retrieve a channel name from a message. + def get_channel_id_from_message(self, message): + """Retrieve a channel ID from a message. Args: message: A received message from a messaging app Returns: - Name of the channel which the given message belongs to + ID of the channel which the given message belongs to """ raise NotImplementedError - def get_live_page_from_channel_name(self, channel_name): - """Retrieve the live page with a given channel name. + def get_live_page_from_channel_id(self, channel_id): + """Retrieve the live page with a given channel ID. Args: - channel_name (str): Channel name + channel_id (str): Channel ID Returns: - (LivePageMixin) The livepage corresponding to channel name. + (LivePageMixin) The livepage corresponding to channel ID. Raises: - Http404 if a page with the given channel name doesn't exist. + Http404 if a page with the given channel ID doesn't exist. """ - return get_object_or_404(self.model, channel_name=channel_name) + return get_object_or_404(self.model, channel_id=channel_id) def get_message_id_from_message(self, message): """Retrieve message's ID. @@ -168,6 +168,20 @@ def get_message_files_from_edited_message(self, message): raise NotImplementedError + def is_embed(self, text): + """Check if a text is an embed for this receiver. + + Mesaging apps have different ways to handle embed. + By default, use the is_embed function. + """ + + return is_embed(text=text) + + def get_embed(self, text): + """Retrieve the actual URL of the embed.""" + + return text + def process_text(self, live_page, live_post, message_text): """Processes the text of a message. @@ -185,24 +199,23 @@ def process_text(self, live_page, live_post, message_text): """ message_parts = message_text.split("\n") - for part in message_parts: + for text in message_parts: block_type = "" - if is_embed(part[1:-1]): - # Strip leading `<` and trailing `>`. - # Not sure if it's the normal behavior, but have repeatedly received links - # from SLack API that looks like below: - # ' - - url = part[1:-1].split("|")[0] - block = construct_embed_block(url) + if self.is_embed(text=text): + url = self.get_embed(text=text) + block = construct_embed_block(url=url) block_type = EMBED else: - block = construct_text_block(part) + block = construct_text_block(text=text) block_type = TEXT - live_page.add_block_to_live_post(block_type, block, live_post) + live_page.add_block_to_live_post( + block_type=block_type, + block=block, + live_block=live_post, + ) def process_files(self, live_page, live_post, files): """Processes the files of a message. @@ -236,8 +249,12 @@ def process_files(self, live_page, live_post, files): ), ) img.save() - block = construct_image_block(img) - live_page.add_block_to_live_post(IMAGE, block, live_post) + block = construct_image_block(image=img) + live_page.add_block_to_live_post( + block_type=IMAGE, + block=block, + live_block=live_post, + ) def add_message(self, message): """Add a received message from a messaging app to the corresponding channel. @@ -246,23 +263,23 @@ def add_message(self, message): message: A message received from a messaging app """ - message_id = self.get_message_id_from_message(message) - channel_name = self.get_channel_name_from_message(message) + message_id = self.get_message_id_from_message(message=message) + channel_id = self.get_channel_id_from_message(message=message) try: - live_page = self.get_live_page_from_channel_name(channel_name) + live_page = self.get_live_page_from_channel_id(channel_id=channel_id) except Http404: # maybe create the LivePage here? return - live_post = construct_live_post_block(message_id, now()) + live_post = construct_live_post_block(message_id=message_id, created=now()) - message_text = self.get_message_text(message) - self.process_text(live_page, live_post, message_text) + message_text = self.get_message_text(message=message) + self.process_text(live_page=live_page, live_post=live_post, message_text=message_text) - files = self.get_message_files(message) - self.process_files(live_page, live_post, files) + files = self.get_message_files(message=message) + self.process_files(live_page=live_page, live_post=live_post, files=files) - live_page.add_live_post(live_post, message_id) + live_page.add_live_post(live_post=live_post, live_post_id=message_id) def change_message(self, message): """Change a message when it's edited from a messaging app. @@ -271,23 +288,23 @@ def change_message(self, message): message: A message edited from a messaging app """ - message_id = self.get_message_id_from_edited_message(message) - channel_name = self.get_channel_name_from_message(message) + message_id = self.get_message_id_from_edited_message(message=message) + channel_id = self.get_channel_id_from_message(message=message) try: - live_page = self.get_live_page_from_channel_name(channel_name) + live_page = self.get_live_page_from_channel_id(channel_id=channel_id) except Http404: return live_post = live_page.get_live_post_by_id(live_post_id=message_id) - live_page.clear_live_post_content(live_post) + live_page.clear_live_post_content(live_post=live_post) - message_text = self.get_message_text_from_edited_message(message) - self.process_text(live_page, live_post.value, message_text) + message_text = self.get_message_text_from_edited_message(message=message) + self.process_text(live_page=live_page, live_post=live_post.value, message_text=message_text) - files = self.get_message_files_from_edited_message(message) - self.process_files(live_page, live_post.value, files) + files = self.get_message_files_from_edited_message(message=message) + self.process_files(live_page=live_page, live_post=live_post.value, files=files) - live_page.update_live_post(live_post) + live_page.update_live_post(live_post=live_post) def delete_message(self, message): """Delete a message when it's deleted from a messaging app. @@ -296,11 +313,11 @@ def delete_message(self, message): message: A message deleted from a messaging app """ - message_id = self.get_message_id_from_edited_message(message) - channel_name = self.get_channel_name_from_message(message) + message_id = self.get_message_id_from_edited_message(message=message) + channel_id = self.get_channel_id_from_message(message=message) try: - live_page = self.get_live_page_from_channel_name(channel_name) + live_page = self.get_live_page_from_channel_id(channel_id=channel_id) except Http404: return - live_page.delete_live_post(message_id) + live_page.delete_live_post(live_post_id=message_id)