def getTown(numDudes=10): # handle request data req_data = loads(request.data) culture_filters = {} print "~~~~~~~~~~~~~~~~~~~~~\n%s\n###############" % req_data if 'cultureFilter' in req_data: culture_filters = req_data['cultureFilter'] if 'size' in req_data: size = int(req_data['size']) * 10 # get the population of the town blank_npcs = assemble_npc_list(numDudes, culture_filters) npcs = jobs_for_npcs(blank_npcs) # stuff all professions in a dict, to assign to NPCs when the building is created professions = {} profession_distribution = [] for profession in db.get_all_professions(): professions[profession[4]] = {'occupation':profession[0], 'description':profession[1], 'category':profession[2], 'id':profession[4]} # load all possible buildings to get started actualizing our new Town buildings_raw = [] for bld in db.get_all_businesses(): buildings_raw.append( Building(bld[2], bld[4], bld[5]) ) # pull out the buildings actually in our town, based on size buildings = [] for i, bld in enumerate(buildings_raw): #print '\nbld: {}\nsize: {}\nreqPop: {}\nnumThere: {}'.format(bld.name, size, bld.reqPopulation, size / bld.reqPopulation) for x in range( size / bld.reqPopulation ): # need to reinstantiate so each instance has its own worker this_building = Building(bld.name, bld.reqPopulation, bld.requiredProfession) # get an employee for the business worker = npcs.pop() worker.profession = professions[bld.requiredProfession] this_building.worker = worker.__dict__ buildings.append(this_building) # build the final town product retTown = {} # the thing to jsonify and return bld = {} # buildings dict retTown["name"] = choice(db.get_all_places())[0] # put buildings in dict for easy jsonify for x,y in enumerate(buildings): bld[x] = y.__dict__ retTown['buildings'] = bld # populate town with NPCs retTown['npcs'] = [n.__dict__ for n in npcs] return dumps(retTown)