def new(request): exp = Experiment() user = request.user userprofile = UserProfile.objects.get(user=user) # query the database for all applications return render_to_response('experiment/new_exp_form.html', {'userprofile': userprofile}, context_instance=RequestContext(request))
def login(): form = SignupForm() if request.method == 'GET': return render_template('login.html', form=form) elif request.method == 'POST': if form.validate_on_submit(): experiment = Experiment(form.pseudonim.data, form.sex.data == "woman", form.wiek.data) db_session.add(experiment) db_session.commit() return redirect("experiment/{}".format(experiment.id)) else: return "form not validated" else: return "Wrong request"
def init_db(): if True: meta = MetaData(engine) meta.reflect() meta.drop_all() # import all modules here that might define models so that # they will be registered properly on the metadata. Otherwise # you will have to import them first before calling init_db() import experiment.models Base.metadata.create_all(bind=engine) from experiment.models import Experiment from experiment.models import Config config = Config(True, 0, 10, 3) e = Experiment(config) db_session.add(e) db_session.commit()
def create_experiment(request): # define default response response = {"err": "", "data": ""} #initialize a counter for apps i = 0 j = 0 #initialize filename filenames = {} filedirs = {} if request.POST: period = request.POST['duration'] unit = request.POST['dur_unit'] if unit == 'W': period = int(period) * 7 elif unit == 'M': period = int(period) * 30 # Save Experiment exp = Experiment( name=request.POST['expname'], description=request.POST['expdesc'], tag=request.POST['exptag'], period=period, ) exp.save() #upload IRB Letter file_type = request.FILES['irbletter'].content_type.split('/')[1] #save IRB Letter irbname = os.path.join(RAW_IRB_ROOT, str(exp.irb) + '.' + file_type) irbdir = os.path.dirname(irbname) try: os.mkdir(irbdir) except OSError, e: if e.errno != errno.EEXIST: response['err'] = { 'no': 'err1', 'msg': 'cannot create dir, failed upload' } raise # get file handle fileHandle = open(irbname, 'wb+') for chunk in request.FILES['irbletter'].chunks(): # write it out fileHandle.write(chunk) # close file handle fileHandle.close() response['data'] = "done" #add user to the experiment exp.user.add(request.user) devs = Device.objects.all() appnames = request.POST.getlist('appname') appdescs = request.POST.getlist('appdesc') apptypes = request.POST.getlist('apptype') #add the devices to the experiment for dev in devs: exp.dev.add(dev) #add the apps to the experiment for app in appnames: application = Application( user=request.user, name=app, #package_name = params['package_name'], #intent_name = params['intent_name'], description=appdescs[i], type=apptypes[i], active="E") #version = params["version"], application.save() exp.app.add(application) i = i + 1 #create dirs for Applications filename = os.path.join(RAW_APP_ROOT, str(application.id) + ".apk") filedir = os.path.dirname(filename) filenames[app] = filename filedirs[app] = filedir exp.save() exp_profile = ExperimentProfile(experiment=exp) exp_profile.starttime = datetime.now() exp_profile.endtime = datetime.now() exp_profile.save() #upload experiment for afile in request.FILES.getlist('upload'): # create folder for user if it doesn`t exist try: os.mkdir(filedirs[appnames[j]]) except OSError, e: if e.errno != errno.EEXIST: response['err'] = { 'no': 'err1', 'msg': 'cannot create dir, failed upload' } raise # get file handle fileHandle = open(filenames[appnames[j]], 'wb+') # write it out for chunk in afile.chunks(): fileHandle.write(chunk) # close file handle fileHandle.close() j = j + 1 response['data'] = "done"