Example #1
0
def get_night_blocks(level):
    """ Helper method parsing blocks into a dictionary format 'sendable' to javascript. """
    coreBlockTypes = ['move_forwards', 'turn_left', 'turn_right', 'turn_around', 'controls_repeat',
                      'controls_repeat_until', 'controls_if', 'at_destination', 'road_exists', 'dead_end']
    coreNightBlocks = Block.objects.filter(type__in=coreBlockTypes)
    coreNightLevelBlocks = map(lambda block: LevelBlock(level=level, type=block), coreNightBlocks)
    existingLevelBlocks = LevelBlock.objects.filter(level=level)
    remainingBlocks = existingLevelBlocks.exclude(type__type__in=coreBlockTypes).order_by('type')
    levelBlocks = sorted(list(chain(coreNightLevelBlocks, remainingBlocks)), key=lambda levelBlock: levelBlock.type.id)

    return [{'type': lb.type.type, 'number': lb.number} for lb in levelBlocks]
Example #2
0
def set_blocks_inner(level, blocks, LevelBlock, Block):
    """ Helper method creating LevelBlock objects given a list of blocks in dictionary form."""
    LevelBlock.objects.filter(level=level).delete()

    level_blocks = []
    dictionary = blocks_dictionary(blocks, Block)

    for data in blocks:
        level_blocks.append(
            LevelBlock(level_id=level.id,
                       type=dictionary[data['type']],
                       number=data['number'] if 'number' in data else None))
    LevelBlock.objects.bulk_create(level_blocks)