Example #1
0
def edit_experiment(request, experiment_id,
                      template="tardis_portal/create_experiment_with_samples.html"):
    """Edit an existing experiment.

    :param request: a HTTP Request instance
    :type request: :class:`django.http.HttpRequest`
    :param experiment_id: the ID of the experiment to be edited
    :type experiment_id: string
    :param template_name: the path of the template to render
    :type template_name: string
    :rtype: :class:`django.http.HttpResponse`

    """
    experiment = Experiment.objects.get(id=experiment_id)

    c = Context({'subtitle': 'Edit Project',
                 'user_id': request.user.id,
                 'experiment_id': experiment_id,
              })

    staging = get_full_staging_path(
                                request.user.username)
    if staging:
        c['directory_listing'] = staging_traverse(staging)
        c['staging_mount_prefix'] = settings.STAGING_MOUNT_PREFIX
 
    from .experiments import ExperimentFormHandler
    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES,
                              instance=experiment, extra=0)
        if form.is_valid():
            full_experiment = form.save(commit=False)
            experiment = full_experiment['experiment']
            experiment.created_by = request.user
            full_experiment.save_m2m()
            
            # Get Wrapper information
            ExperimentFormHandler(experiment_id).edit_experiment(form.cleaned_data, experiment_id)

            request.POST = {'status': "Experiment Saved."}
            return HttpResponseRedirect(reverse(
                'tardis.tardis_portal.views.view_experiment',
                args=[str(experiment.id)]) + "#saved")

        c['status'] = "Errors exist in form."
        c["error"] = 'true'
    else:
        experiment_handler = ExperimentFormHandler(experiment_id)
        form = ProjectForm(initial=experiment_handler.form_data(experiment_id), instance=experiment, extra=0)

    c['form'] = form
    c['status'] = form.errors   
    return HttpResponse(render_response_index(request,
                        template, c))
Example #2
0
def create_experiment(request,
                      template_name='tardis_portal/create_experiment_with_samples.html'):

    """Create a new experiment view.

    :param request: a HTTP Request instance
    :type request: :class:`django.http.HttpRequest`
    :param template_name: the path of the template to render
    :type template_name: string
    :rtype: :class:`django.http.HttpResponse`
    
    """
    c = Context({
        'subtitle': 'Create Project',
        'user_id': request.user.id,
        })
    staging = get_full_staging_path(request.user.username)
    if staging:
        c['directory_listing'] = staging_traverse(staging)
        c['staging_mount_prefix'] = settings.STAGING_MOUNT_PREFIX
    
    if request.method == 'POST':
        form = ProjectForm(request.POST)
        if form.is_valid():
            full_experiment = form.save(commit=False)

            # group/owner assignment stuff, soon to be replaced

            experiment = full_experiment['experiment']
            experiment.created_by = request.user
            full_experiment.save_m2m()

            # add defaul ACL
            acl = ExperimentACL(experiment=experiment,
                                pluginId=django_user,
                                entityId=str(request.user.id),
                                canRead=True,
                                canWrite=True,
                                canDelete=True,
                                isOwner=True,
                                aclOwnershipType=ExperimentACL.OWNER_OWNED)
            acl.save()

            request.POST = {'status': "Experiment Created."}
            # Add wrapper information
            from .experiments import ExperimentFormHandler
            ExperimentFormHandler(experiment.id).add_experiment(form.cleaned_data)
            
            return HttpResponseRedirect(reverse(
                'tardis.tardis_portal.views.view_experiment',
                args=[str(experiment.id)]) + "#created")

        c['status'] = "Errors exist in form."
        c["error"] = 'true'

    else:
        form = ProjectForm(extra=1)

    c['form'] = form
    c['default_institution'] = settings.DEFAULT_INSTITUTION
    c['status'] = form.errors   
    return HttpResponse(render_response_index(request, template_name, c))