def home(self, request): frontpage = ArticleHelper.get_frontpage( sections=('news', 'culture', 'opinion', 'sports', 'features', 'science'), max_days=7 ) trending_article = ArticleHelper.get_trending() elections = ArticleHelper.get_topic('AMS Elections').order_by('-published_at') frontpage_ids = [int(a.id) for a in frontpage[:2]] sections = ArticleHelper.get_frontpage_sections(exclude=frontpage_ids) breaking = ArticleHelper.get_breaking_news().first() # determine if user is viewing from mobile user_agent = get_user_agent(request) try: articles = { 'primary': frontpage[0], 'secondary': frontpage[1], 'thumbs': frontpage[2:4], 'bullets': frontpage[4:6], # Get random trending article 'trending': trending_article, 'breaking': breaking } except IndexError: raise Exception('Not enough articles to populate the frontpage!') popular = ArticleHelper.get_popular()[:5] blog = ArticleHelper.get_frontpage(section='blog', limit=5) title = '%s - UBC\'s official student newspaper' % self.SITE_TITLE context = { 'title': title, 'meta': { 'title': title, 'description': 'Weekly student newspaper of the University of British Columbia.', 'url': self.SITE_URL }, 'title': '%s - UBC\'s official student newspaper' % self.SITE_TITLE, 'articles': articles, 'sections': sections, 'popular': popular, 'breaking': breaking, 'blog': blog, 'day_of_week': datetime.now().weekday(), 'is_mobile': user_agent.is_mobile } return render(request, 'homepage/base.html', context)
def elections(self, request): articles = ArticleHelper.get_topic('AMS Elections').order_by('-published_at') topic = Topic.objects.filter(name='AMS Elections')[0] context = { 'meta': { 'title': '2017 AMS Elections' }, 'section': { 'name': '2017 AMS Elections', 'slug': 'elections', 'id': topic.id }, 'type': 'topic', 'articles': { 'first': articles[0], 'rest': articles[1:9] } } return render(request, 'section.html', context)