mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
export: Fix importing/exporting of user avatars.
We apparently failed to update the export code for handling what directories avatar files should live in during the earlier process. Fixes #7052.
This commit is contained in:
@@ -15,7 +15,7 @@ import ujson
|
|||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
from zerver.lib.avatar_hash import user_avatar_hash
|
from zerver.lib.avatar_hash import user_avatar_hash, user_avatar_path_from_ids
|
||||||
from zerver.lib.create_user import random_api_key
|
from zerver.lib.create_user import random_api_key
|
||||||
from zerver.models import UserProfile, Realm, Client, Huddle, Stream, \
|
from zerver.models import UserProfile, Realm, Client, Huddle, Stream, \
|
||||||
UserMessage, Subscription, Message, RealmEmoji, RealmFilter, \
|
UserMessage, Subscription, Message, RealmEmoji, RealmFilter, \
|
||||||
@@ -865,9 +865,9 @@ def export_files_from_s3(realm, bucket_name, output_dir, processing_avatars=Fals
|
|||||||
if processing_avatars:
|
if processing_avatars:
|
||||||
bucket_list = bucket.list()
|
bucket_list = bucket.list()
|
||||||
for user_profile in UserProfile.objects.filter(realm=realm):
|
for user_profile in UserProfile.objects.filter(realm=realm):
|
||||||
avatar_hash = user_avatar_hash(user_profile.email)
|
avatar_path = user_avatar_path_from_ids(user_profile.id, realm.id)
|
||||||
avatar_hash_values.add(avatar_hash)
|
avatar_hash_values.add(avatar_path)
|
||||||
avatar_hash_values.add(avatar_hash + ".original")
|
avatar_hash_values.add(avatar_path + ".original")
|
||||||
user_ids.add(user_profile.id)
|
user_ids.add(user_profile.id)
|
||||||
else:
|
else:
|
||||||
bucket_list = bucket.list(prefix="%s/" % (realm.id,))
|
bucket_list = bucket.list(prefix="%s/" % (realm.id,))
|
||||||
@@ -977,13 +977,13 @@ def export_avatars_from_local(realm, local_dir, output_dir):
|
|||||||
if user.avatar_source == UserProfile.AVATAR_FROM_GRAVATAR:
|
if user.avatar_source == UserProfile.AVATAR_FROM_GRAVATAR:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
avatar_hash = user_avatar_hash(user.email)
|
avatar_path = user_avatar_path_from_ids(user.id, realm.id)
|
||||||
wildcard = os.path.join(local_dir, avatar_hash + '.*')
|
wildcard = os.path.join(local_dir, avatar_path + '.*')
|
||||||
|
|
||||||
for local_path in glob.glob(wildcard):
|
for local_path in glob.glob(wildcard):
|
||||||
logging.info('Copying avatar file for user %s from %s' % (
|
logging.info('Copying avatar file for user %s from %s' % (
|
||||||
user.email, local_path))
|
user.email, local_path))
|
||||||
fn = os.path.basename(local_path)
|
fn = os.path.relpath(local_path, local_dir)
|
||||||
output_path = os.path.join(output_dir, fn)
|
output_path = os.path.join(output_dir, fn)
|
||||||
mkdir_p(str(os.path.dirname(output_path)))
|
mkdir_p(str(os.path.dirname(output_path)))
|
||||||
subprocess.check_call(["cp", "-a", str(local_path), str(output_path)])
|
subprocess.check_call(["cp", "-a", str(local_path), str(output_path)])
|
||||||
@@ -1324,10 +1324,10 @@ def import_uploads_local(import_dir, processing_avatars=False):
|
|||||||
|
|
||||||
for record in records:
|
for record in records:
|
||||||
if processing_avatars:
|
if processing_avatars:
|
||||||
# For avatars, we need to rehash the user's email with the
|
# For avatars, we need to rehash the user ID with the
|
||||||
# new server's avatar salt
|
# new server's avatar salt
|
||||||
avatar_hash = user_avatar_hash(record['user_profile_email'])
|
avatar_path = user_avatar_path_from_ids(record['user_profile_id'], record['realm_id'])
|
||||||
file_path = os.path.join(settings.LOCAL_UPLOADS_DIR, "avatars", avatar_hash)
|
file_path = os.path.join(settings.LOCAL_UPLOADS_DIR, "avatars", avatar_path)
|
||||||
if record['s3_path'].endswith('.original'):
|
if record['s3_path'].endswith('.original'):
|
||||||
file_path += '.original'
|
file_path += '.original'
|
||||||
else:
|
else:
|
||||||
@@ -1355,8 +1355,8 @@ def import_uploads_s3(bucket_name, import_dir, processing_avatars=False):
|
|||||||
if processing_avatars:
|
if processing_avatars:
|
||||||
# For avatars, we need to rehash the user's email with the
|
# For avatars, we need to rehash the user's email with the
|
||||||
# new server's avatar salt
|
# new server's avatar salt
|
||||||
avatar_hash = user_avatar_hash(record['user_profile_email'])
|
avatar_path = user_avatar_path_from_ids(record['user_profile_id'], record['realm_id'])
|
||||||
key.key = avatar_hash
|
key.key = avatar_path
|
||||||
if record['s3_path'].endswith('.original'):
|
if record['s3_path'].endswith('.original'):
|
||||||
key.key += '.original'
|
key.key += '.original'
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user