コード例 #1
0
def load_export_form(request, export_run_id):
    """Render the html form to load export run."""
    if not (request.user.is_authenticated()
            and request.user.has_perm('exporttool.can_create')):
        return HttpResponse(_("No permission to create export"))
    export_run = get_object_or_404(ExportRun, pk=export_run_id)
    form = ExportRunForm(instance=export_run)
    return render_to_response('export/exports_new.html', {'form': form})
コード例 #2
0
def new_export(request):
    """
    Renders a html with only the form for creating a new export run

    * It uses the Django-validation bud adds a custom validation rule:
      there has to be at least one scenario selected. Otherwis an error
      is added to the error list.
    * If the form information is valid, a new export run is created and saved,
      Also the needed information for the genereation of the waterdepth map is
      saved in a CSV-file.
    """
    if not (request.user.is_authenticated()
            and request.user.has_perm('exporttool.can_create')):
        return HttpResponse(_("No permission to create export"))

    if request.method == 'POST':
        form = ExportRunForm(request.POST)
        # necessary to call 'is_valid()' before adding custom errors
        valid = form.is_valid()
        scenario_ids = json.loads(request.REQUEST.get('scenarioIds'))

        try:
            setting_max_scenarios = Setting.objects.get(
                key='MAX_SCENARIOS_PER_EXPORT').value
            max_scenarios = int(setting_max_scenarios)
        except Setting.DoesNotExist:
            max_scenarios = DEFAULT_MAX_SCENARIOS_PER_EXPORT

        if not scenario_ids:
            form._errors['scenarios'] = form.error_class(
                [u"U heeft geen scenario's geselecteerd."])
            valid = False
        elif len(scenario_ids) > max_scenarios:
            form._errors['scenarios'] = form.error_class([
                u"Er zijn maximaal {} scenario's per export toegestaan.".
                format(max_scenarios)
            ])
            valid = False

        if valid:
            new_export_run = ExportRun(
                export_type=ExportRun.EXPORT_TYPE_WATER_DEPTH_MAP,
                name=form.cleaned_data['name'],
                description=form.cleaned_data['description'],
                owner=request.user,
                creation_date=datetime.datetime.now(),
                gridsize=form.cleaned_data['gridsize'],
                export_max_waterdepth=form.
                cleaned_data['export_max_waterdepth'],
                export_max_flowvelocity=form.
                cleaned_data['export_max_flowvelocity'],
                export_possibly_flooded=form.
                cleaned_data['export_possibly_flooded'],
                export_arrival_times=form.cleaned_data['export_arrival_times'],
                export_period_of_increasing_waterlevel=form.
                cleaned_data['export_period_of_increasing_waterlevel'],
                export_inundation_sources=form.
                cleaned_data['export_inundation_sources'],
                export_scenario_data=form.cleaned_data['export_scenario_data'],
                public=form.cleaned_data['public'])
            new_export_run.save()
            new_export_run.scenarios = Scenario.objects.filter(
                pk__in=scenario_ids)
            new_export_run.start()

            return HttpResponse('redirect_in_js_to_' +
                                reverse('flooding_tools_export_index'))
    else:
        form = ExportRunForm()

    return render_to_response('export/exports_new.html', {'form': form})