parent
843463b548
commit
1a760e43a9
|
@ -2,5 +2,6 @@
|
||||||
22.1.2016 17:00
|
22.1.2016 17:00
|
||||||
|
|
||||||
First test
|
First test
|
||||||
==========
|
|
||||||
|
|
||||||
This is a first test newsitem
|
This is a first test newsitem
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
22.1.2016 17:00
|
22.1.2016 17:00
|
||||||
|
|
||||||
Second test
|
Second test
|
||||||
==========
|
|
||||||
|
|
||||||
This is an other test newsitem
|
This is an other test newsitem
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/usr/bin/env python2
|
||||||
|
from verdandi.mixins.messagemixin import MessageMixin
|
||||||
|
|
||||||
|
class NewsItemMixin(MessageMixin):
|
||||||
|
news_item_title = "Not the news item you need ..."
|
||||||
|
news_item_content = "... but the news item you deserve."
|
||||||
|
news_item_creation_time = None
|
||||||
|
news_item_edit_time = None
|
||||||
|
news_item_url = '/index.html'
|
||||||
|
|
||||||
|
news_feed_id = 'news'
|
||||||
|
|
||||||
|
|
||||||
|
def get_news_item(self):
|
||||||
|
item = {
|
||||||
|
'title': self.news_item_titlenews_item_title,
|
||||||
|
'content': self.news_item_content,
|
||||||
|
'url' : self.news_item_url,
|
||||||
|
'creation_time': self.news_item_creation_time,
|
||||||
|
'edit_time': self.news_item_edit_time
|
||||||
|
}
|
||||||
|
|
||||||
|
return item
|
||||||
|
|
||||||
|
|
||||||
|
def process_message(self, message):
|
||||||
|
other_messages = super(NewsItemMixin, self).process_message(message)
|
||||||
|
|
||||||
|
if message == None:
|
||||||
|
other_messages += [{
|
||||||
|
'type' : 'news_feed_item',
|
||||||
|
'feed_id' : self.news_feed_id,
|
||||||
|
'item' : self.get_news_item()
|
||||||
|
}]
|
||||||
|
|
||||||
|
return other_messages
|
|
@ -47,4 +47,6 @@ class TemplateMixin(object):
|
||||||
result['creation_time'] = parser.parse(first_line)
|
result['creation_time'] = parser.parse(first_line)
|
||||||
result['edit_time'] = parser.parse(second_line)
|
result['edit_time'] = parser.parse(second_line)
|
||||||
|
|
||||||
|
content_file.close()
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import os
|
import os
|
||||||
import markdown
|
import markdown
|
||||||
|
|
||||||
from datetime import datetime
|
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
|
||||||
|
@ -29,8 +29,9 @@ class NewsFeed(MenuItemMixin, TemplateMixin, AssetsMixin):
|
||||||
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)
|
||||||
|
|
||||||
if message != None and message['type'] == 'news_feed_item' and message['feed_id'] == news_feed_id:
|
if message != None and message['type'] == 'news_feed_item':
|
||||||
self.items += message['item']
|
if message['feed_id'] == self.news_feed_id:
|
||||||
|
self.items += [message['item']]
|
||||||
|
|
||||||
return other_messages
|
return other_messages
|
||||||
|
|
||||||
|
@ -45,7 +46,8 @@ class NewsFeed(MenuItemMixin, TemplateMixin, AssetsMixin):
|
||||||
rendered_items = []
|
rendered_items = []
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
item['content'] = markdown_converter.convert(item['content'])
|
item['content'] = markdown_converter.convert(item['content'])
|
||||||
rendered_items.append(item)
|
item['url'] = self.url
|
||||||
|
rendered_items += [item]
|
||||||
|
|
||||||
item_directory = os.path.join(self.content_directory, self.news_item_directory)
|
item_directory = os.path.join(self.content_directory, self.news_item_directory)
|
||||||
for news_file in os.listdir(item_directory):
|
for news_file in os.listdir(item_directory):
|
||||||
|
@ -55,22 +57,44 @@ class NewsFeed(MenuItemMixin, TemplateMixin, AssetsMixin):
|
||||||
|
|
||||||
full_path = os.path.join(item_directory, news_file)
|
full_path = os.path.join(item_directory, news_file)
|
||||||
|
|
||||||
item = self.read_content_file(full_path)
|
item = self.read_news_item_file(full_path)
|
||||||
|
|
||||||
item['content'] = markdown_converter.convert(item['content'])
|
item['content'] = markdown_converter.convert(item['content'])
|
||||||
|
|
||||||
print item
|
rendered_items += [item]
|
||||||
|
|
||||||
rendered_items.append(item)
|
|
||||||
|
|
||||||
print rendered_items
|
|
||||||
|
|
||||||
rendered_items = sorted(rendered_items, key=lambda item: item['creation_time'], reverse=True)
|
rendered_items = sorted(rendered_items, key=lambda item: item['creation_time'], reverse=True)
|
||||||
context['items'] = rendered_items
|
context['items'] = rendered_items
|
||||||
|
|
||||||
|
print rendered_items
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
def read_news_item_file(self, path):
|
||||||
|
item_file = open(path, 'r')
|
||||||
|
|
||||||
|
result = {}
|
||||||
|
|
||||||
|
first_line = item_file.readline()
|
||||||
|
second_line = item_file.readline()
|
||||||
|
|
||||||
|
third_line = item_file.readline().strip()
|
||||||
|
while third_line == '':
|
||||||
|
third_line = item_file.readline().strip()
|
||||||
|
|
||||||
|
result['title'] = third_line
|
||||||
|
|
||||||
|
result['content'] = item_file.read()
|
||||||
|
|
||||||
|
result['creation_time'] = parser.parse(first_line)
|
||||||
|
result['edit_time'] = parser.parse(second_line)
|
||||||
|
|
||||||
|
item_file.close()
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def render_files(self, context, output_directory, jinja_env):
|
def render_files(self, context, output_directory, jinja_env):
|
||||||
self.render_to_file(self.feed_template, self.feed_url, context, output_directory, jinja_env)
|
self.render_to_file(self.feed_template, self.feed_url, context, output_directory, jinja_env)
|
||||||
super(NewsFeed, self).render_files(context, output_directory, jinja_env)
|
super(NewsFeed, self).render_files(context, output_directory, jinja_env)
|
||||||
|
|
|
@ -7,9 +7,10 @@ import markdown
|
||||||
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.assetsmixin import AssetsMixin
|
from verdandi.mixins.assetsmixin import AssetsMixin
|
||||||
|
from verdandi.mixins.newsitemmixin import NewsItemMixin
|
||||||
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS
|
||||||
|
|
||||||
class Page(MenuItemMixin, TemplateMixin, AssetsMixin):
|
class Page(MenuItemMixin, NewsItemMixin, TemplateMixin, AssetsMixin):
|
||||||
|
|
||||||
title = "Page Title"
|
title = "Page Title"
|
||||||
content_file = "content.md"
|
content_file = "content.md"
|
||||||
|
@ -17,20 +18,44 @@ class Page(MenuItemMixin, TemplateMixin, AssetsMixin):
|
||||||
|
|
||||||
markdown_extensions = MARKDOWN_EXTENSIONS
|
markdown_extensions = MARKDOWN_EXTENSIONS
|
||||||
|
|
||||||
|
news_item_len = 10
|
||||||
|
|
||||||
|
|
||||||
|
def process_message(self, message):
|
||||||
|
if message == None:
|
||||||
|
full_path = os.path.join(self.content_directory, self.content_file)
|
||||||
|
self.content = self.read_content_file(full_path)
|
||||||
|
|
||||||
|
other_messages = super(Page, self).process_message(message)
|
||||||
|
|
||||||
|
return other_messages
|
||||||
|
|
||||||
|
|
||||||
|
def get_news_item(self):
|
||||||
|
lines = self.content['content'].split('\n')
|
||||||
|
elipsized_content = '\n'.join(lines[0:self.news_item_len])
|
||||||
|
|
||||||
|
item = {
|
||||||
|
'title': self.title,
|
||||||
|
'content': elipsized_content,
|
||||||
|
'creation_time': self.content['creation_time'],
|
||||||
|
'edit_time': self.content['edit_time'],
|
||||||
|
'url' : self.url
|
||||||
|
}
|
||||||
|
|
||||||
|
return item
|
||||||
|
|
||||||
|
|
||||||
def get_context(self):
|
def get_context(self):
|
||||||
context = super(Page,self).get_context()
|
context = super(Page,self).get_context()
|
||||||
context['page_title'] = self.title
|
context['page_title'] = self.title
|
||||||
|
|
||||||
full_path = os.path.join(self.content_directory, self.content_file)
|
|
||||||
markdown_converter = markdown.Markdown(extensions = self.markdown_extensions)
|
markdown_converter = markdown.Markdown(extensions = self.markdown_extensions)
|
||||||
|
|
||||||
content = self.read_content_file(full_path)
|
context['content_creation_time'] = self.content['creation_time']
|
||||||
|
context['content_edit_time'] = self.content['edit_time']
|
||||||
|
|
||||||
context['content_creation_time'] = content['creation_time']
|
markdown_source = self.content['content']
|
||||||
context['content_edit_time'] = content['edit_time']
|
|
||||||
|
|
||||||
markdown_source = content['content']
|
|
||||||
context['content'] = markdown_converter.convert(markdown_source)
|
context['content'] = markdown_converter.convert(markdown_source)
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
Loading…
Reference in New Issue