Esempio n. 1
0
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))
Esempio n. 2
0
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"
Esempio n. 3
0
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()
Esempio n. 4
0
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"