summaryrefslogtreecommitdiff
path: root/kpov_judge/add_task.py
diff options
context:
space:
mode:
Diffstat (limited to 'kpov_judge/add_task.py')
-rwxr-xr-xkpov_judge/add_task.py52
1 files changed, 37 insertions, 15 deletions
diff --git a/kpov_judge/add_task.py b/kpov_judge/add_task.py
index f95f44d..6bb3a2c 100755
--- a/kpov_judge/add_task.py
+++ b/kpov_judge/add_task.py
@@ -38,9 +38,12 @@ if __name__ == '__main__':
dirname = sys.argv[1]
fname = os.path.join(dirname, 'task.py')
try:
- task_id = sys.argv[2]
+ class_id, task_id = sys.argv[2].split('/')
except:
- task_id = os.path.basename(os.path.normpath(dirname))
+ normpath = os.path.normpath(dirname)
+ class_id = os.path.split(os.path.dirname(normpath))[-1]
+ task_id = os.path.basename(normpath)
+ print(class_id, task_id)
db = pymongo.MongoClient(settings.DB_HOST).kpov
try:
db.authenticate(settings.USERNAME, settings.PASSWORD)
@@ -65,38 +68,57 @@ if __name__ == '__main__':
gen_params_source = inspect.getsource(gen_params)
prepare_disks_source = inspect.getsource(prepare_disks)
x = params_meta.keys() # check for existence
- db.computers_meta.remove({'task_id': task_id})
+ db.computers_meta.remove({'task_id': task_id, 'class_id': class_id})
auto_networks = set([None])
for k, v in computers.iteritems():
for n in v.get('networks_interfaces', []):
auto_networks.add(n.get('network', None))
- db.computers_meta.update({'task_id': task_id, 'name': k}, {'$set': v}, upsert=True)
+ db.computers_meta.update({
+ 'task_id': task_id,
+ 'class_id': class_id,
+ 'name': k
+ }, {'$set': v}, upsert=True)
auto_networks.remove(None)
- db.networks.remove({'task_id': task_id})
+ db.networks.remove({'task_id': task_id, 'class_id': class_id})
try:
net_list = networks.iteritems()
except:
net_list = [(k, {'public': False}) for k in auto_networks]
for k, v in net_list:
- db.networks.update({'task_id': task_id, 'name': k}, {'$set': v}, upsert=True)
- db.task_checkers.update({'task_id': task_id}, {'$set': {'source': task_check_source}}, upsert=True)
- db.tasks.update({'task_id': task_id},{'$set': {'source': task_source}}, upsert=True)
- db.prepare_disks.update({'task_id': task_id}, {'$set': {'source': prepare_disks_source}}, upsert=True)
- db.gen_params.update({'task_id': task_id}, {'$set': {'source': gen_params_source}}, upsert=True)
- db.task_params_meta.update({'task_id': task_id}, {'$set': {'params': params_meta}}, upsert=True)
+ db.networks.update({'task_id': task_id, 'class_id': class_id, 'name': k}, {'$set': v}, upsert=True)
+ db.task_checkers.update({
+ 'task_id': task_id, 'class_id': class_id
+ }, {'$set': {'source': task_check_source}}, upsert=True)
+ db.tasks.update({
+ 'task_id': task_id, 'class_id': class_id
+ },{'$set': {'source': task_source}}, upsert=True)
+ db.prepare_disks.update({
+ 'task_id': task_id, 'class_id': class_id
+ }, {'$set': {'source': prepare_disks_source}}, upsert=True)
+ db.gen_params.update({'task_id': task_id, 'class_id': class_id},
+ {'$set': {'source': gen_params_source}}, upsert=True)
+ db.task_params_meta.update({'task_id': task_id, 'class_id': class_id},
+ {'$set': {'params': params_meta}}, upsert=True)
#instructions = dict([(k, v.encode('utf8')) for k, v in instructions.iteritems()])
#print instructions
- db.task_instructions.update({'task_id': task_id}, {'$set': instructions
- }, upsert=True)
+ db.task_instructions.update({'task_id': task_id, 'class_id': class_id},
+ {'$set': instructions}, upsert=True)
for howto_dir in glob.glob(os.path.join(dirname, 'howtos/*')):
howto_lang = os.path.basename(os.path.normpath(howto_dir))
if howto_lang not in {'images'}:
with open(os.path.join(howto_dir, 'index.html')) as f:
- db.howtos.update({'task_id': task_id, 'lang': howto_lang},
+ db.howtos.update({
+ 'task_id': task_id,
+ 'class_id': class_id,
+ 'lang': howto_lang},
{'$set': {'text': f.read()}}, upsert=True)
else:
for img in glob.glob(os.path.join(howto_dir, '*')):
fname = os.path.basename(img)
with open(img) as f:
- db.howto_images.update({'task_id': task_id, 'fname': fname},
+ db.howto_images.update({
+ 'task_id': task_id,
+ 'class_id': class_id,
+ 'fname': fname,
+ },
{'$set': {'data': Binary(f.read())}}, upsert=True)