def convert_to_valid_dict(model_dict: Dict[str, Any]) -> Dict[str, Any]: """Replace invalid fields and values in the ExplorationRightsModel dict. Some old ExplorationRightsSnapshotContentModels can contain fields and field values that are no longer supported and would cause an exception when we try to reconstitute a ExplorationRightsModel from them. We need to remove or replace these fields and values. Args: model_dict: dict. The content of the model. Some fields and field values might no longer exist in the ExplorationRightsModel schema. Returns: dict. The content of the model. Only valid fields and values are present. """ # The status field could historically take the value 'publicized', this # value is now equivalent to 'public'. if model_dict['status'] == 'publicized': model_dict['status'] = constants.ACTIVITY_STATUS_PUBLIC # The voice_artist_ids field was previously named translator_ids. We # need to move the values from translator_ids field to voice_artist_ids # and delete translator_ids. if 'translator_ids' in model_dict and model_dict['translator_ids']: model_dict['voice_artist_ids'] = model_dict['translator_ids'] model_dict['translator_ids'] = [] # The all_viewer_ids field was previously used in some versions of the # model, we need to remove it. if 'all_viewer_ids' in model_dict: del model_dict['all_viewer_ids'] if 'translator_ids' in model_dict: del model_dict['translator_ids'] # We need to remove pseudonymous IDs from all the fields that contain # user IDs. for field_name in ('owner_ids', 'editor_ids', 'voice_artist_ids', 'viewer_ids'): model_dict[field_name] = [ user_id for user_id in model_dict[field_name] if not utils.is_pseudonymous_id(user_id) ] return model_dict
def test_is_pseudonymous_id(self) -> None: self.assertTrue(utils.is_pseudonymous_id('pid_' + 'a' * 32)) self.assertFalse(utils.is_pseudonymous_id('uid_' + 'a' * 32)) self.assertFalse(utils.is_pseudonymous_id('uid_' + 'a' * 31 + 'A')) self.assertFalse(utils.is_pseudonymous_id('uid_' + 'a' * 31)) self.assertFalse(utils.is_pseudonymous_id('a' * 36))