def get(self): def _simple_error(message, code=400): self.error(code) self.response.out.write(simplejson.dumps({ 'status': 'error', 'error': { 'message': message }, 'results': [] })) return None self.response.headers['Content-Type'] = 'application/json' query_type = self.request.get('type') user = self.request.get('user'); if not query_type in ['proximity', 'bounds', 'user', 'default']: return _simple_error('type parameter must be ' 'one of "proximity", "bounds", "user".', code=400) if query_type == 'proximity': try: center = geotypes.Point(float(self.request.get('lat')), float(self.request.get('lon'))) except ValueError: return _simple_error('lat and lon parameters must be valid latitude ' 'and longitude values.') elif query_type == 'bounds': try: bounds = geotypes.Box(float(self.request.get('north')), float(self.request.get('east')), float(self.request.get('south')), float(self.request.get('west'))) except ValueError: return _simple_error('north, south, east, and west parameters must be ' 'valid latitude/longitude values.') max_results = 100 if self.request.get('maxresults'): max_results = int(self.request.get('maxresults')) max_distance = 8000000 # 80 km ~ 50 mi if self.request.get('maxdistance'): max_distance = float(self.request.get('maxdistance')) results = [] try: # Can't provide an ordering here in case inequality filters are used. base_query = Listing.all() #if property_type: #base_query.filter('property_type =', property_type) # Natural ordering chosen to be public school enrollment. #base_query.order('-') # Perform proximity or bounds fetch. if query_type == 'proximity': results = Listing.proximity_fetch(base_query, center, max_results=max_results, max_distance=max_distance) elif query_type == 'bounds': results = Listing.bounding_box_fetch(base_query, bounds, max_results=max_results) elif query_type == 'user': limit = self.request.get("limit") offset = self.request.get("offset") if not limit: limit = 1000 else: limit = int(limit) if not offset: offset = 0 else: offset = int(offset) results = base_query.fetch(limit, offset); public_attrs = Listing.public_attributes() results_obj = [ _merge_dicts({ 'lat': result.location.lat, 'lng': result.location.lon, }, dict([(attr, getattr(result, attr)) for attr in public_attrs])) for result in results] self.response.out.write(simplejson.dumps({ 'status': 'success', 'results': results_obj, })) except: return _simple_error(str(sys.exc_info()[1]), code=500)
def get(self): def _simple_error(message, code=400): self.error(code) self.response.out.write( simplejson.dumps({ 'status': 'error', 'error': { 'message': message }, 'results': [] })) return None self.response.headers['Content-Type'] = 'application/json' query_type = self.request.get('type') user = self.request.get('user') if not query_type in ['proximity', 'bounds', 'user', 'default']: return _simple_error( 'type parameter must be ' 'one of "proximity", "bounds", "user".', code=400) if query_type == 'proximity': try: center = geotypes.Point(float(self.request.get('lat')), float(self.request.get('lon'))) except ValueError: return _simple_error( 'lat and lon parameters must be valid latitude ' 'and longitude values.') elif query_type == 'bounds': try: bounds = geotypes.Box(float(self.request.get('north')), float(self.request.get('east')), float(self.request.get('south')), float(self.request.get('west'))) except ValueError: return _simple_error( 'north, south, east, and west parameters must be ' 'valid latitude/longitude values.') max_results = 100 if self.request.get('maxresults'): max_results = int(self.request.get('maxresults')) max_distance = 8000000 # 80 km ~ 50 mi if self.request.get('maxdistance'): max_distance = float(self.request.get('maxdistance')) results = [] try: # Can't provide an ordering here in case inequality filters are used. base_query = Listing.all() #if property_type: #base_query.filter('property_type =', property_type) # Natural ordering chosen to be public school enrollment. #base_query.order('-') # Perform proximity or bounds fetch. if query_type == 'proximity': results = Listing.proximity_fetch(base_query, center, max_results=max_results, max_distance=max_distance) elif query_type == 'bounds': results = Listing.bounding_box_fetch(base_query, bounds, max_results=max_results) elif query_type == 'user': limit = self.request.get("limit") offset = self.request.get("offset") if not limit: limit = 1000 else: limit = int(limit) if not offset: offset = 0 else: offset = int(offset) results = base_query.fetch(limit, offset) public_attrs = Listing.public_attributes() results_obj = [ _merge_dicts( { 'lat': result.location.lat, 'lng': result.location.lon, }, dict([(attr, getattr(result, attr)) for attr in public_attrs])) for result in results ] self.response.out.write( simplejson.dumps({ 'status': 'success', 'results': results_obj, })) except: return _simple_error(str(sys.exc_info()[1]), code=500)
return render_template('edit_contact.html',landlord=landlord,form=form) >>>>>>> d76fc545aab7b1e1556c2efea62c18d4a20978f6 @account_required def logout(): '''Logs a user out''' session.pop('logged_in', None) session.pop('username', None) flash(u'You were logged out!', 'success') return redirect(users.create_logout_url(url_for('home'))) '''No authentication required''' def all_listings(): '''Get all active listings in database''' listings = Listing.all().filter('occupied =', False).order('-timestamp') return render_template('listings.html', listings=listings) def listings_by_parish(id): '''Get all active listings by parish''' listings = Listing.gql("WHERE parish = :1 AND occupied = False ORDER BY timestamp DESC", id) return render_template('listings.html', listings=listings, parish=id) def get_listing(id=None): '''View a single listing''' if id is None: return redirect(url_for('all_listings')) else: listing = Listing.get_by_id(id) return render_template('listing.html', listing=listing)