mirror of https://github.com/zulip/zulip.git
import script: re_map minor foreign keys.
This commit is contained in:
parent
078453554e
commit
a2ecdeb28d
|
@ -53,10 +53,10 @@ PostProcessData = Any # TODO: make more specific
|
||||||
# TODO: tighten this up with a union.
|
# TODO: tighten this up with a union.
|
||||||
MessageOutput = Dict[str, Any]
|
MessageOutput = Dict[str, Any]
|
||||||
|
|
||||||
realm_tables = [("zerver_defaultstream", DefaultStream),
|
realm_tables = [("zerver_defaultstream", DefaultStream, "defaultstream"),
|
||||||
("zerver_realmemoji", RealmEmoji),
|
("zerver_realmemoji", RealmEmoji, "realmemoji"),
|
||||||
("zerver_realmdomain", RealmDomain),
|
("zerver_realmdomain", RealmDomain, "realmdomain"),
|
||||||
("zerver_realmfilter", RealmFilter)] # List[Tuple[TableName, Any]]
|
("zerver_realmfilter", RealmFilter, "realmfilter")] # List[Tuple[TableName, Any, str]]
|
||||||
|
|
||||||
|
|
||||||
ALL_ZERVER_TABLES = [
|
ALL_ZERVER_TABLES = [
|
||||||
|
@ -1222,7 +1222,15 @@ id_maps = {
|
||||||
'stream': {},
|
'stream': {},
|
||||||
'recipient': {},
|
'recipient': {},
|
||||||
'subscription': {},
|
'subscription': {},
|
||||||
|
'defaultstream': {},
|
||||||
|
'realmemoji': {},
|
||||||
|
'realmdomain': {},
|
||||||
|
'realmfilter': {},
|
||||||
'message': {},
|
'message': {},
|
||||||
|
'user_presence': {},
|
||||||
|
'useractivity': {},
|
||||||
|
'useractivityinterval': {},
|
||||||
|
'usermessage': {},
|
||||||
} # type: Dict[str, Dict[int, int]]
|
} # type: Dict[str, Dict[int, int]]
|
||||||
|
|
||||||
def update_id_map(table: TableName, old_id: int, new_id: int) -> None:
|
def update_id_map(table: TableName, old_id: int, new_id: int) -> None:
|
||||||
|
@ -1250,6 +1258,8 @@ def current_table_ids(data: TableData, table: TableName) -> List[int]:
|
||||||
return id_list
|
return id_list
|
||||||
|
|
||||||
def idseq(model_class: Any) -> str:
|
def idseq(model_class: Any) -> str:
|
||||||
|
if model_class == RealmDomain:
|
||||||
|
return 'zerver_realmalias_id_seq'
|
||||||
return '{}_id_seq'.format(model_class._meta.db_table)
|
return '{}_id_seq'.format(model_class._meta.db_table)
|
||||||
|
|
||||||
def allocate_ids(model_class: Any, count: int) -> List[int]:
|
def allocate_ids(model_class: Any, count: int) -> List[int]:
|
||||||
|
@ -1515,8 +1525,14 @@ def do_import_realm(import_dir: Path) -> Realm:
|
||||||
realm.save()
|
realm.save()
|
||||||
|
|
||||||
re_map_foreign_keys(data['zerver_defaultstream'], 'stream', related_table="stream")
|
re_map_foreign_keys(data['zerver_defaultstream'], 'stream', related_table="stream")
|
||||||
for (table, model) in realm_tables:
|
re_map_foreign_keys(data['zerver_realmemoji'], 'author', related_table="user_profile")
|
||||||
|
for (table, model, related_table) in realm_tables:
|
||||||
re_map_foreign_keys(data[table], 'realm', related_table="realm")
|
re_map_foreign_keys(data[table], 'realm', related_table="realm")
|
||||||
|
old_id_list = current_table_ids(data, table)
|
||||||
|
allocated_id_list = allocate_ids(model, len(data[table]))
|
||||||
|
for item in range(len(data[table])):
|
||||||
|
update_id_map(related_table, old_id_list[item], allocated_id_list[item])
|
||||||
|
re_map_foreign_keys(data[table], 'id', related_table=related_table, id_field=True)
|
||||||
bulk_import_model(data, model, table)
|
bulk_import_model(data, model, table)
|
||||||
|
|
||||||
# Remap the user IDs for notification_bot and friends to their
|
# Remap the user IDs for notification_bot and friends to their
|
||||||
|
@ -1582,15 +1598,35 @@ def do_import_realm(import_dir: Path) -> Realm:
|
||||||
fix_datetime_fields(data, 'zerver_userpresence')
|
fix_datetime_fields(data, 'zerver_userpresence')
|
||||||
re_map_foreign_keys(data['zerver_userpresence'], 'user_profile', related_table="user_profile")
|
re_map_foreign_keys(data['zerver_userpresence'], 'user_profile', related_table="user_profile")
|
||||||
re_map_foreign_keys(data['zerver_userpresence'], 'client', related_table='client')
|
re_map_foreign_keys(data['zerver_userpresence'], 'client', related_table='client')
|
||||||
|
userpresence_id_list = current_table_ids(data, 'zerver_userpresence')
|
||||||
|
allocated_userpresence_id_list = allocate_ids(UserPresence, len(data['zerver_userpresence']))
|
||||||
|
for item in range(len(data['zerver_userpresence'])):
|
||||||
|
update_id_map('user_presence', userpresence_id_list[item],
|
||||||
|
allocated_userpresence_id_list[item])
|
||||||
|
re_map_foreign_keys(data['zerver_userpresence'], 'id', related_table="user_presence", id_field=True)
|
||||||
bulk_import_model(data, UserPresence, 'zerver_userpresence')
|
bulk_import_model(data, UserPresence, 'zerver_userpresence')
|
||||||
|
|
||||||
fix_datetime_fields(data, 'zerver_useractivity')
|
fix_datetime_fields(data, 'zerver_useractivity')
|
||||||
re_map_foreign_keys(data['zerver_useractivity'], 'user_profile', related_table="user_profile")
|
re_map_foreign_keys(data['zerver_useractivity'], 'user_profile', related_table="user_profile")
|
||||||
re_map_foreign_keys(data['zerver_useractivity'], 'client', related_table='client')
|
re_map_foreign_keys(data['zerver_useractivity'], 'client', related_table='client')
|
||||||
|
useractivity_id_list = current_table_ids(data, 'zerver_useractivity')
|
||||||
|
allocated_useractivity_id_list = allocate_ids(UserActivity, len(data['zerver_useractivity']))
|
||||||
|
for item in range(len(data['zerver_useractivity'])):
|
||||||
|
update_id_map('useractivity', useractivity_id_list[item],
|
||||||
|
allocated_useractivity_id_list[item])
|
||||||
|
re_map_foreign_keys(data['zerver_useractivity'], 'id', related_table="useractivity", id_field=True)
|
||||||
bulk_import_model(data, UserActivity, 'zerver_useractivity')
|
bulk_import_model(data, UserActivity, 'zerver_useractivity')
|
||||||
|
|
||||||
fix_datetime_fields(data, 'zerver_useractivityinterval')
|
fix_datetime_fields(data, 'zerver_useractivityinterval')
|
||||||
re_map_foreign_keys(data['zerver_useractivityinterval'], 'user_profile', related_table="user_profile")
|
re_map_foreign_keys(data['zerver_useractivityinterval'], 'user_profile', related_table="user_profile")
|
||||||
|
useractivityinterval_id_list = current_table_ids(data, 'zerver_useractivityinterval')
|
||||||
|
allocated_useractivityinterval_id_list = allocate_ids(UserActivityInterval,
|
||||||
|
len(data['zerver_useractivityinterval']))
|
||||||
|
for item in range(len(data['zerver_useractivityinterval'])):
|
||||||
|
update_id_map('useractivityinterval', useractivityinterval_id_list[item],
|
||||||
|
allocated_useractivityinterval_id_list[item])
|
||||||
|
re_map_foreign_keys(data['zerver_useractivityinterval'], 'id', related_table="useractivityinterval",
|
||||||
|
id_field=True)
|
||||||
bulk_import_model(data, UserActivityInterval, 'zerver_useractivityinterval')
|
bulk_import_model(data, UserActivityInterval, 'zerver_useractivityinterval')
|
||||||
|
|
||||||
# Import uploaded files and avatars
|
# Import uploaded files and avatars
|
||||||
|
@ -1661,6 +1697,13 @@ def import_message_data(import_dir: Path) -> None:
|
||||||
re_map_foreign_keys(data['zerver_usermessage'], 'message', related_table="message")
|
re_map_foreign_keys(data['zerver_usermessage'], 'message', related_table="message")
|
||||||
re_map_foreign_keys(data['zerver_usermessage'], 'user_profile', related_table="user_profile")
|
re_map_foreign_keys(data['zerver_usermessage'], 'user_profile', related_table="user_profile")
|
||||||
fix_bitfield_keys(data, 'zerver_usermessage', 'flags')
|
fix_bitfield_keys(data, 'zerver_usermessage', 'flags')
|
||||||
|
usermessage_id_list = current_table_ids(data, 'zerver_usermessage')
|
||||||
|
allocated_usermessage_id_list = allocate_ids(UserMessage, len(data['zerver_usermessage']))
|
||||||
|
for item in range(len(data['zerver_usermessage'])):
|
||||||
|
update_id_map('usermessage', usermessage_id_list[item],
|
||||||
|
allocated_usermessage_id_list[item])
|
||||||
|
re_map_foreign_keys(data['zerver_usermessage'], 'id', related_table="usermessage",
|
||||||
|
id_field=True)
|
||||||
bulk_import_model(data, UserMessage, 'zerver_usermessage')
|
bulk_import_model(data, UserMessage, 'zerver_usermessage')
|
||||||
|
|
||||||
dump_file_id += 1
|
dump_file_id += 1
|
||||||
|
|
Loading…
Reference in New Issue