From 1b7cbd9ef06f8630d3606fa82a7eaaa678e59ef5 Mon Sep 17 00:00:00 2001 From: Prakhar Pratyush Date: Thu, 9 Mar 2023 19:59:44 +0530 Subject: [PATCH] UserTopic: Refactor 'do_set_user_topic_visibility_policy'. This commit refactors 'do_set_user_topic_visibility_policy' to remove the if/else block and just have a single call to 'set_user_topic_visibility_policy_in_database'. The branching out behaviour based on the user_topic visibility_policy is reduced to one place, i.e., 'set_user_topic_visibility_policy_in_database'. --- zerver/actions/user_topics.py | 31 ++++++++++--------------------- zerver/lib/user_topics.py | 20 ++++++++++++-------- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/zerver/actions/user_topics.py b/zerver/actions/user_topics.py index bb60d1e22e..1e2cf58740 100644 --- a/zerver/actions/user_topics.py +++ b/zerver/actions/user_topics.py @@ -2,15 +2,13 @@ import datetime from typing import Any, Dict, Optional from django.utils.timezone import now as timezone_now -from django.utils.translation import gettext as _ -from zerver.lib.exceptions import JsonableError from zerver.lib.timestamp import datetime_to_timestamp from zerver.lib.user_topics import ( get_topic_mutes, set_user_topic_visibility_policy_in_database, ) -from zerver.models import Stream, UserProfile, UserTopic +from zerver.models import Stream, UserProfile from zerver.tornado.django_api import send_event @@ -27,24 +25,15 @@ def do_set_user_topic_visibility_policy( if last_updated is None: last_updated = timezone_now() - if visibility_policy == UserTopic.VISIBILITY_POLICY_INHERIT: - try: - set_user_topic_visibility_policy_in_database( - user_profile, stream.id, topic, visibility_policy=visibility_policy - ) - except UserTopic.DoesNotExist: - raise JsonableError(_("Nothing to be done")) - else: - assert stream.recipient_id is not None - set_user_topic_visibility_policy_in_database( - user_profile, - stream.id, - topic, - visibility_policy=visibility_policy, - recipient_id=stream.recipient_id, - last_updated=last_updated, - ignore_duplicate=ignore_duplicate, - ) + set_user_topic_visibility_policy_in_database( + user_profile, + stream.id, + topic, + visibility_policy=visibility_policy, + recipient_id=stream.recipient_id, + last_updated=last_updated, + ignore_duplicate=ignore_duplicate, + ) # This first muted_topics event is deprecated and will be removed # once clients are migrated to handle the user_topic event type diff --git a/zerver/lib/user_topics.py b/zerver/lib/user_topics.py index 44c77b96cf..effe34d1ac 100644 --- a/zerver/lib/user_topics.py +++ b/zerver/lib/user_topics.py @@ -120,16 +120,20 @@ def set_user_topic_visibility_policy_in_database( ignore_duplicate: bool = False, ) -> None: if visibility_policy == UserTopic.VISIBILITY_POLICY_INHERIT: - # Will throw UserTopic.DoesNotExist if the user doesn't - # already have a visibility policy for this topic. - UserTopic.objects.get( - user_profile=user_profile, - stream_id=stream_id, - topic_name__iexact=topic_name, - ).delete() - return + try: + # Will throw UserTopic.DoesNotExist if the user doesn't + # already have a visibility policy for this topic. + UserTopic.objects.get( + user_profile=user_profile, + stream_id=stream_id, + topic_name__iexact=topic_name, + ).delete() + return + except UserTopic.DoesNotExist: + raise JsonableError(_("Nothing to be done")) assert last_updated is not None + assert recipient_id is not None (row, created) = UserTopic.objects.get_or_create( user_profile=user_profile, stream_id=stream_id,