def area_after_insert(mapper, connection, target):
    area_table = Area.__table__
    connection.execute(
        area_table.update().
        where(area_table.c.id == target.id).
        values(centroid=ST_Centroid(target.geometry))
    )
Beispiel #2
0
def pdf_cover(request):
    try:
        division_code = request.matchdict.get("divisioncode")
    except:
        raise HTTPBadRequest(detail="incorrect value for parameter "
                             '"divisioncode"')
    division = get_division(request, division_code)
    hazard_types = get_hazard_types(request, division_code)

    hazards_sorted = sorted(hazard_types, key=lambda a: a["hazardlevel"].order)

    hazard_categories = []
    for h in hazards_sorted:
        if h["hazardlevel"].mnemonic == _hazardlevel_nodata.mnemonic:
            continue
        hazard_categories.append(
            get_info_for_hazard_type(request, h["hazardtype"].mnemonic,
                                     division))

    lon, lat = (request.dbsession.query(
        func.ST_X(ST_Centroid(AdministrativeDivision.geom)),
        func.ST_Y(ST_Centroid(AdministrativeDivision.geom)),
    ).filter(AdministrativeDivision.code == division_code).first())

    context = {
        "hazards":
        hazard_types,
        "hazards_sorted":
        sorted(hazard_types, key=lambda a: a["hazardlevel"].order),
        "parents":
        get_parents(division),
        "division":
        division,
        "division_lonlat": (lon, lat),
        "hazard_categories":
        hazard_categories,
        "date":
        datetime.datetime.now(),
    }

    return context