コード例 #1
0
def do_change_default_events_register_stream(
        user_profile: UserProfile, stream: Optional[Stream], *,
        acting_user: Optional[UserProfile]) -> None:
    old_value = user_profile.default_events_register_stream_id
    user_profile.default_events_register_stream = stream
    user_profile.save(update_fields=["default_events_register_stream"])

    event_time = timezone_now()
    RealmAuditLog.objects.create(
        realm=user_profile.realm,
        event_type=RealmAuditLog.USER_DEFAULT_REGISTER_STREAM_CHANGED,
        event_time=event_time,
        modified_user=user_profile,
        acting_user=acting_user,
        extra_data=orjson.dumps({
            RealmAuditLog.OLD_VALUE:
            old_value,
            RealmAuditLog.NEW_VALUE:
            None if stream is None else stream.id,
        }).decode(),
    )

    if user_profile.is_bot:
        if stream:
            stream_name: Optional[str] = stream.name
        else:
            stream_name = None

        event = dict(
            type="realm_bot",
            op="update",
            bot=dict(
                user_id=user_profile.id,
                default_events_register_stream=stream_name,
            ),
        )
        transaction.on_commit(lambda: send_event(
            user_profile.realm,
            event,
            bot_owner_user_ids(user_profile),
        ))