Example #1
0
def infowindow_approval(request, permission_manager, scenario,
                        callbackfunction, form_id, with_approvalobject):
    """Calls the page to give approval to scenarios"""

    # The scenario may be part of several projects. We are looking for
    # a project in which this user has approve rights, and then let
    # him approve for that project.

    # Right now, a user isn't supposed to be the approver for more
    # than one project, if that's necessary they should make multiple
    # users.

    for project in scenario.all_projects():
        if permission_manager.check_project_permission(
                project, UserPermission.PERMISSION_SCENARIO_APPROVE):
            break
    else:
        # No project found in which the user has Approve rights for
        # this scenario.
        return HttpResponse(
            unicode(_("No permission to import scenario or login")))

    items = dict(request.REQUEST.items())

    items['callback'] = (
        'callbackFunctions["ApprovalObjectCallbackFormFunction"]()')
    items['formId'] = 'totalApprovalForm'
    url_args = '?' + '&'.join("%s=%s" % x for x in items.items())

    destroy_function = items.get('destroy_function', None)
    create_function = items.get('create_function', None)
    pane_id = items.get('pane_id', None)

    return render_to_response(
        'flooding/infowindow_approval_total.html', {
            "approval_object":
            approvaltable(request,
                          scenario.approval_object(project).id, True),
            'url_args':
            url_args,
            'destroy_function':
            destroy_function,
            'create_function':
            create_function,
            'pane_id':
            pane_id
        })
Example #2
0
def infowindow_approval(
    request, permission_manager, scenario, callbackfunction,
    form_id, with_approvalobject):
    """Calls the page to give approval to scenarios"""

    # The scenario may be part of several projects. We are looking for
    # a project in which this user has approve rights, and then let
    # him approve for that project.

    # Right now, a user isn't supposed to be the approver for more
    # than one project, if that's necessary they should make multiple
    # users.

    for project in scenario.all_projects():
        if permission_manager.check_project_permission(
            project, UserPermission.PERMISSION_SCENARIO_APPROVE):
            break
    else:
        # No project found in which the user has Approve rights for
        # this scenario.
        return HttpResponse(
            unicode(_("No permission to import scenario or login")))

    items = dict(request.REQUEST.items())

    items['callback'] = (
        'callbackFunctions["ApprovalObjectCallbackFormFunction"]()')
    items['formId'] = 'totalApprovalForm'
    url_args = '?' + '&'.join("%s=%s" % x for x in items.items())

    destroy_function = items.get('destroy_function', None)
    create_function = items.get('create_function', None)
    pane_id = items.get('pane_id', None)

    return render_to_response(
        'flooding/infowindow_approval_total.html',
        {"approval_object": approvaltable(
                request,
                scenario.approval_object(project).id, True),
         'url_args': url_args,
         'destroy_function': destroy_function,
         'create_function': create_function,
         'pane_id': pane_id
         })
Example #3
0
def approve_import(request, import_scenario_id):
    """
    Renders Lizard-flooding page for verifying the data of a proposed
    scenario import. The administrator has to verify the results.
    """
    importscenario = get_object_or_404(ImportScenario, pk=import_scenario_id)

    if request.method == 'POST':
        if (request.POST.get('action') == 'save_admin' or
            request.POST.get('action') == 'save_and_import'):
            importscenario.state = request.POST.get('state')
            breach = request.POST.get('breach', None)
            project = request.POST.get('project', None)
            region = request.POST.get('region', None)
            importscenario.validation_remarks = request.POST.get(
                'remarks', None)
            if breach != None and breach != 'null':
                try:
                    importscenario.breach = Breach.objects.get(pk=int(breach))
                except Breach.DoesNotExist:
                    pass
                except ValueError:
                    pass
                except TypeError:
                    pass

            if project != None and project != 'null':
                try:
                    importscenario.project = Project.objects.get(
                        pk=int(project))
                except Project.DoesNotExist:
                    pass
                except ValueError:
                    pass
                except TypeError:
                    pass

            if region != None and region != 'null':
                try:
                    importscenario.region = Region.objects.get(pk=int(region))
                except Region.DoesNotExist:
                    pass
                except ValueError:
                    pass
                except TypeError:
                    pass
            importscenario.save()

            if request.POST.get('action') == 'save_and_import':
                return import_scenario_into_flooding(request, importscenario)
        else:
            for field in request.POST:
                logger.debug("FIELD: {0}".format(field))
                #to do: first cehck if not edremark. or edstatus.
                field_ref = InputField.objects.filter(name=field)
                if field_ref.count() == 1:
                    field_ref = field_ref[0]
                    importscenariovalues, new = (
                        ImportScenarioInputField.objects.get_or_create(
                            importscenario=importscenario,
                            inputfield=field_ref))
                    importscenariovalues.setValue(request.POST[field])
                    importscenariovalues.validation_remarks = request.POST.get(
                        'edremark.' + field, '')
                    importscenariovalues.state = request.POST.get(
                        'edstate.' + field, True)
                    importscenariovalues.save()
        importscenario.update_scenario_name()
        importscenario.save()
        answer = {
            'successful': 'true',
            'post_remarks': 'opgeslagen',
            'id': importscenario.id
            }
        return HttpResponse(
            json.dumps(answer),
            content_type="application/json")

    else:
        f = []
        k = {}  # index

        for header in InputField.HEADER_CHOICES:
            k[header[0]] = len(f)
            f.append({
                'id': header[0],
                'title': unicode(header[1]),
                'fields': []})

        fields = InputField.objects.all().order_by('-position')

        for field in fields:
            value = field.importscenarioinputfield_set.filter(
                importscenario=importscenario)

            if value.count() > 0:
                f[k[field.header]]['fields'].append(value[0])
            else:
                f[k[field.header]]['fields'].append(field)

    table = ""
    if importscenario.approvalobject:
        table = approvaltable(request, importscenario.approvalobject.id)

    state = importscenario.state

    state_valuemap = {}
    for option in ImportScenario.IMPORT_STATE_CHOICES:
        state_valuemap[option[0]] = unicode(option[1])

    state_valuemap = json.dumps(state_valuemap, sort_keys=True)

    post_url = reverse(
        'flooding_tools_import_approve',
        kwargs={'import_scenario_id': import_scenario_id})

    breadcrumbs = [
        {'name': _('Import tool'),
         'url': reverse('flooding_tools_import_overview')},
        {'name': _('Approve import')}]

    return render_to_response(
        'import/import_scenario.html',
        {'fields': f,
         'action': 'approve',
         'post_url': post_url,
         'approvaltable': table,
         'static_editor': False,
         'import_admin': True,
         'state': state,
         'state_valuemap': state_valuemap,
         'importscenario': importscenario,
         'breadcrumbs': breadcrumbs
         })
Example #4
0
def approve_import(request, import_scenario_id):
    """
    Renders Lizard-flooding page for verifying the data of a proposed
    scenario import. The administrator has to verify the results.
    """
    importscenario = get_object_or_404(ImportScenario, pk=import_scenario_id)

    if request.method == 'POST':
        if (request.POST.get('action') == 'save_admin'
                or request.POST.get('action') == 'save_and_import'):
            importscenario.state = request.POST.get('state')
            breach = request.POST.get('breach', None)
            project = request.POST.get('project', None)
            region = request.POST.get('region', None)
            importscenario.validation_remarks = request.POST.get(
                'remarks', None)
            if breach != None and breach != 'null':
                try:
                    importscenario.breach = Breach.objects.get(pk=int(breach))
                except Breach.DoesNotExist:
                    pass
                except ValueError:
                    pass
                except TypeError:
                    pass

            if project != None and project != 'null':
                try:
                    importscenario.project = Project.objects.get(
                        pk=int(project))
                except Project.DoesNotExist:
                    pass
                except ValueError:
                    pass
                except TypeError:
                    pass

            if region != None and region != 'null':
                try:
                    importscenario.region = Region.objects.get(pk=int(region))
                except Region.DoesNotExist:
                    pass
                except ValueError:
                    pass
                except TypeError:
                    pass
            importscenario.save()

            if request.POST.get('action') == 'save_and_import':
                return import_scenario_into_flooding(request, importscenario)
        else:
            for field in request.POST:
                logger.debug("FIELD: {0}".format(field))
                #to do: first cehck if not edremark. or edstatus.
                field_ref = InputField.objects.filter(name=field)
                if field_ref.count() == 1:
                    field_ref = field_ref[0]
                    importscenariovalues, new = (
                        ImportScenarioInputField.objects.get_or_create(
                            importscenario=importscenario,
                            inputfield=field_ref))
                    importscenariovalues.setValue(request.POST[field])
                    importscenariovalues.validation_remarks = request.POST.get(
                        'edremark.' + field, '')
                    importscenariovalues.state = request.POST.get(
                        'edstate.' + field, True)
                    importscenariovalues.save()
        importscenario.update_scenario_name()
        importscenario.save()
        answer = {
            'successful': 'true',
            'post_remarks': 'opgeslagen',
            'id': importscenario.id
        }
        return HttpResponse(json.dumps(answer), mimetype="application/json")

    else:
        f = []
        k = {}  # index

        for header in InputField.HEADER_CHOICES:
            k[header[0]] = len(f)
            f.append({
                'id': header[0],
                'title': unicode(header[1]),
                'fields': []
            })

        fields = InputField.objects.all().order_by('-position')

        for field in fields:
            value = field.importscenarioinputfield_set.filter(
                importscenario=importscenario)

            if value.count() > 0:
                f[k[field.header]]['fields'].append(value[0])
            else:
                f[k[field.header]]['fields'].append(field)

    table = ""
    if importscenario.approvalobject:
        table = approvaltable(request, importscenario.approvalobject.id)

    state = importscenario.state

    state_valuemap = {}
    for option in ImportScenario.IMPORT_STATE_CHOICES:
        state_valuemap[option[0]] = unicode(option[1])

    state_valuemap = json.dumps(state_valuemap, sort_keys=True)

    post_url = reverse('flooding_tools_import_approve',
                       kwargs={'import_scenario_id': import_scenario_id})

    breadcrumbs = [{
        'name': _('Import tool'),
        'url': reverse('flooding_tools_import_overview')
    }, {
        'name': _('Approve import')
    }]

    return render_to_response(
        'import/import_scenario.html', {
            'fields': f,
            'action': 'approve',
            'post_url': post_url,
            'approvaltable': table,
            'static_editor': False,
            'import_admin': True,
            'state': state,
            'state_valuemap': state_valuemap,
            'importscenario': importscenario,
            'breadcrumbs': breadcrumbs
        })