mirror of
https://github.com/zulip/zulip.git
synced 2025-11-11 17:36:27 +00:00
do_delete_user: Preserve date_joined value of the user.
This commit is contained in:
committed by
Tim Abbott
parent
444bb6d0e9
commit
30ccb76e19
@@ -1215,6 +1215,7 @@ def do_delete_user(user_profile: UserProfile) -> None:
|
|||||||
)
|
)
|
||||||
user_id = user_profile.id
|
user_id = user_profile.id
|
||||||
realm = user_profile.realm
|
realm = user_profile.realm
|
||||||
|
date_joined = user_profile.date_joined
|
||||||
personal_recipient = user_profile.recipient
|
personal_recipient = user_profile.recipient
|
||||||
|
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
@@ -1232,6 +1233,7 @@ def do_delete_user(user_profile: UserProfile) -> None:
|
|||||||
full_name=f"Deleted User {user_id}",
|
full_name=f"Deleted User {user_id}",
|
||||||
active=False,
|
active=False,
|
||||||
is_mirror_dummy=True,
|
is_mirror_dummy=True,
|
||||||
|
force_date_joined=date_joined,
|
||||||
)
|
)
|
||||||
subs_to_recreate = [
|
subs_to_recreate = [
|
||||||
Subscription(
|
Subscription(
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
from datetime import datetime
|
||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
|
|
||||||
import orjson
|
import orjson
|
||||||
@@ -85,8 +86,13 @@ def create_user_profile(
|
|||||||
tutorial_status: str = UserProfile.TUTORIAL_WAITING,
|
tutorial_status: str = UserProfile.TUTORIAL_WAITING,
|
||||||
enter_sends: bool = False,
|
enter_sends: bool = False,
|
||||||
force_id: Optional[int] = None,
|
force_id: Optional[int] = None,
|
||||||
|
force_date_joined: Optional[datetime] = None,
|
||||||
) -> UserProfile:
|
) -> UserProfile:
|
||||||
now = timezone_now()
|
if force_date_joined is None:
|
||||||
|
date_joined = timezone_now()
|
||||||
|
else:
|
||||||
|
date_joined = force_date_joined
|
||||||
|
|
||||||
email = UserManager.normalize_email(email)
|
email = UserManager.normalize_email(email)
|
||||||
|
|
||||||
extra_kwargs = {}
|
extra_kwargs = {}
|
||||||
@@ -97,8 +103,8 @@ def create_user_profile(
|
|||||||
is_staff=False,
|
is_staff=False,
|
||||||
is_active=active,
|
is_active=active,
|
||||||
full_name=full_name,
|
full_name=full_name,
|
||||||
last_login=now,
|
last_login=date_joined,
|
||||||
date_joined=now,
|
date_joined=date_joined,
|
||||||
realm=realm,
|
realm=realm,
|
||||||
is_bot=bool(bot_type),
|
is_bot=bool(bot_type),
|
||||||
bot_type=bot_type,
|
bot_type=bot_type,
|
||||||
@@ -141,6 +147,7 @@ def create_user(
|
|||||||
default_all_public_streams: Optional[bool] = None,
|
default_all_public_streams: Optional[bool] = None,
|
||||||
source_profile: Optional[UserProfile] = None,
|
source_profile: Optional[UserProfile] = None,
|
||||||
force_id: Optional[int] = None,
|
force_id: Optional[int] = None,
|
||||||
|
force_date_joined: Optional[datetime] = None,
|
||||||
enable_marketing_emails: Optional[bool] = None,
|
enable_marketing_emails: Optional[bool] = None,
|
||||||
) -> UserProfile:
|
) -> UserProfile:
|
||||||
user_profile = create_user_profile(
|
user_profile = create_user_profile(
|
||||||
@@ -155,6 +162,7 @@ def create_user(
|
|||||||
tos_version,
|
tos_version,
|
||||||
timezone,
|
timezone,
|
||||||
force_id=force_id,
|
force_id=force_id,
|
||||||
|
force_date_joined=force_date_joined,
|
||||||
)
|
)
|
||||||
user_profile.avatar_source = avatar_source
|
user_profile.avatar_source = avatar_source
|
||||||
user_profile.timezone = timezone
|
user_profile.timezone = timezone
|
||||||
|
|||||||
@@ -2039,6 +2039,7 @@ class DeleteUserTest(ZulipTestCase):
|
|||||||
hamlet = self.example_user("hamlet")
|
hamlet = self.example_user("hamlet")
|
||||||
hamlet_personal_recipient = hamlet.recipient
|
hamlet_personal_recipient = hamlet.recipient
|
||||||
hamlet_user_id = hamlet.id
|
hamlet_user_id = hamlet.id
|
||||||
|
hamlet_date_joined = hamlet.date_joined
|
||||||
|
|
||||||
self.send_personal_message(cordelia, hamlet)
|
self.send_personal_message(cordelia, hamlet)
|
||||||
self.send_personal_message(hamlet, cordelia)
|
self.send_personal_message(hamlet, cordelia)
|
||||||
@@ -2072,6 +2073,7 @@ class DeleteUserTest(ZulipTestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(replacement_dummy_user.is_mirror_dummy, True)
|
self.assertEqual(replacement_dummy_user.is_mirror_dummy, True)
|
||||||
self.assertEqual(replacement_dummy_user.is_active, False)
|
self.assertEqual(replacement_dummy_user.is_active, False)
|
||||||
|
self.assertEqual(replacement_dummy_user.date_joined, hamlet_date_joined)
|
||||||
|
|
||||||
self.assertEqual(Message.objects.filter(id__in=personal_message_ids_to_hamlet).count(), 0)
|
self.assertEqual(Message.objects.filter(id__in=personal_message_ids_to_hamlet).count(), 0)
|
||||||
# Huddle messages from hamlet should have been deleted, but messages of other participants should
|
# Huddle messages from hamlet should have been deleted, but messages of other participants should
|
||||||
|
|||||||
Reference in New Issue
Block a user