Added support adding generic metadata to contexts
Primitive open graph protocol support
This commit is contained in:
parent
0d12462345
commit
3aa8ecaf16
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env python2
|
||||||
|
import copy
|
||||||
|
|
||||||
|
from verdandi.mixins.templatemixin import TemplateMixin
|
||||||
|
|
||||||
|
class MetadataMixin(TemplateMixin):
|
||||||
|
|
||||||
|
metadata = {}
|
||||||
|
|
||||||
|
def get_metadata(self):
|
||||||
|
return copy.copy(self.metadata)
|
||||||
|
|
||||||
|
def get_context(self):
|
||||||
|
context = super(MetadataMixin, self).get_context()
|
||||||
|
metadata = self.get_metadata()
|
||||||
|
|
||||||
|
for key, value in metadata.items():
|
||||||
|
context['meta_%s' % key] = value
|
||||||
|
|
||||||
|
return context
|
|
@ -9,9 +9,10 @@ from verdandi.mixins.templatemixin import TemplateMixin
|
||||||
from verdandi.mixins.menuitemmixin import MenuItemMixin
|
from verdandi.mixins.menuitemmixin import MenuItemMixin
|
||||||
from verdandi.mixins.fileassetsmixin import FileAssetsMixin
|
from verdandi.mixins.fileassetsmixin import FileAssetsMixin
|
||||||
from verdandi.mixins.newsitemmixin import NewsItemMixin
|
from verdandi.mixins.newsitemmixin import NewsItemMixin
|
||||||
|
from verdandi.mixins.metadatamixin import MetadataMixin
|
||||||
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
||||||
|
|
||||||
class Gallery(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin):
|
class Gallery(MenuItemMixin, NewsItemMixin, MetadataMixin, TemplateMixin, FileAssetsMixin):
|
||||||
gallery_description_file = 'description.md'
|
gallery_description_file = 'description.md'
|
||||||
gallery_directory = 'gallery'
|
gallery_directory = 'gallery'
|
||||||
gallery_images_url = 'img/gallery'
|
gallery_images_url = 'img/gallery'
|
||||||
|
@ -26,6 +27,8 @@ class Gallery(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin):
|
||||||
|
|
||||||
template = "gallery.html"
|
template = "gallery.html"
|
||||||
|
|
||||||
|
metadata_description_len = 10
|
||||||
|
|
||||||
content_directory = CONTENT_DIRECTORY
|
content_directory = CONTENT_DIRECTORY
|
||||||
markdown_extensions = MARKDOWN_EXTENSIONS
|
markdown_extensions = MARKDOWN_EXTENSIONS
|
||||||
|
|
||||||
|
@ -70,6 +73,26 @@ class Gallery(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin):
|
||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
||||||
|
def get_metadata(self):
|
||||||
|
markdown_converter = markdown.Markdown(extensions = self.markdown_extensions)
|
||||||
|
|
||||||
|
metadata = super(Gallery, self).get_metadata()
|
||||||
|
lines = self.description['content'].split('\n')
|
||||||
|
elipsized_description = '\n'.join(lines[0:self.news_item_len])
|
||||||
|
elipsized_description = markdown_converter.convert(elipsized_description)
|
||||||
|
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
'url': "/%s" % self.url,
|
||||||
|
'title': self.description['title'],
|
||||||
|
'description' : elipsized_description
|
||||||
|
}
|
||||||
|
|
||||||
|
if 'image' in metadata:
|
||||||
|
meta['image'] = "/%s" % metadata['image']
|
||||||
|
|
||||||
|
return meta
|
||||||
|
|
||||||
|
|
||||||
def get_context(self):
|
def get_context(self):
|
||||||
context = super(Gallery,self).get_context()
|
context = super(Gallery,self).get_context()
|
||||||
|
|
|
@ -8,10 +8,11 @@ from dateutil import parser
|
||||||
from verdandi.mixins.templatemixin import TemplateMixin
|
from verdandi.mixins.templatemixin import TemplateMixin
|
||||||
from verdandi.mixins.menuitemmixin import MenuItemMixin
|
from verdandi.mixins.menuitemmixin import MenuItemMixin
|
||||||
from verdandi.mixins.fileassetsmixin import FileAssetsMixin
|
from verdandi.mixins.fileassetsmixin import FileAssetsMixin
|
||||||
|
from verdandi.mixins.metadatamixin import MetadataMixin
|
||||||
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
||||||
|
|
||||||
|
|
||||||
class NewsFeed(MenuItemMixin, TemplateMixin, FileAssetsMixin):
|
class NewsFeed(MenuItemMixin, MetadataMixin, TemplateMixin, FileAssetsMixin):
|
||||||
|
|
||||||
title = "News feed title"
|
title = "News feed title"
|
||||||
template = "newsfeed.html"
|
template = "newsfeed.html"
|
||||||
|
@ -25,7 +26,6 @@ class NewsFeed(MenuItemMixin, TemplateMixin, FileAssetsMixin):
|
||||||
|
|
||||||
items = []
|
items = []
|
||||||
|
|
||||||
|
|
||||||
def process_message(self, message):
|
def process_message(self, message):
|
||||||
other_messages = super(NewsFeed, self).process_message(message)
|
other_messages = super(NewsFeed, self).process_message(message)
|
||||||
|
|
||||||
|
@ -38,6 +38,23 @@ class NewsFeed(MenuItemMixin, TemplateMixin, FileAssetsMixin):
|
||||||
return other_messages
|
return other_messages
|
||||||
|
|
||||||
|
|
||||||
|
def get_metadata(self):
|
||||||
|
metadata = super(NewsFeed, self).get_metadata()
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
'url': "/%s" % self.url,
|
||||||
|
'title': self.title
|
||||||
|
}
|
||||||
|
|
||||||
|
if 'description' in metadata:
|
||||||
|
meta['description'] = metadata['description']
|
||||||
|
|
||||||
|
if 'image' in metadata:
|
||||||
|
meta['image'] = "/%s" % metadata['image']
|
||||||
|
|
||||||
|
return meta
|
||||||
|
|
||||||
|
|
||||||
def get_context(self):
|
def get_context(self):
|
||||||
context = super(NewsFeed,self).get_context()
|
context = super(NewsFeed,self).get_context()
|
||||||
context['title'] = self.title
|
context['title'] = self.title
|
||||||
|
|
|
@ -8,9 +8,10 @@ from verdandi.mixins.templatemixin import TemplateMixin
|
||||||
from verdandi.mixins.menuitemmixin import MenuItemMixin
|
from verdandi.mixins.menuitemmixin import MenuItemMixin
|
||||||
from verdandi.mixins.fileassetsmixin import FileAssetsMixin
|
from verdandi.mixins.fileassetsmixin import FileAssetsMixin
|
||||||
from verdandi.mixins.newsitemmixin import NewsItemMixin
|
from verdandi.mixins.newsitemmixin import NewsItemMixin
|
||||||
|
from verdandi.mixins.metadatamixin import MetadataMixin
|
||||||
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
||||||
|
|
||||||
class Page(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin):
|
class Page(MenuItemMixin, NewsItemMixin, MetadataMixin, TemplateMixin, FileAssetsMixin):
|
||||||
|
|
||||||
content_file = "content.md"
|
content_file = "content.md"
|
||||||
content_is_markdown = True
|
content_is_markdown = True
|
||||||
|
@ -19,6 +20,7 @@ class Page(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin):
|
||||||
markdown_extensions = MARKDOWN_EXTENSIONS
|
markdown_extensions = MARKDOWN_EXTENSIONS
|
||||||
|
|
||||||
news_item_len = 10
|
news_item_len = 10
|
||||||
|
metadata_description_len = 10
|
||||||
|
|
||||||
|
|
||||||
def process_message(self, message):
|
def process_message(self, message):
|
||||||
|
@ -45,6 +47,24 @@ class Page(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin):
|
||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
||||||
|
def get_metadata(self):
|
||||||
|
markdown_converter = markdown.Markdown(extensions = self.markdown_extensions)
|
||||||
|
|
||||||
|
metadata = super(Page, self).get_metadata()
|
||||||
|
lines = self.content['content'].split('\n')
|
||||||
|
elipsized_content = '\n'.join(lines[0:self.news_item_len])
|
||||||
|
elipsized_content = markdown_converter.convert(elipsized_content)
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
'url': "/%s" % self.url,
|
||||||
|
'title': self.content['title'],
|
||||||
|
'description' : elipsized_content
|
||||||
|
}
|
||||||
|
|
||||||
|
if 'image' in metadata:
|
||||||
|
meta['image'] = "/%s" % metadata['image']
|
||||||
|
|
||||||
|
return meta
|
||||||
|
|
||||||
def get_context(self):
|
def get_context(self):
|
||||||
context = super(Page,self).get_context()
|
context = super(Page,self).get_context()
|
||||||
|
|
Loading…
Reference in New Issue