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))
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))