import csv import json import logging from pylons import request, response, session, tmpl_context as c from pylons.controllers.util import abort, redirect_to from maps.lib.base import BaseController, render log = logging.getLogger(__name__) class LocationController(BaseController): def __init__(self): c.postback_url = None def index(self): return render('/location/index.mako') def route(self): if request.method != 'POST': return 'You should have posted some data.' if (c.postback_url == None): c.postback_url = '/directions/json_to_kml' # Get the contents of the uploaded files. producers_data = request.POST['producers'].value.splitlines() consumers_data = request.POST['consumers'].value.splitlines() producers_csv = csv.DictReader(producers_data) consumers_csv = csv.DictReader(consumers_data) # Create a big json string to pass as a parameter to our # javascript page. json_objects = [] for row in producers_csv: # Add the producers to the output, one at a time. # But first, insert a 'type' field. row['type'] = 'producer' json_objects.append(row) for row in consumers_csv: # Do the same thing for the consumers. row['type'] = 'consumer' json_objects.append(row) c.json = json.dumps(json_objects) c.js = render('javascript/routing.mako') return render('location/route.mako') def distance(self): c.postback_url = '/directions/distances' return self.route()