"""Setup of rounds Categories are configured in session config like: ```primary = ['male', 'female'], secondary = ['work', 'family']``` Numbers in block config corresponds to 1st and 2nd element of corresponding pair """ import copy import random def get_block(random_num): if random_num == 0: primary_a = 1 primary_b = 2 secondary_a = 1 secondary_b = 2 elif random_num == 1: primary_a = 1 primary_b = 2 secondary_a = 2 secondary_b = 1 elif random_num == 2: primary_a = 2 primary_b = 1 secondary_a = 1 secondary_b = 2 else: primary_a = 2 primary_b = 1 secondary_a = 2 secondary_b = 1 # classic setup # primary category switches, secondary stays in place block = { # e.g: male vs female 1: { 'title': "第一回合", 'practice': True, 'left': {'primary': primary_a}, 'right': {'primary': primary_b}, }, # e.g: work vs family 2: { 'title': "第二回合", 'practice': True, 'left': {'secondary': secondary_a}, 'right': {'secondary': secondary_b}, }, # e.g: male+work vs female+family 3: { 'title': "第三回合", 'practice': False, 'left': {'primary': primary_a, 'secondary': secondary_a}, 'right': {'primary': primary_b, 'secondary': secondary_b}, }, 4: { 'title': "第四回合", 'practice': False, 'left': {'primary': primary_a, 'secondary': secondary_a}, 'right': {'primary': primary_b, 'secondary': secondary_b}, }, # e.g: female vs male 5: { 'title': "第五回合", 'practice': True, 'left': {'primary': primary_b}, 'right': {'primary': primary_a}, }, # e.g: female+work vs male+family 6: { 'title': "第六回合", 'practice': False, 'left': {'primary': primary_b, 'secondary': secondary_a}, 'right': {'primary': primary_a, 'secondary': secondary_b}, }, 7: { 'title': "第七回合", 'practice': False, 'left': {'primary': primary_b, 'secondary': secondary_a}, 'right': {'primary': primary_a, 'secondary': secondary_b}, }, } return block def configure(block, config): """Insert categories' names from config into block setup block: {'left': {'primary': 1, 'secondary': 1}, 'right': {'primary': 2, 'secondary': 2}} config: {'primary': ['male', 'female'], 'secondary': ['work', 'family']} result: {'left': {'primary': 'male', 'secondary': 'work'}, 'right': {'primary': 'female', 'secondary': 'family'}} """ result = copy.deepcopy(block) for side in ['left', 'right']: for cls, idx in block[side].items(): result[side][cls] = config[cls][idx - 1] return result