mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
Terms of Service: Fix corner cases around new users being created.
This fixes a few bugs in 7910a6e134,
related to automatically created user accounts.
This commit is contained in:
@@ -277,12 +277,12 @@ def notify_created_bot(user_profile):
|
||||
send_event(event, bot_owner_userids(user_profile))
|
||||
|
||||
def do_create_user(email, password, realm, full_name, short_name,
|
||||
active=True, bot_type=None, bot_owner=None,
|
||||
active=True, bot_type=None, bot_owner=None, tos_version=None,
|
||||
avatar_source=UserProfile.AVATAR_FROM_GRAVATAR,
|
||||
default_sending_stream=None, default_events_register_stream=None,
|
||||
default_all_public_streams=None, prereg_user=None,
|
||||
newsletter_data=None):
|
||||
# type: (text_type, text_type, Realm, text_type, text_type, bool, Optional[int], Optional[UserProfile], text_type, Optional[Stream], Optional[Stream], bool, Optional[PreregistrationUser], Optional[Dict[str, str]]) -> UserProfile
|
||||
# type: (text_type, text_type, Realm, text_type, text_type, bool, Optional[int], Optional[UserProfile], Optional[text_type], text_type, Optional[Stream], Optional[Stream], bool, Optional[PreregistrationUser], Optional[Dict[str, str]]) -> UserProfile
|
||||
event = {'type': 'user_created',
|
||||
'timestamp': time.time(),
|
||||
'full_name': full_name,
|
||||
@@ -297,7 +297,7 @@ def do_create_user(email, password, realm, full_name, short_name,
|
||||
user_profile = create_user(email=email, password=password, realm=realm,
|
||||
full_name=full_name, short_name=short_name,
|
||||
active=active, bot_type=bot_type, bot_owner=bot_owner,
|
||||
avatar_source=avatar_source,
|
||||
tos_version=tos_version, avatar_source=avatar_source,
|
||||
default_sending_stream=default_sending_stream,
|
||||
default_events_register_stream=default_events_register_stream,
|
||||
default_all_public_streams=default_all_public_streams)
|
||||
@@ -1579,8 +1579,9 @@ def do_activate_user(user_profile, log=True, join_date=timezone.now()):
|
||||
user_profile.is_mirror_dummy = False
|
||||
user_profile.set_unusable_password()
|
||||
user_profile.date_joined = join_date
|
||||
user_profile.tos_version = settings.TOS_VERSION
|
||||
user_profile.save(update_fields=["is_active", "date_joined", "password",
|
||||
"is_mirror_dummy"])
|
||||
"is_mirror_dummy", "tos_version"])
|
||||
|
||||
if log:
|
||||
domain = user_profile.realm.domain
|
||||
|
||||
@@ -18,8 +18,8 @@ def bulk_create_realms(realm_list):
|
||||
existing_realms.add(domain)
|
||||
Realm.objects.bulk_create(realms_to_create)
|
||||
|
||||
def bulk_create_users(realms, users_raw, bot_type=None):
|
||||
# type: (Mapping[text_type, Realm], Set[Tuple[text_type, text_type, text_type, bool]], Optional[int]) -> None
|
||||
def bulk_create_users(realms, users_raw, bot_type=None, tos_version=None):
|
||||
# type: (Mapping[text_type, Realm], Set[Tuple[text_type, text_type, text_type, bool]], Optional[int], Optional[text_type]) -> None
|
||||
"""
|
||||
Creates and saves a UserProfile with the given email.
|
||||
Has some code based off of UserManage.create_user, but doesn't .save()
|
||||
@@ -39,7 +39,7 @@ def bulk_create_users(realms, users_raw, bot_type=None):
|
||||
domain = resolve_email_to_domain(email)
|
||||
profile = create_user_profile(realms[domain], email,
|
||||
initial_password(email), active, bot_type,
|
||||
full_name, short_name, None, False)
|
||||
full_name, short_name, None, False, tos_version)
|
||||
profiles_to_create.append(profile)
|
||||
UserProfile.objects.bulk_create(profiles_to_create)
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ def random_api_key():
|
||||
# create_user (below) which will also make the Subscription and
|
||||
# Recipient objects
|
||||
def create_user_profile(realm, email, password, active, bot_type, full_name,
|
||||
short_name, bot_owner, is_mirror_dummy):
|
||||
# type: (Realm, text_type, text_type, bool, Optional[int], text_type, text_type, Optional[UserProfile], bool) -> UserProfile
|
||||
short_name, bot_owner, is_mirror_dummy, tos_version):
|
||||
# type: (Realm, text_type, text_type, bool, Optional[int], text_type, text_type, Optional[UserProfile], bool, Optional[text_type]) -> UserProfile
|
||||
now = timezone.now()
|
||||
email = UserManager.normalize_email(email)
|
||||
|
||||
@@ -38,6 +38,7 @@ def create_user_profile(realm, email, password, active, bot_type, full_name,
|
||||
last_login=now, date_joined=now, realm=realm,
|
||||
pointer=-1, is_bot=bool(bot_type), bot_type=bot_type,
|
||||
is_mirror_dummy=is_mirror_dummy,
|
||||
tos_version=tos_version,
|
||||
enable_stream_desktop_notifications=enable_stream_desktop_notifications,
|
||||
onboarding_steps=ujson.dumps([]),
|
||||
default_language=realm.default_language)
|
||||
@@ -54,15 +55,15 @@ def create_user_profile(realm, email, password, active, bot_type, full_name,
|
||||
return user_profile
|
||||
|
||||
def create_user(email, password, realm, full_name, short_name,
|
||||
active=True, bot_type=None, bot_owner=None,
|
||||
active=True, bot_type=None, bot_owner=None, tos_version=None,
|
||||
avatar_source=UserProfile.AVATAR_FROM_GRAVATAR,
|
||||
is_mirror_dummy=False, default_sending_stream=None,
|
||||
default_events_register_stream=None,
|
||||
default_all_public_streams=None, user_profile_id=None):
|
||||
# type: (text_type, text_type, Realm, text_type, text_type, bool, Optional[int], Optional[UserProfile], text_type, bool, Optional[Stream], Optional[Stream], Optional[bool], Optional[int]) -> UserProfile
|
||||
# type: (text_type, text_type, Realm, text_type, text_type, bool, Optional[int], Optional[UserProfile], Optional[text_type], text_type, bool, Optional[Stream], Optional[Stream], Optional[bool], Optional[int]) -> UserProfile
|
||||
user_profile = create_user_profile(realm, email, password, active, bot_type,
|
||||
full_name, short_name, bot_owner,
|
||||
is_mirror_dummy)
|
||||
is_mirror_dummy, tos_version)
|
||||
user_profile.avatar_source = avatar_source
|
||||
user_profile.default_sending_stream = default_sending_stream
|
||||
user_profile.default_events_register_stream = default_events_register_stream
|
||||
|
||||
@@ -14,6 +14,6 @@ class Migration(migrations.Migration):
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='tos_version',
|
||||
field=models.CharField(default=None, max_length=10, null=True),
|
||||
field=models.CharField(max_length=10, null=True),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -391,7 +391,7 @@ class UserProfile(ModelReprMixin, AbstractBaseUser, PermissionsMixin):
|
||||
last_pointer_updater = models.CharField(max_length=64) # type: text_type
|
||||
realm = models.ForeignKey(Realm) # type: Realm
|
||||
api_key = models.CharField(max_length=32) # type: text_type
|
||||
tos_version = models.CharField(null=True, max_length=10, default=settings.TOS_VERSION) # type: text_type
|
||||
tos_version = models.CharField(null=True, max_length=10) # type: text_type
|
||||
|
||||
### Notifications settings. ###
|
||||
|
||||
|
||||
@@ -224,7 +224,6 @@ def accounts_register(request):
|
||||
user_profile = do_create_user(email, password, realm, full_name, short_name,
|
||||
prereg_user=prereg_user,
|
||||
newsletter_data={"IP": request.META['REMOTE_ADDR']})
|
||||
do_change_tos_version(user_profile, settings.TOS_VERSION)
|
||||
|
||||
# This logs you in using the ZulipDummyBackend, since honestly nothing
|
||||
# more fancy than this is required.
|
||||
|
||||
@@ -42,7 +42,8 @@ def create_users(realms, name_list, bot_type=None):
|
||||
for full_name, email in name_list:
|
||||
short_name = email_to_username(email)
|
||||
user_set.add((email, full_name, short_name, True))
|
||||
bulk_create_users(realms, user_set, bot_type)
|
||||
tos_version = settings.TOS_VERSION if bot_type is None else None
|
||||
bulk_create_users(realms, user_set, bot_type=bot_type, tos_version=tos_version)
|
||||
|
||||
def create_streams(realms, realm, stream_list):
|
||||
# type: (Mapping[text_type, Realm], Realm, Iterable[text_type]) -> None
|
||||
@@ -428,7 +429,7 @@ def restore_saved_messages():
|
||||
streams[recipient.type_id].name.lower())] = recipient
|
||||
|
||||
print(datetime.datetime.now(), "Creating users...")
|
||||
bulk_create_users(realms, user_set)
|
||||
bulk_create_users(realms, user_set, tos_version=settings.TOS_VERSION)
|
||||
|
||||
users = {} # type: Dict[text_type, UserProfile]
|
||||
users_by_id = {} # type: Dict[int, UserProfile]
|
||||
|
||||
Reference in New Issue
Block a user