Mercurial > hg > GlobalNeighbors
comparison globalneighbors/web.py @ 13:94af113e498a
we have links
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Sun, 25 Jun 2017 14:04:49 -0700 |
| parents | d1b99c695511 |
| children | 27925261c137 |
comparison
equal
deleted
inserted
replaced
| 12:6d89ea94930b | 13:94af113e498a |
|---|---|
| 55 | 55 |
| 56 if startswith: | 56 if startswith: |
| 57 retval = [] | 57 retval = [] |
| 58 for i in cities: | 58 for i in cities: |
| 59 if i[name].startswith(startswith): | 59 if i[name].startswith(startswith): |
| 60 retval.append(i[name]) | 60 retval.append({"name": i[name], |
| 61 return sorted(retval)[:limit] | 61 "geonameid": i['geonameid']}) |
| 62 else: | 62 else: |
| 63 return sorted([i[name] for i in cities])[:limit] | 63 retval = [{"name": i[name], |
| 64 "geonameid": i['geonameid']} | |
| 65 for i in cities] | |
| 66 return sorted(retval)[:limit] | |
| 64 | 67 |
| 65 | 68 |
| 66 class Handler(object): | 69 class Handler(object): |
| 67 """base class for HTTP handler""" | 70 """base class for HTTP handler""" |
| 68 | 71 |
| 110 self.datafile = datafile | 113 self.datafile = datafile |
| 111 self.cities = read_city_list(self.datafile, | 114 self.cities = read_city_list(self.datafile, |
| 112 fields=fields) | 115 fields=fields) |
| 113 self.locations = locations(self.cities) | 116 self.locations = locations(self.cities) |
| 114 | 117 |
| 118 # get country codes | |
| 119 self.country_codes = sorted(set([city['country code'] | |
| 120 for city in self.cities | |
| 121 if city['country code']])) | |
| 122 | |
| 115 # convert cities to a dict for lookup | 123 # convert cities to a dict for lookup |
| 116 self.cities = {city['geonameid'] : city | 124 self.cities = {city['geonameid'] : city |
| 117 for city in self.cities} | 125 for city in self.cities} |
| 126 | |
| 118 | 127 |
| 119 # declare handlers | 128 # declare handlers |
| 120 self.handlers = {'/cities': | 129 self.handlers = {'/cities': |
| 121 CitiesHandler(self.locations, | 130 CitiesHandler(self.locations, |
| 122 self.cities)} | 131 self.cities)} |
| 128 | 137 |
| 129 | 138 |
| 130 def GET(self, request): | 139 def GET(self, request): |
| 131 if request.path_info in ('', '/'): | 140 if request.path_info in ('', '/'): |
| 132 # Landing page | 141 # Landing page |
| 142 body = self.index.render(n_cities=len(self.cities), | |
| 143 country_codes=self.country_codes) | |
| 133 return Response(content_type=self.content_type, | 144 return Response(content_type=self.content_type, |
| 134 body=self.index.render(n_cities=len(self.cities))) | 145 body=body) |
| 146 | |
| 135 elif request.path_info in self.handlers: | 147 elif request.path_info in self.handlers: |
| 136 return request.get_response(self.handlers[request.path_info]) | 148 return request.get_response(self.handlers[request.path_info]) |
| 137 else: | 149 else: |
| 138 try: | 150 try: |
| 139 geoid = int(request.path.strip('/')) | 151 geoid = int(request.path.strip('/')) |
