do_mark_stream_messages_as_read: Accept a Client object.

We also fix an incorrect Optional in the type annotations.
This commit is contained in:
Tim Abbott
2018-03-13 16:09:11 -07:00
parent 6e55342e21
commit c775be8ea4
3 changed files with 9 additions and 6 deletions

View File

@@ -2777,6 +2777,7 @@ def bulk_remove_subscriptions(users: Iterable[UserProfile],
notify_subscriptions_removed(user_profile, streams_by_user[user_profile.id])
event = {'type': 'mark_stream_messages_as_read',
'client_id': acting_client.id,
'user_profile_id': user_profile.id,
'stream_ids': [stream.id for stream in streams]}
queue_json_publish("deferred_work", event)
@@ -3578,7 +3579,8 @@ def do_mark_all_as_read(user_profile: UserProfile, client: Client) -> int:
return count
def do_mark_stream_messages_as_read(user_profile: UserProfile,
stream: Optional[Stream],
client: Client,
stream: Stream,
topic_name: Optional[str]=None) -> int:
log_statsd_event('mark_stream_as_read')

View File

@@ -999,7 +999,7 @@ def mark_stream_as_read(request: HttpRequest,
user_profile: UserProfile,
stream_id: int=REQ(validator=check_int)) -> HttpResponse:
stream, recipient, sub = access_stream_by_id(user_profile, stream_id)
count = do_mark_stream_messages_as_read(user_profile, stream)
count = do_mark_stream_messages_as_read(user_profile, request.client, stream)
log_data_str = "[%s updated]" % (count,)
request._log_data["extra"] = log_data_str
@@ -1021,7 +1021,7 @@ def mark_topic_as_read(request: HttpRequest,
if not topic_exists:
raise JsonableError(_('No such topic \'%s\'') % (topic_name,))
count = do_mark_stream_messages_as_read(user_profile, stream, topic_name)
count = do_mark_stream_messages_as_read(user_profile, request.client, stream, topic_name)
log_data_str = "[%s updated]" % (count,)
request._log_data["extra"] = log_data_str

View File

@@ -14,7 +14,8 @@ from django.core.handlers.wsgi import WSGIRequest
from django.core.handlers.base import BaseHandler
from zerver.models import \
get_client, get_system_bot, ScheduledEmail, PreregistrationUser, \
get_user_profile_by_id, Message, Realm, Service, UserMessage, UserProfile
get_user_profile_by_id, Message, Realm, Service, UserMessage, UserProfile, \
Client
from zerver.lib.context_managers import lockfile
from zerver.lib.error_notify import do_report_error
from zerver.lib.feedback import handle_feedback
@@ -41,7 +42,6 @@ from zerver.lib.str_utils import force_str
from zerver.context_processors import common_context
from zerver.lib.outgoing_webhook import do_rest_call, get_outgoing_webhook_service_handler
from zerver.models import get_bot_services
from zulip import Client
from zulip_bots.lib import extract_query_without_mention
from zerver.lib.bot_lib import EmbeddedBotHandler, get_bot_handler, EmbeddedBotQuitException
@@ -522,6 +522,7 @@ class DeferredWorker(QueueProcessingWorker):
def consume(self, event: Mapping[str, Any]) -> None:
if event['type'] == 'mark_stream_messages_as_read':
user_profile = get_user_profile_by_id(event['user_profile_id'])
client = Client.objects.get(id=event['client_id'])
for stream_id in event['stream_ids']:
# Since the user just unsubscribed, we don't require
@@ -529,4 +530,4 @@ class DeferredWorker(QueueProcessingWorker):
# streams would never be accessible)
(stream, recipient, sub) = access_stream_by_id(user_profile, stream_id,
require_active=False)
do_mark_stream_messages_as_read(user_profile, stream)
do_mark_stream_messages_as_read(user_profile, client, stream)