def club_class_day_page(request, clubname, day, classid=None): club = _find_club(clubname) if club is None: raise Http404("Could not find the club") if classid: try: class_ = ClubClass.objects.get(pk=classid) except ClubClass.DoesNotExist: # probably a deleted class raise Http404("Class by that ID does not exist") classes = ClubClass.objects.filter( club=class_.club, day=class_.day, address1=class_.address1, address2=class_.address2 ) else: # The desperate way of doing it classes = ClubClass.objects.filter(club=club, day__iexact=day).order_by("start_time") try: first_class = classes[0] instructor = Instructor.objects.get(pk=first_class.club.head_instructor.id) address1 = first_class.address1 address2 = first_class.address2 address3 = first_class.address3 address4 = first_class.address4 address5 = first_class.address5 if valid_uk_postcode(address5.strip()): post_code = format_uk_postcode(address5.strip()) elif address4 == "Sweden": # Gabor post_code = "%s, %s" % (address3, address4) elif address5 == "Ireland" or address3.startswith("Dublin"): post_code = "%s, %s, Ireland" % (address2, address3) elif valid_uk_postcode(address4.strip()): # eg. FWC Kensington & Chelsea post_code = format_uk_postcode(address4.strip()) else: post_code = None print repr(address1) print repr(address2) print repr(address3) print repr(address4) print repr(address5) if post_code: map_link = "%smap/?" % request.build_absolute_uri() # print repr(post_code) map_link += urllib.urlencode(dict(q=post_code)) else: map_link = first_class.map_link.strip() if not map_link.startswith("http"): map_link = "http://%s" % map_link except IndexError: # if this happens, there are no classes on this day and that can happen # if you go to a day that no longer exists (stale URL). first_class = None return _render("club_class_day.html", locals(), request)
def _address_list_to_geopoint(address_bits): address_bits = [x.strip() for x in address_bits if x.strip()] cache_key = '|'.join([x.replace(' ','') for x in address_bits]) in_cache = cache.get(cache_key) if in_cache is None: # first find out if one of the items is a UK postcode address_search = None for bit in address_bits: if valid_uk_postcode(bit): address_search = format_uk_postcode(bit) if not address_search: if FIND_ONLY_UK_POSTCODES: raise AddressNotFound, ','.join(address_bits) else: address_search = ', '.join(address_bits[2:]) try: place, (lat, lng) = geopy_geocode(address_search, settings.GOOGLEMAPS_API_KEY) except ValueError, msg: raise AddressNotFound, address_search #in_cache = (lat, lng) in_cache = (lng, lat) # save it in cache cache.set(cache_key, in_cache, 3600*24) # 1 day, make it a month?