本文整理汇总了Python中mapit.shortcuts.get_object_or_404函数的典型用法代码示例。如果您正苦于以下问题:Python get_object_or_404函数的具体用法?Python get_object_or_404怎么用?Python get_object_or_404使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_object_or_404函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _get_voting_area_info
def _get_voting_area_info(area_id):
if re.match('\d\d([a-z][a-z])?([a-z][a-z])?$(?i)', area_id):
area = get_object_or_404(Area, codes__type='ons', codes__code=area_id)
else:
area = get_object_or_404(Area, id=int(area_id))
if isinstance(area, HttpResponse): return area
try:
os_name = area.names.get(type='O').name
except:
os_name = None
try:
ons_code = area.codes.get(type='ons').code
except:
ons_code = None
current = Generation.objects.current().id
out = {
'area_id': area.id,
'name': area.name,
'os_name': os_name,
'country': area.country,
'parent_area_id': area.parent_area_id,
'type': area.type,
'ons_code': ons_code,
'generation_low': area.generation_low_id if area.generation_low_id else 0,
'generation_high': area.generation_high_id if area.generation_high_id else current,
'generation': current,
}
for item in ('type_name', 'attend_prep', 'general_prep', 'rep_name', 'rep_name_plural',
'rep_name_long', 'rep_name_long_plural', 'rep_suffix', 'rep_prefix'):
out[item] = voting_area[item].get(area.type)
return out
示例2: area
def area(request, area_id, legacy=False):
if re.match('\d\d([A-Z]{2}|[A-Z]{4}|[A-Z]{2}\d\d\d|[A-Z]|[A-Z]\d\d)$', area_id):
area = get_object_or_404(Area, codes__type='ons', codes__code=area_id)
elif not re.match('\d+$', area_id):
return output_json({ 'error': 'Bad area ID specified' }, code=400)
else:
area = get_object_or_404(Area, id=area_id)
if isinstance(area, HttpResponse): return area
return output_json( area.as_dict() )
示例3: area_intersect
def area_intersect(query_type, title, request, area_id, format):
area = get_object_or_404(Area, format=format, id=area_id)
if not area.polygons.count():
raise ViewException(format, 'No polygons found', 404)
generation = Generation.objects.current()
types = [_f for _f in request.REQUEST.get('type', '').split(',') if _f]
set_timeout(format)
try:
# Cast to list so that it's evaluated here, and output_areas doesn't get
# confused with a RawQuerySet
areas = list(Area.objects.intersect(query_type, area, types, generation))
except QueryCanceledError:
raise ViewException(
format, 'That query was taking too long to compute - '
'try restricting to a specific type, if you weren\'t already doing so.', 500)
except DatabaseError as e:
# Django 1.2+ catches QueryCanceledError and throws its own DatabaseError instead
if 'canceling statement due to statement timeout' not in e.args[0]:
raise
raise ViewException(
format, 'That query was taking too long to compute - '
'try restricting to a specific type, if you weren\'t already doing so.', 500)
except InternalError:
raise ViewException(format, 'There was an internal error performing that query.', 500)
title = title % ('<a href="%sarea/%d.html">%s</a>' % (reverse('mapit_index'), area.id, area.name))
return output_areas(request, title, format, areas, norobots=True)
示例4: area_polygon
def area_polygon(request, srid="", area_id="", format="kml"):
if not srid and hasattr(countries, "area_code_lookup"):
resp = countries.area_code_lookup(request, area_id, format)
if resp:
return resp
if not re.match("\d+$", area_id):
raise ViewException(format, "Bad area ID specified", 400)
if not srid:
srid = 4326 if format in ("kml", "json", "geojson") else settings.MAPIT_AREA_SRID
srid = int(srid)
area = get_object_or_404(Area, id=area_id)
try:
simplify_tolerance = float(request.GET.get("simplify_tolerance", 0))
except ValueError:
raise ViewException(format, "Badly specified tolerance", 400)
try:
output, content_type = area.export(srid, format, simplify_tolerance=simplify_tolerance)
if output is None:
return output_json({"error": "No polygons found"}, code=404)
except SimplifiedAway:
return output_json({"error": "Simplifying removed all the polygons"}, code=404)
return HttpResponse(output, content_type="%s; charset=utf-8" % content_type)
示例5: _area_geometry
def _area_geometry(area_id):
area = get_object_or_404(Area, id=area_id)
all_areas = area.polygons.all().collect()
if not all_areas:
return output_json({"error": "No polygons found"}, code=404)
out = {"parts": all_areas.num_geom}
if settings.MAPIT_AREA_SRID != 4326:
out["srid_en"] = settings.MAPIT_AREA_SRID
out["area"] = all_areas.area
out["min_e"], out["min_n"], out["max_e"], out["max_n"] = all_areas.extent
out["centre_e"], out["centre_n"] = all_areas.centroid
all_areas.transform(4326)
out["min_lon"], out["min_lat"], out["max_lon"], out["max_lat"] = all_areas.extent
out["centre_lon"], out["centre_lat"] = all_areas.centroid
else:
out["min_lon"], out["min_lat"], out["max_lon"], out["max_lat"] = all_areas.extent
out["centre_lon"], out["centre_lat"] = all_areas.centroid
if hasattr(countries, "area_geometry_srid"):
srid = countries.area_geometry_srid
all_areas.transform(srid)
out["srid_en"] = srid
out["area"] = all_areas.area
out["min_e"], out["min_n"], out["max_e"], out["max_n"] = all_areas.extent
out["centre_e"], out["centre_n"] = all_areas.centroid
return out
示例6: area_code_lookup
def area_code_lookup(request, area_id, format):
from mapit.models import Area, CodeType
area_code = None
if re.match('\d\d([A-Z]{2}|[A-Z]{4}|[A-Z]{2}\d\d\d|[A-Z]|[A-Z]\d\d)$', area_id):
area_code = CodeType.objects.get(code='ons')
elif re.match('[EW]0[12]\d{6}$', area_id): # LSOA/MSOA have ONS code type
area_code = CodeType.objects.get(code='ons')
elif re.match('[ENSW]\d{8}$', area_id):
area_code = CodeType.objects.get(code='gss')
if not area_code:
return None
args = { 'format': format, 'codes__type': area_code, 'codes__code': area_id }
if re.match('[EW]01', area_id):
args['type__code'] = 'OLF'
elif re.match('[EW]02', area_id):
args['type__code'] = 'OMF'
area = get_object_or_404(Area, **args)
path = '/area/%d%s' % (area.id, '.%s' % format if format else '')
# If there was a query string, make sure it's passed on in the
# redirect:
if request.META['QUERY_STRING']:
path += "?" + request.META['QUERY_STRING']
return HttpResponseRedirect(path)
示例7: area_children
def area_children(request, area_id, format='json'):
q = query_args(request, format)
area = get_object_or_404(Area, format=format, id=area_id)
children = area.children.filter(q).distinct()
if format in ('kml', 'geojson'):
return _areas_polygon(request, format, children)
return output_areas(request, _('Children of %s') % area.name, format, children)
示例8: area_polygon
def area_polygon(request, srid='', area_id='', format='kml'):
if not srid and hasattr(countries, 'area_code_lookup'):
resp = countries.area_code_lookup(request, area_id, format)
if resp: return resp
if not re.match('\d+$', area_id):
raise ViewException(format, 'Bad area ID specified', 400)
if not srid:
srid = 4326 if format in ('kml', 'json', 'geojson') else settings.MAPIT_AREA_SRID
srid = int(srid)
area = get_object_or_404(Area, id=area_id)
try:
simplify_tolerance = float(request.GET.get('simplify_tolerance', 0))
except ValueError:
raise ViewException(format, 'Badly specified tolerance', 400)
try:
output, content_type = area.export(srid, format, simplify_tolerance=simplify_tolerance)
if output is None:
return output_json({'error': 'No polygons found'}, code=404)
except SimplifiedAway:
return output_json({'error': 'Simplifying removed all the polygons'}, code=404)
return HttpResponse(output, content_type='%s; charset=utf-8' % content_type)
示例9: area_polygon
def area_polygon(request, srid='', area_id='', format='kml'):
if not srid:
srid = 4326 if format in ('kml', 'json', 'geojson') else int(mysociety.config.get('AREA_SRID'))
srid = int(srid)
area = get_object_or_404(Area, id=area_id)
if isinstance(area, HttpResponse): return area
all_areas = area.polygons.all()
if len(all_areas) > 1:
all_areas = all_areas.collect()
elif len(all_areas) == 1:
all_areas = all_areas[0].polygon
else:
return output_json({ 'error': 'No polygons found' }, code=404)
if srid != int(mysociety.config.get('AREA_SRID')):
all_areas.transform(srid)
if format=='kml':
out = '''<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Placemark>
<name>%s</name>
%s
</Placemark>
</kml>''' % (area.name, all_areas.kml)
content_type = 'application/vnd.google-earth.kml+xml'
elif format in ('json', 'geojson'):
out = all_areas.json
content_type = 'application/json'
elif format=='wkt':
out = all_areas.wkt
content_type = 'text/plain'
return HttpResponse(out, content_type='%s; charset=utf-8' % content_type)
示例10: _area_geometry
def _area_geometry(area_id):
area = get_object_or_404(Area, id=area_id)
if isinstance(area, HttpResponse): return area
all_areas = area.polygons.all().collect()
if not all_areas:
return output_json({ 'error': 'No polygons found' }, code=404)
out = {
'parts': all_areas.num_geom,
}
if settings.MAPIT_AREA_SRID != 4326:
out['srid_en'] = settings.MAPIT_AREA_SRID
out['area'] = all_areas.area
out['min_e'], out['min_n'], out['max_e'], out['max_n'] = all_areas.extent
out['centre_e'], out['centre_n'] = all_areas.centroid
all_areas.transform(4326)
out['min_lon'], out['min_lat'], out['max_lon'], out['max_lat'] = all_areas.extent
out['centre_lon'], out['centre_lat'] = all_areas.centroid
else:
out['min_lon'], out['min_lat'], out['max_lon'], out['max_lat'] = all_areas.extent
out['centre_lon'], out['centre_lat'] = all_areas.centroid
if hasattr(countries, 'area_geometry_srid'):
srid = countries.area_geometry_srid
all_areas.transform(srid)
out['srid_en'] = srid
out['area'] = all_areas.area
out['min_e'], out['min_n'], out['max_e'], out['max_n'] = all_areas.extent
out['centre_e'], out['centre_n'] = all_areas.centroid
return out
示例11: area_polygon
def area_polygon(request, srid='', area_id='', format='kml'):
if not srid and hasattr(countries, 'area_code_lookup'):
resp = countries.area_code_lookup(request, area_id, format)
if resp:
return resp
if not re.match('\d+$', area_id):
raise ViewException(format, 'Bad area ID specified', 400)
if not srid:
srid = 4326 if format in ('kml', 'json', 'geojson') else settings.MAPIT_AREA_SRID
srid = int(srid)
area = get_object_or_404(Area, id=area_id)
try:
simplify_tolerance = float(request.GET.get('simplify_tolerance', 0))
except ValueError:
raise ViewException(format, 'Badly specified tolerance', 400)
try:
output, content_type = area.export(srid, format, simplify_tolerance=simplify_tolerance)
if output is None:
return output_json({'error': 'No polygons found'}, code=404)
except TransformError as e:
return output_json({'error': e.args[0]}, code=400)
response = HttpResponse(content_type='%s; charset=utf-8' % content_type)
response['Access-Control-Allow-Origin'] = '*'
response['Cache-Control'] = 'max-age=2419200' # 4 weeks
response.write(output)
return response
示例12: area_intersect
def area_intersect(query_type, title, request, area_id, format):
area = get_object_or_404(Area, format=format, id=area_id)
if not area.polygons.count():
raise ViewException(format, "No polygons found", 404)
generation = Generation.objects.current()
types = filter(None, request.REQUEST.get("type", "").split(","))
set_timeout(format)
try:
# Cast to list so that it's evaluated here, and add_codes doesn't get
# confused with a RawQuerySet
areas = list(Area.objects.intersect(query_type, area, types, generation))
areas = add_codes(areas)
except QueryCanceledError:
raise ViewException(
format,
"That query was taking too long to compute - try restricting to a specific type, if you weren't already doing so.",
500,
)
except DatabaseError, e:
# Django 1.2+ catches QueryCanceledError and throws its own DatabaseError instead
if "canceling statement due to statement timeout" not in e.args[0]:
raise
raise ViewException(
format,
"That query was taking too long to compute - try restricting to a specific type, if you weren't already doing so.",
500,
)
示例13: area_code_lookup
def area_code_lookup(request, area_code, format):
from mapit.models import Area, CodeType
area_code_type = None
if re.match(r'\d\d([A-Z]{2}|[A-Z]{4}|[A-Z]{2}\d\d\d|[A-Z]|[A-Z]\d\d)$', area_code):
area_code_type = CodeType.objects.get(code='ons')
elif re.match(r'[EW]0[12]\d{6}$', area_code): # LSOA/MSOA have ONS code type
area_code_type = CodeType.objects.get(code='ons')
elif re.match(r'[ENSW]\d{8}$', area_code):
area_code_type = CodeType.objects.get(code='gss')
if not area_code_type:
return None
args = {'format': format, 'codes__type': area_code_type, 'codes__code': area_code}
if re.match('[EW]01', area_code):
args['type__code'] = 'OLF'
elif re.match('[EW]02', area_code):
args['type__code'] = 'OMF'
area = get_object_or_404(Area, **args)
area_kwargs = {'area_id': area.id}
if format:
area_kwargs['format'] = format
# We're called either by area or area_polygon
try:
redirect_path = reverse('area', kwargs=area_kwargs)
except NoReverseMatch:
redirect_path = reverse('area_polygon', kwargs=area_kwargs)
# If there was a query string, make sure it's passed on in the
# redirect:
if request.META['QUERY_STRING']:
redirect_path += "?" + request.META['QUERY_STRING']
return HttpResponseRedirect(redirect_path)
示例14: area_intersect
def area_intersect(query_type, title, request, area_id, format):
area = get_object_or_404(Area, format=format, id=area_id)
if isinstance(area, HttpResponse): return area
if not area.polygons.count():
return output_error(format, 'No polygons found', 404)
generation = Generation.objects.current()
args = {
'generation_low__lte': generation,
'generation_high__gte': generation,
}
type = request.REQUEST.get('type', '')
if ',' in type:
args['type__code__in'] = type.split(',')
elif type:
args['type__code'] = type
elif area.type.code in ('EUR'):
args['type__code'] = area.type.code
set_timeout(format)
try:
areas = list(Area.objects.intersect(query_type, area).filter(**args).distinct())
areas = add_codes(areas)
except QueryCanceledError:
return output_error(format, 'That query was taking too long to compute - try restricting to a specific type, if you weren\'t already doing so.', 500)
except DatabaseError, e:
# Django 1.2+ catches QueryCanceledError and throws its own DatabaseError instead
if 'canceling statement due to statement timeout' not in e.args[0]: raise
return output_error(format, 'That query was taking too long to compute - try restricting to a specific type, if you weren\'t already doing so.', 500)
示例15: _area_geometry
def _area_geometry(area_id):
area = get_object_or_404(Area, id=area_id)
if isinstance(area, HttpResponse): return area
all_areas = area.polygons.all().collect()
if not all_areas:
return output_json({ 'error': 'No polygons found' }, code=404)
out = {
'parts': all_areas.num_geom,
}
if int(mysociety.config.get('AREA_SRID')) != 4326:
out['srid_en'] = mysociety.config.get('AREA_SRID')
out['area'] = all_areas.area
out['min_e'], out['min_n'], out['max_e'], out['max_n'] = all_areas.extent
out['centre_e'], out['centre_n'] = all_areas.centroid
all_areas.transform(4326)
out['min_lon'], out['min_lat'], out['max_lon'], out['max_lat'] = all_areas.extent
out['centre_lon'], out['centre_lat'] = all_areas.centroid
elif mysociety.config.get('COUNTRY') == 'NO':
out['min_lon'], out['min_lat'], out['max_lon'], out['max_lat'] = all_areas.extent
out['centre_lon'], out['centre_lat'] = all_areas.centroid
all_areas.transform(32633)
out['srid_en'] = 32633
out['area'] = all_areas.area
out['min_e'], out['min_n'], out['max_e'], out['max_n'] = all_areas.extent
out['centre_e'], out['centre_n'] = all_areas.centroid
return out