from collections import namedtuple from project.common.views import CustomTemplate, MarkdownView ProjectDetails = namedtuple('ProjectDetails', ['title', 'image']) PROJECT_DETAILS = { 'hipchat-emoticons-for-all': ProjectDetails('Hipchat Emoticons Plugin', 'https://hipchat-magnolia-cdn.atlassian.com/assets/img/hipchat/hipchat_og_image.jpg'), 'attack-on-blocks': ProjectDetails('Attack on Blocks Game', 'https://image.freepik.com/free-vector/space-invaders-game_62147502273.jpg') } class AllView(CustomTemplate): template_name = 'projects/all.html' class ProjectView(MarkdownView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) try: details = PROJECT_DETAILS[kwargs['project']] context['html_title'] = details.title context['page_title'] = details.title context['header_image'] = details.image except: context['html_title'] = kwargs['project'] context['page_title'] = kwargs['project'] return context def dispatch(self, request, *args, **kwargs): self.markdown = 'projects/{0}.md'.format(kwargs['project']) return super().dispatch(request, *args, **kwargs)