From 3bb4942284171043e9336ede0fd85eac76b274d1 Mon Sep 17 00:00:00 2001 From: "gasperfele@fri1.uni-lj.si" Date: Tue, 13 Jan 2015 22:23:54 +0000 Subject: Fixed add_task, started work on create_disk_image git-svn-id: https://svn.lusy.fri.uni-lj.si/kpov-public-svn/kpov-public@182 5cf9fbd1-b2bc-434c-b4b7-e852f4f63414 --- kpov_judge/add_task.py | 48 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 14 deletions(-) (limited to 'kpov_judge/add_task.py') diff --git a/kpov_judge/add_task.py b/kpov_judge/add_task.py index ec65fd0..ea7aec6 100755 --- a/kpov_judge/add_task.py +++ b/kpov_judge/add_task.py @@ -3,14 +3,16 @@ import pymongo from bson.son import SON +from bson import Binary import sys import inspect import kpov_random_helpers import settings import guestfs import glob +import os -def uploading_task_check(results, params): +def task_check(results, params): data = urllib.urlencode({ 'results': json.dumps(results), 'params': json.dumps(params) @@ -19,20 +21,24 @@ def uploading_task_check(results, params): response = urllib2.urlopen(req) return response.read() -uploading_task_check_source = inspect.get_source(uploading_task_check) +uploading_task_check_source = inspect.getsource(task_check) -def dummy_gen_params(user_id, meta): +def gen_params(user_id, meta): return dict() -dummy_gen_params_source = inspect.get_source(dummy_gen_params) +dummy_gen_params_source = inspect.getsource(gen_params) if __name__ == '__main__': - if len(sys.argv) != 3: - print "Usage: {0} task_name task_source.py" - print "The task_source should contain two functions - task(param1, param2, ...) and task_check(res, params)" - task_id = sys.argv[1] - fname = sys.argv[2] + if len(sys.argv) < 2: + print u"Usage: {0} [task_name]".format(sys.argv[0]) + exit(1) + dirname = sys.argv[1] + fname = os.path.join(dirname, 'task.py') + try: + task_id = sys.argv[2] + except: + task_id = os.path.basename(os.path.normpath(dirname)) db = pymongo.Connection(settings.DB_HOST).kpov try: db.authenticate(settings.USERNAME, settings.PASSWORD) @@ -45,12 +51,14 @@ if __name__ == '__main__': # task, task_check, gen_params, prepare_disks, computers, params_meta. exec(code) public_meta = dict() - for k, v in params_meta: + for k, v in params_meta.iteritems(): if v.get('public', False): public_meta[k] = v - task_source = inspect.getsource(task) + "\n\n" + - uploading_task_check_source + "\n\n" + - "params_meta = " + str(public_meta) + "\n\n" + dummy_gen_params_source + task_source = "\n\n".join([ + inspect.getsource(task), + uploading_task_check_source, + "params_meta = {}".format(public_meta), + dummy_gen_params_source]) task_check_source = inspect.getsource(task_check) gen_params_source = inspect.getsource(gen_params) prepare_disks_source = inspect.getsource(prepare_disks) @@ -74,4 +82,16 @@ if __name__ == '__main__': 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.task_instructions.update({'task_id': task_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}, + {'$set': {'text': f.read()}}) + else: + for img in glob.glob(os.path.join(howto_dir, '*')): + with open(img) as f: + db.howto_images.update({'task_id': task_id, 'fname': fname}, + {'$set': {'data': Binary(f.read())}}) -- cgit v1.2.1