def getRelatedProjects(self): ideaId = self.request('idea_id') limit = int(self.request('n_limit')) if self.request('n_limit') else 5 relatedProjects = [] citywideProjects = [] kw = [] isLocationOnlyMatch = False if (not ideaId): log.error("No idea id") else: idea = mIdea.Idea(self.db, ideaId) if (idea): kw = mKeywords.getKeywords(self.db, idea.description) if (idea.locationId != -1): relatedProjects = mProject.searchProjects(self.db, kw, idea.locationId, limit) if (len(relatedProjects) == 0): isLocationOnlyMatch = True relatedProjects = mProject.searchProjects(self.db, [], idea.locationId, limit) citywideProjects = mProject.searchProjects(self.db, kw, -1, limit) else: log.error("No idea found for id = %s" % ideaId) obj = dict(is_location_only_match = isLocationOnlyMatch, related = relatedProjects, citywide = citywideProjects, search_terms = ','.join(kw)) return self.json(obj)
def showSearch(self): if (self.request('main_text')): return False terms = self.request('terms').split(',') if self.request('terms') else [] limit = int(self.request('n')) if self.request('n') else 6 offset = int(self.request('offset')) if self.request('offset') else 0 locationId = self.request('location_id') self.template_data['search_terms'] = self.request('terms') self.template_data['search_location_id'] = locationId projects = mProject.searchProjects(self.db, terms, locationId, limit, offset) resources = mProjectResource.searchProjectResources(self.db, terms, locationId, limit, offset) ideas = mIdea.searchIdeas(self.db, terms, locationId, limit, offset) results = dict(projects = projects, resources = resources, ideas = ideas) self.template_data['results'] = dict(json = json.dumps(results), data = results) total_count = dict(projects = mProject.searchProjectsCount(self.db, terms, locationId), resources = mProjectResource.searchProjectResourcesCount(self.db, terms, locationId), ideas = mIdea.searchIdeasCount(self.db, terms, locationId)) self.template_data['total_count'] = dict(json = json.dumps(total_count), data = total_count) locations_list = mLocation.getSimpleLocationDictionary(self.db) self.template_data['locations'] = dict(json = json.dumps(locations_list), data = locations_list) locationData = self.getLocationData() self.template_data['locations_scored'] = json.dumps(locationData) self.template_data['max_score'] = locationData[0]['score'] return self.render('search')
def searchProjectsJSON(self): terms = self.request('terms').split(',') if self.request('terms') else [] limit = int(self.request('n')) if self.request('n') else 6 offset = int(self.request('offset')) if self.request('offset') else 0 locationId = self.request('location_id') return self.json({'results':mProject.searchProjects(self.db, terms, locationId, limit, offset), 'total_count':100})
def getSimilarProjectsJSON(self): locationId = self.request('location_id') keywords = self.request('keywords').split(',') if self.request('keywords') else [] projects = mProject.searchProjects(self.db, keywords, locationId) obj = dict(projects = projects) return self.json(obj)
def getRelatedProjects(self): ideaId = self.request('idea_id') limit = int(self.request('n_limit')) if self.request('n_limit') else 5 relatedProjects = [] citywideProjects = [] kw = [] isLocationOnlyMatch = False if (not ideaId): log.error("No idea id") else: idea = mIdea.Idea(self.db, ideaId) if (idea): kw = mKeywords.getKeywords(self.db, idea.description) if (idea.locationId != -1): relatedProjects = mProject.searchProjects( self.db, kw, idea.locationId, limit) if (len(relatedProjects) == 0): isLocationOnlyMatch = True relatedProjects = mProject.searchProjects( self.db, [], idea.locationId, limit) citywideProjects = mProject.searchProjects( self.db, kw, -1, limit) else: log.error("No idea found for id = %s" % ideaId) obj = dict(is_location_only_match=isLocationOnlyMatch, related=relatedProjects, citywide=citywideProjects, search_terms=','.join(kw)) return self.json(obj)