Esempio n. 1
0
def edit_experiment(id):
    """
    Edit a experiment
    """

    add_experiment = False

    experiment = Experiment.query.filter_by(id=id).first()
    form = ExperimentForm(obj=experiment)
    if form.validate_on_submit():
        experiment.name = form.name.data
        experiment.description = form.description.data
        experiment.content = form.content.data
        experiment.courseNums = form.courseNums.data.courseNums
        # type(form.courseNums.data) is app.models.course
        experiment.containerName = form.containerName.data# .name
        # type(form.containerName.data) is unicode
        db.session.commit()
        flash(u'实验修改成功')

        # redirect to the experiments page
        return redirect(url_for('admin.list_experiments'))

    experiment.name = form.name.data
    experiment.description = form.description.data
    experiment.content = form.content.data
    experiment.courseNums = form.courseNums.data# .courseNums
    experiment.containerName = form.containerName.data
    return render_template('admin/experiments/experiment.html', add_experiment=add_experiment,
                           form=form, title="Edit experiment")
Esempio n. 2
0
def add_experiment():
    """
    Add a experiment
    """

    add_experiment = True

    form = ExperimentForm()
    if form.validate_on_submit():
        experiment = Experiment(name=form.name.data,description=form.description.data,
                    content=form.content.data,courseNums=form.courseNums.data.courseNums,
                    containerName=form.containerName.data, teacherName=current_user.name)  # .name)
        try:
            db.session.add(experiment)
            db.session.commit()
            flash(u'实验创建完成')
        except:
            flash(u'实验创建失败')
            return redirect(url_for('admin.add_experiment'))
            

        # redirect to the experiments page
        return redirect(url_for('admin.list_experiments'))

    return render_template('admin/experiments/experiment.html', add_experiment=add_experiment,
                           form=form, title="Add experiment")
Esempio n. 3
0
def experiment():
    form = ExperimentForm()
    if request.method == "POST":
        if form.validate() == False:
            return render_template("experiment.html", form=form)
        else:
            title = form.title.data
            description = form.description.data
            etype = form.etype.data
            protocol = form.protocol.data
            duration = form.duration.data
            username = session['username']
            user = User.query.filter_by(username=username).first()
            exp = Experiment(uid=user.id,
                             title=title,
                             duration=duration,
                             protocol=protocol,
                             description=description)
            db.session.add(exp)
            db.session.flush()
            session['current_experiment'] = exp.eid
            db.session.commit()
            print(exp.eid)
            return redirect(url_for('node'))
    elif request.method == "GET":
        return render_template("experiment.html", form=form)
Esempio n. 4
0
def edit_experiment(request, pk):
    experiment = Experiment.objects.get(pk=pk)
    form = ExperimentForm(request.POST or None, instance=experiment)
    if request.method == "POST" and form.is_valid():
        if "cancel" in request.POST:
            return redirect("/lifespan/experiments/")
        with reversion.create_revision():
            form.save()
            reversion.set_user(request.user)
            comment = request.POST["comment"] or "Changed experiment"
            reversion.set_comment(comment)
            log(request, experiment, comment)
        return redirect("/lifespan/experiment/%s" % pk)
    ctx = {"experiment": experiment, "form": form}
    return render_to_response("lifespan/edit_experiment.html", ctx, context_instance=RequestContext(request))
Esempio n. 5
0
def edit_experiment(request, pk):
    experiment = Experiment.objects.get(pk=pk)
    form = ExperimentForm(request.POST or None, instance=experiment)
    if request.method == "POST" and form.is_valid():
        if "cancel" in request.POST:
            return redirect('/lifespan/experiments/')
        with reversion.create_revision():
            form.save()
            reversion.set_user(request.user)
            comment = request.POST['comment'] or "Changed experiment"
            reversion.set_comment(comment)
            log(request, experiment, comment)
        return redirect('/lifespan/experiment/%s' % pk)
    ctx = {'experiment': experiment, 'form': form}
    return render_to_response('lifespan/edit_experiment.html',
                              ctx,
                              context_instance=RequestContext(request))
Esempio n. 6
0
def add_experiment(request, pk):
    form = ExperimentForm(request.POST or None, pk=pk)  # A form bound to the POST data
    if request.method == "POST" and form.is_valid():  # All validation rules pass
        with reversion.create_revision():
            experiment = form.save(commit=False)
            # print("Experiment id: %s" % experiment.id)
            # print form
            form.save()
            if isinstance(request.user, AnonymousUser):
                request.user = User.objects.get(username="******")
            reversion.set_user(request.user)
            comment = "Added experiment."
            reversion.set_comment(comment)
            log(request, experiment, comment)
            msg = "Successfully added experiment."
            messages.add_message(request, messages.SUCCESS, ugettext(msg))
            return redirect("/lifespan/experiment/%s" % experiment.pk)
    return render_to_response("lifespan/add_experiment.html", {"form": form}, context_instance=RequestContext(request))
Esempio n. 7
0
def add_experiment(request, pk):
    form = ExperimentForm(request.POST or None,
                          pk=pk)  # A form bound to the POST data
    if request.method == "POST" and form.is_valid(
    ):  # All validation rules pass
        with reversion.create_revision():
            experiment = form.save(commit=False)
            #print("Experiment id: %s" % experiment.id)
            #print form
            form.save()
            if isinstance(request.user, AnonymousUser):
                request.user = User.objects.get(username="******")
            reversion.set_user(request.user)
            comment = "Added experiment."
            reversion.set_comment(comment)
            log(request, experiment, comment)
            msg = "Successfully added experiment."
            messages.add_message(request, messages.SUCCESS, ugettext(msg))
            return redirect('/lifespan/experiment/%s' % experiment.pk)
    return render_to_response('lifespan/add_experiment.html', {'form': form},
                              context_instance=RequestContext(request))
Esempio n. 8
0
File: views.py Progetto: 18dubu/MMS
def new_exp(request, experiment_id=None):
    def generate_sample_name(sample):

        """
                naming standard:
                CellLine.Library.TreatmentIfAny.shON/shOFF.time.A/B/C
                Example: A549.K1_2.EZH2_150nM.shON.T21.A
                """
        sample_name = ".".join([sample.cell_model.CCLE_name, sample.shRNA_library.LibName])

        # if sample.pool_number is not None:
        # 	pool_str = '_P'
        # 	tmp = ''
        # for p in sample.pool_number():
        # 	tmp += '_'+p.description
        # pool_str += tmp[1:]
        # else:
        # 	pool_str = '_PNone'

        # sample_name = sample_name + pool_str

        if sample.treatment and sample.treatment_dose:
            treatment = "_".join([sample.treatment.compoundName, str(sample.treatment_dose)])
            sample_name = ".".join([sample_name, treatment])
        shrna = "shON"
        if not sample.shRNA_on:
            shrna = "shOFF"
        sample_name = ".".join([sample_name, shrna, "".join(["T", str(sample.time_in_days)]), sample.replicate])

        if sample.other_tag:
            sample_name = sample_name + "." + sample.other_tag
        return sample_name

    if experiment_id:
        experiment = get_object_or_404(Experiment, experiment_id=experiment_id)
        expform = ExperimentForm(instance=experiment)
        samforms = SampleFormSet(instance=experiment)
        # if experiment.user != request.user:
    # 		return HttpResponseForbidden()
    else:
        experiment = Experiment()  # (user=request.user)

    if request.POST:
        if "create_exp" in request.POST or "add_sample" in request.POST:
            expform = ExperimentForm(request.POST, instance=experiment)
            samforms = SampleFormSet(request.POST, instance=experiment)
            if expform.is_valid() and samforms.is_valid():
                new_exp = expform.save(commit=False)

                # automatic generate or modify fields
                # save modified form
                new_exp.save()
                expform.save_m2m()
                # sample forms
                samforms.instance = new_exp
                if samforms.has_changed():
                    for samform in samforms:
                        if samform.is_valid() and samform.has_changed() and (samform is not None):
                            new_sam = samform.save(commit=False)
                            # new_sam.pool_number = samform.cleaned_data['pool_number']
                            # new_sam.sample_id = experiment.sample_set.count() + 1
                            new_sam.sample_name = generate_sample_name(new_sam)
                            # 	new_sam.save()
                            # 	samform.save_m2m()
                    new_sam = samforms.save()
                return HttpResponseRedirect("/virtual/new/confirm/%s/" % new_exp.experiment_id)
        elif "delete_exp" in request.POST:
            exp2delete = get_object_or_404(Experiment, experiment_id=experiment.experiment_id).delete()
            # return HttpResponseRedirect('/virtual/delete/%s/' % experiment.experiment_id)
            return HttpResponseRedirect("/virtual/new/confirm/%s/" % experiment.experiment_id)
    else:
        expform = ExperimentForm(instance=experiment)
        samforms = SampleFormSet(instance=experiment)

    args = {}
    args.update(csrf(request))
    args["expform"] = expform
    args["samforms"] = samforms
    return render_to_response("newExpView/new.html", args)
Esempio n. 9
0
def provision_detail(request, experimentid):
    if request.method == 'GET':
        #print request.data
        #print experimentid
        experiment = get_object_or_404(Experiment, experimentid = experimentid)
        experiment_serializer = ExperimentSerializer(experiment, many=False)
        #print experiment
        #ansbilenodes = get_list_or_404(AnsibleNode, experiment = experiment)
        ansiblenodes = list(AnsibleNode.objects.filter(experiment = experiment))
        if not ansiblenodes:
	        ansiblenodes = list()
        ansiblenodes_serializer = AnsibleNodeSerializer(ansiblenodes, many=True, show_experiment=False)
	    #print experiment_serializer.update_node_details(ansbilenodes_serializer.data)
	    #print experiment_serializer.data
        return Response(experiment_serializer.include_node_details(ansiblenodes_serializer.data))
    elif request.method == 'POST':
        #print request.data
        #print request.FILES
        #print request.FILES['file']
        #form = ExperimentForm(request.POST, request.FILES)
        #print form.errors
        #print "form"
        #print form
        #print "experimentid"

        #delete existing entry
        try:
            entry = Experiment.objects.get(pk=experimentid)
            entry.delete()
            entry = None
        except (KeyError, Experiment.DoesNotExist):
            entry = None

        #create new entry
        form = ExperimentForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            new_experiment = form.save()
            new_experiment.status = Experiment.unprovision
            new_experiment.save()
        else:
            return Response(request.POST, status=status.HTTP_400_BAD_REQUEST)

        entry = Experiment.objects.get(pk=experimentid)

        #start provision
        host_list = [x.strip() for x in entry.host_list.split(',')]
        #print host_list
        PlaybookHandler.run(experimentid, entry.playbook.path, host_list)

        return Response(request.POST, status=status.HTTP_201_CREATED)

    elif request.method == 'DELETE':
        #delete existing entry
        try:
            entry = Experiment.objects.get(pk=experimentid)
            #delete the corresponding log first
            try:
                print entry.display_log_path()
                os.remove(entry.display_log_path())
            except OSError:
                pass
            entry.delete()
            entry = None
        except (KeyError, Experiment.DoesNotExist):
            entry = None
        return Response()
Esempio n. 10
0
def ckupload():
    form = ExperimentForm()
    response = form.upload(endpoint=admin)
    return response
Esempio n. 11
0
def experiments_create():
    form = ExperimentForm()
    if form.validate_on_submit():
        return 'Yay!'
    else:
        return render_template('experiments/new.html', form=form)
Esempio n. 12
0
def experiments_new():
    form = ExperimentForm()
    return render_template('experiments/new.html', form=form)