def get(self, entries="4"): template = jinja_environment.get_template("recipe-box.html") headers.cors(self.response) last_60_days = date.today() - timedelta(days=60) query = { "tag" : "tone/recipes", "show-fields" : "headline,thumbnail", "page-size" : 50, "from-date" : last_60_days.isoformat(), } content = content_api.search(query) if not content: webapp2.abort(500, "Failed to read recipes list") content_data = json.loads(content) recipes = content_data.get("response", {}).get("results", []) recipes = [r for r in recipes if "thumbnail" in r.get("fields", {})] random.shuffle(recipes) data = { "recipes" : recipes[0:int(entries)], } self.response.out.write(template.render(data))
def get(self): headers.cors(self.response) template = jinja_environment.get_template('components/recaps-promo-rhs.v2.html') template_values = {'shows' : []} basic_query = { 'show-fields' : 'headline,byline,trailText,thumbnail', } for tag, name in [ ('tv-and-radio/series/lena-dunham-s-girls-episode-by-episode', 'Girls'), ('tv-and-radio/series/house-of-cards-episode-recaps', 'House of Cards'), ('tv-and-radio/series/looking-episode-by-episode', 'Looking'), ('tv-and-radio/series/game-of-thrones-episode-by-episode', 'Game of Thrones'),]: query = {'tag' : tag} query.update(basic_query) response = content_api.search(query) if response: data = json.loads(response) recaps = [r for r in data.get('response', {}).get('results', [])][:2] if recaps: show_url = "http://www.theguardian.com/%s" % tag template_values['shows'].append(Show(name, show_url, recaps)) self.response.out.write(template.render(template_values))
def get(self, path): gdb = graph() path_elements = path.split("/") query = 'MATCH (n) WHERE n.path = "{path}" RETURN n'.format( path=path_elements[0]) result = nodes.find_final_node(path_elements[1:], gdb.cypher.execute_one(query)) if not result: webapp2.abort(404, "Cannot find that node") template = jinja_environment.get_template('data.html') template_values = { 'request_path': self.request.path, 'path': path, 'results': result, 'related_nodes': nodes.related_nodes(result), 'data': result.properties, 'schema_data': dict([(key[6:].lower(), value) for key, value in result.properties.items() if key.startswith('schema')]), 'links_here': nodes.incoming(result), 'interviews': content_api.read_interviews(result.properties) } if 'tagQuery' in result.properties: search_content = content_api.search( {'tag': result.properties['tagQuery']}) json_data = json.loads(search_content) #logging.info(json_data) template_values['news_content'] = content_api.read_results( json_data) if 'contributorId' in result.properties: template_values[ 'contributor_content'] = content_api.read_contributor_content( result.properties['contributorId']) if 'schemaDeathDate' in result.properties: template_values['obituaries'] = content_api.read_obits( result.properties) self.response.out.write(template.render(template_values))
def get(self, size="6"): template = jinja_environment.get_template("boxes/more-cartoons.html") data = {} if not "path" in self.request.params: webapp2.abort(400, 'No path supplied') path = self.request.params["path"] content = content_api.read(path, {"show-tags" : "contributor"}) content_data = json.loads(content) authors = [tag for tag in content_data["response"]["content"]["tags"] if tag["type"] == "contributor"] if not authors: webapp2.abort(500, "No contributors identified") first_author = authors[0] data['contributor'] = first_author last_60_days = date.today() - timedelta(days=60) query = { "tag" : "type/cartoon,{author_id}".format(author_id=first_author["id"]), "show-fields" : "headline,thumbnail", "page-size" : 50, "from-date" : last_60_days.isoformat(), } cartoon_search_results = content_api.search(query) if not cartoon_search_results: webapp2.abort(500, "Failed to find more cartoons") cartoon_search_data = json.loads(cartoon_search_results) cartoon_list = cartoon_search_data.get("response", {}).get("results", []) cartoons = [c for c in cartoon_list if "thumbnail" in c.get("fields", {})] data["cartoons"] = cartoons[:int(size)] headers.set_cors_headers(self.response) self.response.out.write(template.render(data))
def get(self, entries=4): template = jinja_environment.get_template("boxes/series.html") template_values = {} headers.set_cors_headers(self.response) if not "path" in self.request.params: webapp2.abort(400, "No path specified") path = self.request.params["path"] content = content_api.read(path, {"show-tags" : "series"}) content_data = json.loads(content) series_tags = [t for t in content_data.get("response", {}).get("content", {}).get("tags",[]) if t.get("type", "") == "series"] if not len(series_tags) == 1: if series_tags: logging.warning("Content did not have a single series tag: %s" % path) for tag in series_tags: logging.debug(tag) webapp2.abort(500, "Single series tag not available") series_tag = series_tags[0] #logging.info(series_tag) query = { "tag" : series_tag["id"], "show-fields" : "headline,thumbnail", "page-size" : 50, } content = content_api.search(query) if not content: abort(404, "No content found for series tag") content_data = json.loads(content) items = content_data.get("response", {}).get("results", []) valid_items = [i for i in items if "thumbnail" in i.get("fields", {}) and i['id'] != path[1:]] random.shuffle(valid_items) template_values["series_name"] = series_tag['webTitle'] template_values["series_content"] = valid_items[:entries] self.response.out.write(template.render(template_values))
def get(self, entries="4"): template = jinja_environment.get_template("recipe-box.html") headers.cors(self.response) if not "path" in self.request.params: webapp2.abort(400, "No path specified") content = content_api.read(self.request.params["path"], {"show-tags" : "contributor"}) content_data = json.loads(content) authors = [tag for tag in content_data["response"]["content"]["tags"] if tag["type"] == "contributor"] if not authors: webapp2.abort(500, "No contributors identified") first_author = authors[0] last_60_days = date.today() - timedelta(days=60) query = { "tag" : "tone/recipes,{author_id}".format(author_id=first_author["id"]), "show-fields" : "headline,thumbnail", "page-size" : 50, "from-date" : last_60_days.isoformat(), } content = content_api.search(query) if not content: webapp2.abort(500, "Failed to read recipes list") content_data = json.loads(content) recipes = content_data.get("response", {}).get("results", []) recipes = [r for r in recipes if "thumbnail" in r.get("fields", {})] random.shuffle(recipes) data = { "author" : authors[0], "recipes" : recipes[0:int(entries)], } self.response.out.write(template.render(data))
def get(self, path): gdb = graph() path_elements = path.split("/") query = 'MATCH (n) WHERE n.path = "{path}" RETURN n'.format(path=path_elements[0]) result = nodes.find_final_node(path_elements[1:], gdb.cypher.execute_one(query)) if not result: webapp2.abort(404, "Cannot find that node") template = jinja_environment.get_template('data.html') template_values = {'request_path': self.request.path, 'path': path, 'results': result, 'related_nodes': nodes.related_nodes(result), 'data': result.properties, 'schema_data': dict([(key[6:].lower(), value) for key, value in result.properties.items() if key.startswith('schema')]), 'links_here' : nodes.incoming(result), 'interviews' : content_api.read_interviews(result.properties) } if 'tagQuery' in result.properties: search_content = content_api.search({'tag': result.properties['tagQuery']}) json_data = json.loads(search_content) #logging.info(json_data) template_values['news_content'] = content_api.read_results(json_data) if 'contributorId' in result.properties: template_values['contributor_content'] = content_api.read_contributor_content(result.properties['contributorId']) if 'schemaDeathDate' in result.properties: template_values['obituaries'] = content_api.read_obits(result.properties) self.response.out.write(template.render(template_values))
def grab_reviews(genre_tag): search_params = { 'tag' : "tone/reviews,%s" % genre_tag, } search_params.update(params) return trails_from_results(content_api.search(search_params))