Example #1
0
    def test_validation_instance_data(self):
        exp = self._create_experiment()
        f = ProjectForm(instance=exp)
        # A default empty experiment makes the project form invalid
        self.assertFalse(f.is_valid())

        post = self._data_to_post()
        f = ProjectForm(instance=exp, data=post)
        self.assertTrue(f.is_valid())
Example #2
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 #3
0
    def test_validation_blank_data(self):
        post = self._data_to_post(
            [
                ("authors", ""),
                ("created_by", ""),
                ("description", ""),
                ("institution_name", ""),
                ("title", ""),
                ("sample-MAX_NUM_FORMS", ""),
                ("sample-INITIAL_FORMS", "0"),
                ("sample-TOTAL_FORMS", "0"),
            ]
        )
        f = ProjectForm(post)

        self.assertFalse(f.is_valid())
        self.assertTrue("authors" in f.errors)
        # self.assertTrue('description' in f.errors)
        self.assertTrue("institution_name" in f.errors)
        self.assertTrue("title" in f.errors)
Example #4
0
 def test_validation_correct_data(self):
     post = self._data_to_post()
     f = ProjectForm(post)
     self.assertTrue(f.is_valid())
Example #5
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))