def hit(): if request.vars.testing: request.task = request.vars.task load_hit() if not request.testing: if is_preview(): response.view = "preview.html" log_action("preview") log("Preview %s!" % request.task) return {} if ( db( (db.actions.workerid == request.workerid) & (db.actions.study == request.study) & (db.actions.action == "finished") ).count() > work_limit ): response.view = "done.html" log_action("work quota reached") log("Too many for %s" % request.workerid) try: turk.expire_hit(request.hitid) except TurkAPIError as e: logger.error(str(e.value)) return {} if "/" in request.task: request.task_controller, request.task_function = request.task.split("/") else: request.task_controller = "hits" request.task_function = request.task response.view = "%s/%s.%s" % (request.task_controller, request.task_function, request.extension) if not os.path.exists(request.folder + "/views/" + response.view): response.view = "generic.html" if request.task_controller == "hits": result = globals()[request.task_function]() else: from gluon.shell import exec_environment # from gluon.compileapp import run_models_in controller = exec_environment( "%s/controllers/%s.py" % (request.folder, request.task_controller), request=request, response=response, session=session, ) # run_models_in(controller) controller.is_preview = is_preview result = controller[request.task_function]() return result
def hit(): if request.vars.testing: request.task = request.vars.task load_hit() if not request.testing: if is_preview(): response.view = 'preview.html' log_action('preview') log('Preview %s!' % request.task) return {} if db((db.actions.workerid == request.workerid) & (db.actions.study == request.study) & (db.actions.action == 'finished')).count() > work_limit: response.view = 'done.html' log_action('work quota reached') log('Too many for %s' % request.workerid) try: turk.expire_hit(request.hitid) except TurkAPIError as e: logger.error(str(e.value)) return {} if '/' in request.task: request.task_controller, request.task_function = request.task.split('/') else: request.task_controller = 'hits' request.task_function = request.task response.view = '%s/%s.%s' % (request.task_controller, request.task_function, request.extension) if not os.path.exists(request.folder + '/views/' + response.view): response.view = 'generic.html' if request.task_controller == 'hits': result = globals()[request.task_function]() else: from gluon.shell import exec_environment #from gluon.compileapp import run_models_in controller = exec_environment('%s/controllers/%s.py' % (request.folder, request.task_controller), request=request, response=response, session=session) #run_models_in(controller) controller.is_preview = is_preview result = controller[request.task_function]() return result
def setUp(self): self.env, self.db = setup('init', 'default', db_name='db', db_link='sqlite:memory:') self.request = Request() self.session = Session() self.controller = exec_environment('applications/projs/controllers/registro.py', request=self.request) self.controller.response.view = 'unittest.html' self.session.funcionario = { "CPF": "1330675755", "ID_FUNCIONARIO": 11414, "ID_PESSOA": 33694, "ID_USUARIO": 21771 }
#from gluon import * import datetime import time from decimal import Decimal # тут преимущественно все в Decimal import shops_lib from common import rnd_8 import db_common import rates_lib import crypto_client from gluon.shell import exec_environment try: import applications.test.modules.common TEST_SHOP_ID = applications.test.modules.common.SHOP_ID test_DB = exec_environment('applications/test/models/db.py') except: try: import applications.test_shop.modules.common TEST_SHOP_ID = applications.test_shop.modules.common.SHOP_ID test_DB = exec_environment('applications/test_shop/models/db.py') except: TEST_SHOP_ID = test_DB = None def log(db, l2, mess='>'): m = 'orders_lib' print m, l2, mess db.logs.insert(label123456789=m, label1234567890=l2, mess='%s' % mess)
def invokeBuild(mode, buildId, main, userId, language='Python', project=None, course=None): env = exec_environment('applications/PythonCheck/models/db.py') config = exec_environment('applications/PythonCheck/models/config.py') if config.RATE_LIMIT_ENABLED and rate_limit_exeeded(env, userId=userId, maxConcurrentBuilds=1): raise StandardError('Rate Limit Exeeded!') # import the build system buildModulePath = config.APPLICATION_PATH + '/modules/build/' build = imp.load_source('buildsystem.module', buildModulePath + language.lower() + '.py') ass = '' extendedBuildArgs = '' if env.EXERCISE_CONTAINS_SINGLE_FILE: main = env.EXERCISE_MAIN_FILE # check if we are developing for an exercise or just so if (project != None) & (course != None) & (mode=='submit'): # check if exercise exists enrollment = env.db((env.db.enrollment.student==userId) & (env.db.enrollment.course==course)).select().first() if not(enrollment): raise StandardError('Exercise does not exist') # check if the date is valid course_exercise = env.db((env.db.course_exercise.exercise == project) & (env.db.course_exercise.course == course)).select().first() if (course_exercise.start_date > datetime.now()) or (course_exercise.end_date < datetime.now()): raise StandardError('Start or Enddate dont match') # check if the exercise was graded before if len(env.db((env.db.grading.enrollment==enrollment.id) & (env.db.grading.exercise==course_exercise.id)).select()) != 0: raise StandardError('Exercise was graded before') pointCode = [] for pointSet in env.db((env.db.points.exercise == project)).select(): assertionCode = [] for assertion in env.db((env.db.assertion.points == pointSet.id)).select(): assertionCode.append(build.buildAssertion(function_name=assertion.function_name, arguments=assertion.arguments, expected_result=assertion.expected_result)) #print buildAssertion(function_name=assertion.function_name, arguments=assertion.arguments, expected_result=assertion.expected_result) pointCode.append(build.buildPointSet(id=pointSet.id, assertions=assertionCode)) ass = build.buildTests(pointCode) extendedBuildArgs += str(course) + ' ' + str(project) + ' ' + str(userId) else: mode='run' filePath=config.SRC_DIR + buildId[:config.BUILD_ID_SHORT_LENGTH] # ensure that the dirs are there if not os.path.exists(filePath): os.makedirs(filePath) fileQuery = (env.db.files.project == project) & (env.db.files.course == course) for codeFile in env.db(fileQuery).select(): # write src code into file file=None if codeFile.filename == main: file = open(filePath + build.mainFile(), 'w') codeFile.content = (codeFile.content or '') + '\r\n' + ass else: file = open(filePath + '/' + codeFile.filename, 'w') file.write(codeFile.content or '') file.close() # lock files if mode == 'submit': env.db(fileQuery).update(writeable=False) buildArgs = buildId + ' ' + filePath + ' ' + buildModulePath + ' ' + language.lower() + ' ' + mode + ' ' + extendedBuildArgs # write into database before creating the jail env.db.current_builds.insert(PID=None, BuildId=buildId, start_time=datetime.today(), user=userId) env.db.commit() p = subprocess.Popen(['python', config.WEB2PY_BIN, '-S', 'PythonCheck', '-M', '-R', config.BUILD_SCRIPT, '-A', buildArgs])