def get(self, path="film"): logging.info(path) path_mapping = immutable.make_dict({ 'film': container.for_id('6d84cd8d-d159-4e9a-ba2f-8852528d2d03'), 'uk/opinion/v1': container.for_id('uk/commentisfree/regular-stories'), 'film/v1': ds.FilmTodayLatestDataSource(mr.client), }) if not path in path_mapping.keys(): webapp2.abort(404, "Path {0} not mapped to a datasource".format(path)) return stories_data_source = path_mapping[path] data_sources = {'stories': stories_data_source} priority_list = [('stories', 1)] template_data = {} retrieved_data = handlers.EmailTemplate.fetch_all(data_sources) trail_block = deduplication.build_unique_trailblocks(retrieved_data,priority_list) stories = trail_block.get('stories') headlines = [read_headline(s) for s in stories] if headlines: headline = headlines[0] template_data['headline'] = headline template = handlers.jinja_environment.get_template('headline.html') self.response.out.write(template.render(template_data))
def get(self, path="film"): logging.info(path) path_mapping = immutable.make_dict({ 'film': container.for_id('6d84cd8d-d159-4e9a-ba2f-8852528d2d03'), 'uk/opinion/v1': container.for_id('uk/commentisfree/regular-stories'), 'film/v1': ds.FilmTodayLatestDataSource(mr.client), }) if not path in path_mapping.keys(): webapp2.abort(404, "Path {0} not mapped to a datasource".format(path)) return stories_data_source = path_mapping[path] data_sources = {'stories': stories_data_source} priority_list = [('stories', 1)] template_data = {} retrieved_data = handlers.EmailTemplate.fetch_all(data_sources) trail_block = deduplication.build_unique_trailblocks( retrieved_data, priority_list) stories = trail_block.get('stories') headlines = [read_headline(s) for s in stories] if headlines: headline = headlines[0] template_data['headline'] = headline template = handlers.jinja_environment.get_template('headline.html') self.response.out.write(template.render(template_data))
class FilmToday(handlers.EmailTemplate): recognized_versions = ['v1', 'v2', 'v3', 'v4'] ad_tag = 'email-film-today' ad_config = immutable.make_dict({'leaderboard': 'Top'}) film_today_latest = immutable.make_dict( {'film_today_latest': ds.FilmTodayLatestDataSource(client)}) film_front = immutable.make_dict({ 'film_front': container.for_id('6d84cd8d-d159-4e9a-ba2f-8852528d2d03') }) data_sources = immutable.make_dict({ 'v1': film_today_latest, 'v2': film_front, 'v3': film_today_latest, 'v4': film_front, }) priority_list = immutable.make_dict({ 'v1': [('film_today_latest', 10)], 'v2': [('film_front', 10)], 'v3': [('film_today_latest', 7)], 'v4': [('film_front', 7)], }) template_names = immutable.make_dict({ 'v1': 'culture/film-today/v1', 'v2': 'culture/film-today/v2', 'v3': 'culture/film-today/v3', 'v4': 'culture/film-today/v4', })
class CommentIsFree(handlers.EmailTemplate): recognized_versions = immutable.make_list('v1', 'v2', 'v3') ad_tag = 'email-speakers-corner' ad_config = {'leaderboard': 'Top'} ophan_client = OphanClient(mr.ophan_base_url, mr.ophan_key) most_shared_data_source = ds.MostSharedDataSource( most_shared_fetcher=MostSharedFetcher(ophan_client, section='commentisfree'), multi_content_data_source=ds.MultiContentDataSource( client=client, name='most_shared'), shared_count_interpolator=ds.MostSharedCountInterpolator()) discussion_client = DiscussionClient(mr.discussion_base_url) most_commented_data_source = ds.MostCommentedDataSource( discussion_fetcher=DiscussionFetcher(discussion_client, 'commentisfree'), multi_content_data_source=ds.MultiContentDataSource( client=client, name='most_commented'), comment_count_interpolator=ds.CommentCountInterpolator()) data_sources = immutable.make_dict({ 'v1': { 'uk_opinion_front': container.for_id('uk/commentisfree/regular-stories'), 'cif_cartoon': ds.CommentIsFreeCartoonDataSource(client), }, 'v3': { 'cif_most_shared': most_shared_data_source, 'cif_cartoon': ds.CommentIsFreeCartoonDataSource(client), }, 'v2': { 'cif_most_commented': most_commented_data_source, 'cif_cartoon': ds.CommentIsFreeCartoonDataSource(client), } }) priority_list = { 'v3': [('cif_cartoon', 1), ('cif_most_shared', 5)], 'v2': [('cif_cartoon', 1), ('cif_most_commented', 5)], 'v1': [ ('uk_opinion_front', 10), ('cif_cartoon', 1), ], } template_names = immutable.make_dict({ 'v3': 'comment-is-free/v3', 'v2': 'comment-is-free/v2', 'v1': 'comment-is-free/v1', })
class Opinion(handlers.EmailTemplate): recognized_versions = ['v1', 'v2', 'v3'] most_shared_data_source = ds.MostSharedDataSource( most_shared_fetcher=MostSharedFetcher(ophan_client, section='commentisfree', country='us'), multi_content_data_source=ds.MultiContentDataSource( client=mr.client, name='most_shared'), shared_count_interpolator=ds.MostSharedCountInterpolator(), result_decorator=partial(add_comment_counts, discussion_client)) latest_us_opinion = dss.general.ItemDataSource('us/commentisfree', production_office='us') data_sources = immutable.make_dict({ 'v1': { 'cif_most_shared': most_shared_data_source, }, 'v2': { 'cif_most_shared': most_shared_data_source, 'us_opinion': container.for_id('us-alpha/contributors/feature-stories') }, 'v3': { 'cif_most_shared': most_shared_data_source, 'latest_us_opinion': latest_us_opinion, } }) priority_list = immutable.make_dict({ 'v1': [ ('cif_most_shared', 5), ], 'v2': [ ('us_opinion', 3), ('cif_most_shared', 5), ], 'v3': [ ('cif_most_shared', 2), ('latest_us_opinion', 3), ] }) template_names = immutable.make_dict({ 'v1': 'us/opinion/v1', 'v2': 'us/opinion/v2', 'v3': 'us/opinion/v3', })
class Bookmarks(handlers.EmailTemplate): recognized_versions = immutable.make_list('v1', 'v2') ad_tag = 'email-bookmarks' ad_config = immutable.make_dict({ 'leaderboard': 'Top', 'leaderboard2': 'Bottom' }) base_data_sources = immutable.make_dict({ 'books_picks': dss.culture.BooksEditorsPicks(client), 'book_reviews': dss.culture.BookReviews(client), 'books_blog': dss.culture.BooksBlog(client), 'book_podcasts': dss.culture.BookPodcasts(client), 'books_most_viewed': dss.culture.BooksMostViewed(client), 'how_to_draw': dss.culture.HowToDraw(client), }) data_sources = immutable.make_dict({ 'v1': base_data_sources, 'v2': base_data_sources.using(talking_points=container.for_id( 'c04946d0-6483-4b29-ad3c-37bd2e2058c8')), }) priority_list = immutable.make_dict({ 'v1': immutable.make_list(('books_picks', 5), ('books_most_viewed', 3), ('book_reviews', 3), ('books_blog', 3), ('book_podcasts', 1), ('how_to_draw', 1)), 'v2': immutable.make_list(('books_picks', 5), ('books_most_viewed', 3), ('book_reviews', 3), ('talking_points', 6), ('book_podcasts', 1), ('how_to_draw', 1)), }) template_names = immutable.make_dict({ 'v1': 'culture/bookmarks/v1', 'v2': 'culture/bookmarks/v2', })
class Politics(handlers.EmailTemplate): recognized_versions = immutable.make_list('v1', 'v2', 'v3', 'v4') cache_bust = False ad_tag = 'email-australian-politics' ad_config = {} data_sources = immutable.make_dict({ 'v1': { 'politics_latest': au.AustralianPoliticsDataSource(client), 'politics_comment': au.AusCommentIsFreeDataSource(clientAUS), 'politics_video': au.AustralianPoliticsVideoDataSource(client) }, 'v2': { 'headlines': container.for_id('au-alpha/news/regular-stories', sort_function=sorts.au.politics_first, additional_capi_params=immutable.make_dict( {"show-tags": "keyword"})), 'politics_comment': au.AusCommentIsFreeDataSource(clientAUS), 'politics_video': au.AustralianPoliticsVideoDataSource(client), }, 'v3': { 'politics_latest': au.AustralianPoliticsDataSource(client), 'politics_most_popular': dss.mostPopular.mostPopularByTag( client, ophan_client, 'australia-news/australian-politics'), 'politics_comment': au.AusCommentIsFreeDataSource(clientAUS), 'politics_video': au.AustralianPoliticsVideoDataSource(client) }, 'v4': { 'politics_latest': au.AustralianPoliticsDataSource(client), 'politics_most_popular': dss.mostPopular.mostPopularByTag( client, ophan_client, 'australia-news/australian-politics'), 'politics_comment': au.AusCommentIsFreeDataSourceLatest(clientAUS), 'politics_video': au.AustralianPoliticsVideoDataSource(client) } }) priority_list = { 'v1': [('politics_comment', 1), ('politics_video', 1), ('politics_latest', 4)], 'v2': [ ('headlines', 4), ('politics_comment', 1), ('politics_video', 1), ], 'v3': [ ('politics_latest', 4), ('politics_most_popular', 4), ('politics_comment', 1), ('politics_video', 1), ], 'v4': [ ('politics_latest', 4), ('politics_most_popular', 4), ('politics_comment', 1), ('politics_video', 1), ] } template_names = immutable.make_dict({ 'v1': 'au/politics/v1', 'v2': 'au/politics/v2', 'v3': 'au/politics/v3', 'v4': 'au/politics/v3' })
class DailyEmail(handlers.EmailTemplate): recognized_versions = ['v1', 'v1-register', 'india', 'v2015', 'nhs', 'categories'] ad_tag = 'email-guardian-today' ad_config = { 'leaderboard_v1': 'Top', 'leaderboard_v2': 'Bottom' } cache_bust=False base_data_sources = immutable.make_dict({ 'business': ds.BusinessDataSource(client), 'technology': tech_data.TechnologyDataSource(client), 'travel': ds.TravelDataSource(client), 'lifeandstyle': ds.LifeAndStyleDataSource(client), 'sport': ds.SportDataSource(client), 'comment': ds.CommentIsFreeDataSource(client), 'culture': ds.CultureDataSource(client), 'top_stories': ds.TopStoriesDataSource(client), 'eye_witness': ds.EyeWitnessDataSource(client), 'most_viewed': ds.MostViewedDataSource(client), }) data_sources = immutable.make_dict({ 'v1': base_data_sources, 'v1-register': base_data_sources, 'india': base_data_sources.using( india_recent = ds.IndiaDataSource(client), ), 'v2015': base_data_sources, 'nhs': base_data_sources.using( nhs_special = container.for_id('346f91dc-60a5-41f1-a78e-513f6f379cec'), top_stories = container.for_id('uk-alpha/news/regular-stories') ), 'categories': base_data_sources.using( breaking = container.for_front('uk', 'breaking'), canonical = container.for_front('uk', 'canonical'), special = container.for_front('uk', 'special'), ), }) base_priorities = immutable.make_list(('top_stories', 6), ('most_viewed', 6), ('sport', 3), ('comment', 3), ('culture', 3), ('business', 2), ('technology', 2), ('travel', 2), ('lifeandstyle', 2), ('eye_witness', 1)) priority_list = immutable.make_dict({ 'v1': base_priorities, 'v1-register': base_priorities, 'india': [('top_stories', 6), ('india_recent', 5), ('most_viewed', 6), ('sport', 3), ('comment', 3), ('culture', 3), ('business', 2), ('technology', 2), ('travel', 2), ('lifeandstyle', 2), ('eye_witness', 1)], 'v2015': base_priorities, 'nhs': base_priorities.cons(('nhs_special', 2)), 'categories': immutable.make_list( ('breaking', 5), ('canonical', 6), ('special', 1), ).concat(base_priorities.without(('top_stories', 6))), }) template_names = immutable.make_dict({ 'v1': 'uk/daily/v1', 'v1-register': 'uk/daily/v1-register', 'india': 'uk/daily/india', 'v2015': 'uk/daily/v2015', 'nhs': 'uk/daily/nhs', 'categories': 'uk/daily/categories', }) def exclude_from_deduplication(self): return immutable.make_list('eye_witness')