-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcompile_configs.py
More file actions
69 lines (63 loc) · 3.04 KB
/
compile_configs.py
File metadata and controls
69 lines (63 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import yaml
import glob
from django.db.models import ObjectDoesNotExist
from api import models
def get_status(status):
return 'A' if status == 'active' else 'I'
SEEN_MODULES = []
SEEN_GAMES = []
for file in glob.glob('./api/game_configurations/*.yaml'):
with open(file, 'r') as f:
module_config = yaml.load(f.read(), Loader=yaml.FullLoader)
SEEN_MODULES.append(module_config['external_id'])
for game_config in module_config['games']:
SEEN_GAMES.append(game_config['external_id'])
models.GameLevelModel.objects.exclude(external_id__in=SEEN_GAMES).delete()
models.GameModuleModel.objects.exclude(external_id__in=SEEN_MODULES).delete()
for file in glob.glob('./api/game_configurations/*.yaml'):
print(f'Compiling file: {file}')
with open(file, 'r') as f:
module_config = yaml.load(f.read(), Loader=yaml.FullLoader)
try:
module = models.GameModuleModel.objects.get(external_id=module_config['external_id'])
module.title = module_config['title']
module.description = module_config['description']
module.status = get_status(module_config['status'])
module.module_number = module_config['module_number']
module.save()
except ObjectDoesNotExist:
module = models.GameModuleModel.objects.create(
external_id=module_config['external_id'],
title=module_config['title'],
description=module_config['description'],
status=get_status(module_config['status']),
module_number=module_config['module_number']
)
for game_config in module_config['games']:
games = module.games.filter(external_id=game_config['external_id'])
if not games:
models.GameLevelModel.objects.create(
external_id=game_config['external_id'],
title=game_config['title'],
description=game_config['description'],
status=get_status(game_config['status']),
module=module,
level_number=game_config['level_number'],
prompt=game_config['prompt'],
blocks=', '.join(game_config['blocks']),
inputs=game_config['inputs'],
num_inputs=game_config['num_inputs'],
list_input_size=game_config.get('list_input_size',0)
)
else:
game = games[0]
game.title = game_config['title']
game.description = game_config['description']
game.status = get_status(game_config['status'])
game.level_number = game_config['level_number']
game.prompt = game_config['prompt']
game.blocks = ', '.join(game_config['blocks'])
game.inputs = game_config['inputs']
game.num_inputs = game_config['num_inputs']
game.list_input_size = game_config.get('list_input_size',0)
game.save()