mirror of
https://github.com/zulip/zulip.git
synced 2025-11-21 15:09:34 +00:00
realm import: Convert the authentication_methods from list to bitfield.
This properly reflects how this is stored in the DB. Tweaked by tabbott to use a proper function.
This commit is contained in:
@@ -1294,6 +1294,15 @@ def fix_bitfield_keys(data, table, field_name):
|
|||||||
item[field_name] = item[field_name + '_mask']
|
item[field_name] = item[field_name + '_mask']
|
||||||
del item[field_name + '_mask']
|
del item[field_name + '_mask']
|
||||||
|
|
||||||
|
def fix_realm_authentication_bitfield(data, table, field_name):
|
||||||
|
# type: (TableData, TableName, Field) -> None
|
||||||
|
"""Used to fixup the authentication_methods bitfield to be a string"""
|
||||||
|
for item in data[table]:
|
||||||
|
values_as_bitstring = ''.join(['1' if field[1] else '0' for field in
|
||||||
|
item[field_name]])
|
||||||
|
values_as_int = int(values_as_bitstring, 2)
|
||||||
|
item[field_name] = values_as_int
|
||||||
|
|
||||||
def bulk_import_model(data, model, table, dump_file_id=None):
|
def bulk_import_model(data, model, table, dump_file_id=None):
|
||||||
# type: (TableData, Any, TableName, str) -> None
|
# type: (TableData, Any, TableName, str) -> None
|
||||||
# TODO, deprecate dump_file_id
|
# TODO, deprecate dump_file_id
|
||||||
@@ -1425,6 +1434,7 @@ def do_import_realm(import_dir):
|
|||||||
|
|
||||||
convert_to_id_fields(data, 'zerver_realm', 'notifications_stream')
|
convert_to_id_fields(data, 'zerver_realm', 'notifications_stream')
|
||||||
fix_datetime_fields(data, 'zerver_realm')
|
fix_datetime_fields(data, 'zerver_realm')
|
||||||
|
fix_realm_authentication_bitfield(data, 'zerver_realm', 'authentication_methods')
|
||||||
realm = Realm(**data['zerver_realm'][0])
|
realm = Realm(**data['zerver_realm'][0])
|
||||||
if realm.notifications_stream_id is not None:
|
if realm.notifications_stream_id is not None:
|
||||||
notifications_stream_id = int(realm.notifications_stream_id) # type: Optional[int]
|
notifications_stream_id = int(realm.notifications_stream_id) # type: Optional[int]
|
||||||
|
|||||||
Reference in New Issue
Block a user