def city_list(request): city_type_slug = get_metro()['city_location_type'] cities_with_streets = set([City.from_norm_name(c['city']).slug for c in Street.objects.order_by().distinct().values('city')]) all_cities = [City.from_norm_name(v['slug']) for v in Location.objects.filter(location_type__slug=city_type_slug).values('slug', 'name').order_by('name')] all_cities = [city for city in all_cities if city.slug.strip()] return eb_render(request, 'db/city_list.html', {'all_cities': all_cities, 'cities_with_streets': cities_with_streets, 'bodyclass': 'city-list', })
def street_list(request, city_slug): city = city_slug and City.from_slug(city_slug) or None kwargs = city_slug and {'city': city.norm_name} or {} streets = list(Street.objects.filter(**kwargs).order_by('street', 'suffix')) if not streets: raise Http404('This city has no streets') context = { 'street_list': streets, 'city': city, 'bodyclass': 'street-list', 'example_loctype': LocationType.objects.get(slug=settings.DEFAULT_LOCTYPE_SLUG).plural_name, } context['breadcrumbs'] = breadcrumbs.street_list(context) return eb_render(request, 'db/street_list.html', context)
def block_list(request, city_slug, street_slug): city = city_slug and City.from_slug(city_slug) or None kwargs = {'street_slug': street_slug} if city_slug: city_filter = Q(left_city=city.norm_name) | Q(right_city=city.norm_name) else: city_filter = Q() blocks = Block.objects.filter(city_filter, **kwargs).order_by('postdir', 'predir', 'from_num', 'to_num') if not blocks: raise Http404('This street has no blocks') context = { 'block_list': blocks, 'first_block': blocks[0], 'city': city, 'bodyclass': 'block-list', } context['breadcrumbs'] = breadcrumbs.block_list(context) return eb_render(request, 'db/block_list.html', context)
def url_to_block(city_slug, street_slug, from_num, to_num, predir, postdir): params = { 'street_slug': street_slug, 'predir': (predir and predir.upper() or ''), 'postdir': (postdir and postdir.upper() or ''), 'from_num': int(from_num), 'to_num': int(to_num), } if city_slug: city = City.from_slug(city_slug).norm_name city_filter = Q(left_city=city) | Q(right_city=city) else: city_filter = Q() b_list = list(Block.objects.filter(city_filter, **params)) if not b_list: raise Http404() return b_list[0]