def test_submit_valid_box_job(self):
     from tao import models
     ## fill in form (correctly)
     self.select(self.lc_id('catalogue_geometry'), 'Box')
     self.clear(self.lc_id('box_size'))
     self.fill_in_fields({
         'box_size': '9',
         'snapshot': "%.5g" % float(self.redshifts[0]),
     }, id_wrap=self.lc_id)
     self.click(self.lc_2select('op_add_all'))
     self.click('tao-tabs-record_filter')
     self.fill_in_fields({
         'min': '1\n',
         'max': '10\n',
     }, id_wrap=self.rf_id)
     self.submit_mgf_form()
     self.assert_on_page('job_index')
     self.assert_page_has_content(settings.INITIAL_JOB_MESSAGE % models.initial_job_status().lower())
def index(request):
    user = request.user
    if not user.check_disk_usage_within_quota():
        message = (
            "Please reduce your disk usage below " + user.display_user_disk_quota() + ". "
            'If you would like additional quota, please <a href="' + reverse("support_page") + '">submit</a> '
            "a request with the reason for the request."
        )
        messages.info(request, mark_safe(message))
        # return jobs.index(request)
        return redirect(reverse("job_index"))

    if request.method == "POST":
        if len(request.FILES) > 0:
            parameter_file = request.FILES.itervalues().next()
            ui_holder = UIModulesHolder(UIModulesHolder.POST)
            try:
                if parameter_file.content_type != "text/xml":
                    raise Exception("Wrong mime-type")
                params_ui_holder = UIModulesHolder(UIModulesHolder.XML, xml_parse(parameter_file.read()))
                message = "Parameter file '%s' uploaded successfully." % parameter_file.name
                messages.info(request, message)
                return render(
                    request,
                    "mock_galaxy_factory/index.html",
                    {
                        "forms": ui_holder.forms(),
                        "ui_holder": params_ui_holder,
                        "TAB_SUMMARY_ID": settings.MODULE_INDICES["summary"],
                    },
                )
            except:
                message = "Failed to process parameter file: '%s'." % parameter_file.name
                messages.error(request, message)
                return render(
                    request,
                    "mock_galaxy_factory/index.html",
                    {
                        "forms": ui_holder.forms(),
                        # 'ui_holder': params_ui_holder,
                        "TAB_SUMMARY_ID": settings.MODULE_INDICES["summary"],
                    },
                )
        elif "survey_presets" in request.POST:
            preset = SurveyPreset.objects.get(pk=request.POST.get("survey_presets"))
            params_ui_holder = UIModulesHolder(UIModulesHolder.XML, xml_parse(preset.parameters.encode()))
            ui_holder = UIModulesHolder(UIModulesHolder.POST)
            message = "Survey Preset '%s' loaded successfully." % preset.name
            messages.info(request, message)
            return render(
                request,
                "mock_galaxy_factory/index.html",
                {
                    "forms": ui_holder.forms(),
                    "ui_holder": params_ui_holder,
                    "TAB_SUMMARY_ID": settings.MODULE_INDICES["summary"],
                },
            )
        else:
            ui_holder = UIModulesHolder(UIModulesHolder.POST, request.POST)
            response_dict = {}
            response_dict["job_submitted"] = False
            if ui_holder.validate():
                UserModel = get_user_model()
                user = UserModel.objects.get(username=request.user.username)
                job_description = request.POST.get("job-description")
                response_dict["job_id"] = workflow.save(user, ui_holder, job_description).pk
                messages.info(request, _(settings.INITIAL_JOB_MESSAGE % models.initial_job_status().lower()))
                response_dict["job_submitted"] = True
                response_dict["next_page"] = reverse("job_index")
            else:
                response_dict["errors"] = ui_holder.errors
            # Simple answer the errors dictionary
            # If the dictionary is empty, the client knows the job was created successfully
            response = json.dumps(response_dict)
            callback = request.GET.get("callback", None)
            if callback is not None:
                response = "%s(%s)" % (callback, response)
            return HttpResponse(response, mimetype="application/json")

    # Assume GET
    ui_holder = UIModulesHolder(UIModulesHolder.POST)
    return render(
        request,
        "mock_galaxy_factory/index.html",
        {
            "forms": ui_holder.forms(),
            # 'forms_size' : len(ui_holder.forms())+1,
            "TAB_SUMMARY_ID": settings.MODULE_INDICES["summary"],
        },
    )