Exemple #1
0
	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))
Exemple #2
0
	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))
Exemple #3
0
    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))
Exemple #6
0
	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))
Exemple #7
0
	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))