diff --git a/forms.py b/forms.py index 292c3f6..ba62ab2 100644 --- a/forms.py +++ b/forms.py @@ -5,13 +5,13 @@ class BlogForm(ModelForm): class Meta: model = Blog -class ArticleForm(ModelForm): +class PostForm(ModelForm): class Meta: - model = Article + model = Post exclude = ('title_slug', 'creation_date', 'author', 'blog', 'tags') def __init__(self, *args, **kwargs): - super(ArticleForm, self).__init__(*args, **kwargs) + super(PostForm, self).__init__(*args, **kwargs) self.fields['category'].choices = [(cat.id, cat.name) for cat in Category.objects.all()] class CategoryForm(ModelForm): diff --git a/generators/__init__.py b/generators/__init__.py index 9a1cf8c..bd07e83 100644 --- a/generators/__init__.py +++ b/generators/__init__.py @@ -1 +1 @@ -__all__ = ["generator", "index", "article", "category", "archive", "rss", "atom"] +__all__ = ["generator", "index", "post", "category", "archive", "rss", "atom"] diff --git a/generators/archive.py b/generators/archive.py index 5b8d3b0..35621a0 100644 --- a/generators/archive.py +++ b/generators/archive.py @@ -9,24 +9,24 @@ class Archive(Index): cur_page = 0 nb_pages = 0 - cur_article = 0 - articles_per_page = 0 + cur_post = 0 + posts_per_page = 0 filename = 'index' dirname = '' cur_year = 0 - def createArchive(self, articles, dom, root, node): + def createArchive(self, posts, dom, root, node): if node.hasAttribute('year'): self.replaceByText(dom, root, node, str(self.cur_year)) - def createArchives(self, src, output, dom, hooks, articles): + def createArchives(self, src, output, dom, hooks, posts): filename = self.filename + '.html' self.nb_pages = 0 self.cur_page = 0 - self.cur_article = 0 + self.cur_post = 0 - if len(articles) > self.articles_per_page: - self.nb_pages = self.computeNbPages(len(articles), self.articles_per_page) + if len(posts) > self.posts_per_page: + self.nb_pages = self.computeNbPages(len(posts), self.posts_per_page) self.dirname = '/archive/' + str(self.cur_year) @@ -36,7 +36,7 @@ class Archive(Index): while self.cur_page <= self.nb_pages: #print 'Generate ' + filename nodes = dom.getElementsByTagName("*") - nodes[0] = self.parse(src, hooks, articles, dom, nodes[0]) + nodes[0] = self.parse(src, hooks, posts, dom, nodes[0]) self.writeIfNotTheSame(output + self.dirname + '/' + filename, nodes[0]) self.cur_page = self.cur_page + 1 filename = self.filename + str(self.cur_page) + '.html' @@ -53,9 +53,9 @@ class Archive(Index): filename = output + self.dirname + '/' + self.filename + str(self.cur_page) + '.html' def generate(self, blog, src, output): - from dynastie.models import Article, Blog + from dynastie.models import Post, Blog - hooks = {'articles' : self.createArticles, + hooks = {'posts' : self.createPosts, 'navigation' : self.createNavigation, 'archive' : self.createArchive} @@ -72,47 +72,47 @@ class Archive(Index): if not os.path.exists(output + '/archive'): os.mkdir(output + '/archive') - article_nodes = dom.getElementsByTagNameNS(self.URI, "articles") - if not article_nodes is None: - if article_nodes[0].hasAttribute("limit"): - self.articles_per_page = int(article_nodes[0].getAttribute("limit")) + post_nodes = dom.getElementsByTagNameNS(self.URI, "posts") + if not post_nodes is None: + if post_nodes[0].hasAttribute("limit"): + self.posts_per_page = int(post_nodes[0].getAttribute("limit")) else: - self.articles_per_page = 5 + self.posts_per_page = 5 else: - self.addError('No tag dyn:articles found') + self.addError('No tag dyn:posts found') - articles = Article.objects.filter(published=True, front_page=True).order_by('creation_date') + posts = Post.objects.filter(published=True, front_page=True).order_by('creation_date') - if articles.count() != 0: - self.cur_year = int(articles[0].creation_date.year) + if posts.count() != 0: + self.cur_year = int(posts[0].creation_date.year) - my_articles = [] + my_post = [] now = datetime.now() - nb_articles = len(articles) - for i in range(0, nb_articles): + nb_post = len(posts) + for i in range(0, nb_post): if self.cur_year == now.year: break - if i < nb_articles-1: - if articles[i].creation_date.year != articles[i+1].creation_date.year: + if i < nb_post-1: + if posts[i].creation_date.year != posts[i+1].creation_date.year: dom = parse(src + '/_archive.html') - my_articles.reverse() - self.createArchives(src, output, dom, hooks, my_articles) - self.cur_year = int(articles[i+1].creation_date.year) + my_post.reverse() + self.createArchives(src, output, dom, hooks, my_post) + self.cur_year = int(posts[i+1].creation_date.year) #print 'New year ' + str(self.cur_year) - my_articles = [] + my_post = [] if self.cur_year == int(now.year): break else: - my_articles.append(articles[i]) + my_post.append(posts[i]) else: - # Last article - my_articles.append(article) - if nb_articles != 1 and articles[i].creation_date.year != articles[i-1].creation_date.year: - self.cur_year = int(articles[i].creation_date.year) + # Last post + my_post.append(post) + if nb_post != 1 and posts[i].creation_date.year != posts[i-1].creation_date.year: + self.cur_year = int(posts[i].creation_date.year) - if len(my_articles) != 0: - self.createArchives(src, output, dom, hooks, my_articles) + if len(my_post) != 0: + self.createArchives(src, output, dom, hooks, my_post) if not self.somethingWrote: self.addReport('Nothing changed') diff --git a/generators/article.py b/generators/article.py deleted file mode 100644 index 1eb59d3..0000000 --- a/generators/article.py +++ /dev/null @@ -1,51 +0,0 @@ -import os -from xml.dom.minidom import parse, parseString -from dynastie.generators.generator import DynastieGenerator -from dynastie.generators.index import Index -from django.db import models - -class Article(Index): - - def _createArticle(self, article, dom, article_elem, root): - self.createArticle(article, dom, article_elem, root) - article_nodes = dom.getElementsByTagNameNS(self.URI, "article") - article_elem = article_nodes[0] - article_elem.parentNode.removeChild(article_elem) - - def generate(self, blog, src, output): - from dynastie.models import Article, Blog - - hooks = {'article' : self._createArticle} - - if not os.path.exists(src + '/_article.html'): - self.addError('No _article.html found, exiting') - return self.report - - try: - dom = parse(src + '/_article.html') - except xml.dom.DOMException as e: - self.addError('Error parsing _article.html : ' + e) - return self.report - - if not os.path.exists(output + '/article'): - os.mkdir(output + '/article') - - articles = Article.objects.all() - - for article in articles: - #print 'Generate ' + filename - nodes = dom.getElementsByTagName("*") - nodes[0] = self.parse(src, hooks, article, dom, nodes[0]) - filename = output + '/article/' - filename = filename + article.creation_date.strftime("%Y") + '/' + article.creation_date.strftime("%m") + '/' - if not os.path.exists(filename): - os.makedirs(filename) - filename = filename + article.title_slug + '.html' - self.writeIfNotTheSame(filename, nodes[0]) - dom = parse(src + '/_article.html') - - if not self.somethingWrote: - self.addReport('Nothing changed') - - return self.report - diff --git a/generators/atom.py b/generators/atom.py index e81f14f..313f9c2 100644 --- a/generators/atom.py +++ b/generators/atom.py @@ -9,7 +9,7 @@ from django.db import models class Atom(RSS): def generate(self, blog, src, output): - from dynastie.models import Article, Blog + from dynastie.models import Post, Blog now = datetime.datetime.now() @@ -31,35 +31,35 @@ class Atom(RSS): self.appendElement(dom, root, 'generator', 'The Dynastie project', {'uri':'http://indefero.soutade.fr/p/dynastie', 'version':'0.1'}) self.appendElement(dom, root, 'link', '', {'rel':'self', 'type':'application/atom+xml', 'href':address + '/atom.xml'}) - articles = Article.objects.filter(published=True).order_by('-creation_date')[:10] + posts = Post.objects.filter(published=True).order_by('-creation_date')[:10] - for article in articles: + for post in posts: item = dom.createElement('entry') - self.appendElement(dom, item, 'title', article.title) - path = 'http://' + blog.name + article.getPath() + self.appendElement(dom, item, 'title', post.title) + path = 'http://' + blog.name + post.getPath() self.appendElement(dom, item, 'link', '', {'rel':'alternate', 'type':'text/html', 'href':path}) - creationDate = article.creation_date.strftime('%Y-%m-%dT%H:%M:%SZ') + creationDate = post.creation_date.strftime('%Y-%m-%dT%H:%M:%SZ') self.appendElement(dom, item, 'published', creationDate) self.appendElement(dom, item, 'updated', creationDate) self.appendElement(dom, item, 'id', path) author = dom.createElement('author') - self.appendElement(dom, author, 'name', article.author.first_name + ' ' + article.author.last_name) - self.appendElement(dom, author, 'email', article.author.email) + self.appendElement(dom, author, 'name', post.author.first_name + ' ' + post.author.last_name) + self.appendElement(dom, author, 'email', post.author.email) item.appendChild(author) - filename = blog.src_path + '/_articles/' + str(article.id) + filename = blog.src_path + '/_post/' + str(post.id) if not os.path.exists(filename): self.addError('File does not exists ' + filename) return f = open(filename, 'rb') - article_content = '' + post_content = '' f.close() - self.appendElement(dom, item, 'summary', article_content, {'type':'html'}) - self.appendElement(dom, item, 'content', article_content, {'type':'html'}) + self.appendElement(dom, item, 'summary', post_content, {'type':'html'}) + self.appendElement(dom, item, 'content', post_content, {'type':'html'}) root.appendChild(item) diff --git a/generators/category.py b/generators/category.py index cd61bb6..9bf3e6c 100644 --- a/generators/category.py +++ b/generators/category.py @@ -8,22 +8,22 @@ class Category(Index): cur_page = 0 nb_pages = 0 - cur_article = 0 - articles_per_page = 0 + cur_post = 0 + posts_per_page = 0 filename = 'index' dirname = '' cur_category = None - def createCategory(self, articles, dom, root, node): + def createCategory(self, posts, dom, root, node): if node.hasAttribute('name'): self.replaceByText(dom, root, node, self.cur_category.name) if node.hasAttribute('description'): self.replaceByText(dom, root, node, self.cur_category.description) def generate(self, blog, src, output): - from dynastie.models import Article, Blog, Category + from dynastie.models import Post, Blog, Category - hooks = {'articles' : self.createArticles, + hooks = {'posts' : self.createPosts, 'navigation' : self.createNavigation, 'category' : self.createCategory} @@ -40,30 +40,30 @@ class Category(Index): if not os.path.exists(output + '/category'): os.mkdir(output + '/category') - article_nodes = dom.getElementsByTagNameNS(self.URI, "articles") - if not article_nodes is None: - if article_nodes[0].hasAttribute("limit"): - self.articles_per_page = int(article_nodes[0].getAttribute("limit")) + post_nodes = dom.getElementsByTagNameNS(self.URI, "posts") + if not post_nodes is None: + if post_nodes[0].hasAttribute("limit"): + self.posts_per_page = int(post_nodes[0].getAttribute("limit")) else: - self.articles_per_page = 5 + self.posts_per_page = 5 else: - self.addError('No tag dyn:articles found') + self.addError('No tag dyn:posts found') categories = Category.objects.all() for category in categories: self.cur_category = category filename = self.filename + '.html' - articles = Article.objects.filter(category__exact=category, published=True).order_by('-creation_date') + posts = Post.objects.filter(category__exact=category, published=True).order_by('-creation_date') self.nb_pages = 0 self.cur_page = 0 - self.cur_article = 0 + self.cur_post = 0 self.dirname = '/category/' + category.name_slug - if articles.count() > self.articles_per_page: - self.nb_pages = self.computeNbPages(articles.count(), self.articles_per_page) + if posts.count() > self.posts_per_page: + self.nb_pages = self.computeNbPages(posts.count(), self.posts_per_page) if not os.path.exists(output + self.dirname): os.mkdir(output + self.dirname) @@ -72,7 +72,7 @@ class Category(Index): while self.cur_page <= self.nb_pages: #print 'Generate ' + filename nodes = dom.getElementsByTagName("*") - nodes[0] = self.parse(src, hooks, articles, dom, nodes[0]) + nodes[0] = self.parse(src, hooks, posts, dom, nodes[0]) self.writeIfNotTheSame(output + self.dirname + '/' + filename, nodes[0]) self.cur_page = self.cur_page + 1 filename = self.filename + str(self.cur_page) + '.html' diff --git a/generators/generator.py b/generators/generator.py index f5130d9..6cde8b8 100644 --- a/generators/generator.py +++ b/generators/generator.py @@ -66,8 +66,8 @@ class DynastieGenerator: def generate(self, blog, src, output): return - def computeNbPages(self, nb_articles, nb_articles_per_page): - res = math.ceil((nb_articles*1.0)/(nb_articles_per_page*1.0)) + def computeNbPages(self, nb_post, nb_post_per_page): + res = math.ceil((nb_post*1.0)/(nb_post_per_page*1.0)) return int(res) def writeIfNotTheSame(self, filename, node): @@ -142,20 +142,20 @@ class DynastieGenerator: new_node = dom.createTextNode(content) root.replaceChild(new_node, node) - def _parse(self, hooks, articles, dom, root): + def _parse(self, hooks, posts, dom, root): for node in root.childNodes: if node.prefix == 'dyn': if node.localName in hooks: - hooks[node.localName](articles, dom, root, node) + hooks[node.localName](posts, dom, root, node) if node.hasChildNodes(): - self._parse(hooks, articles, dom, node) + self._parse(hooks, posts, dom, node) return - def parse(self, src, hooks, articles, dom, root): + def parse(self, src, hooks, posts, dom, root): bases = dom.getElementsByTagNameNS(self.URI, 'base') if len(bases) == 0: - self._parse(hooks, articles, dom, root) + self._parse(hooks, posts, dom, root) return root if len(bases) != 1: @@ -206,6 +206,6 @@ class DynastieGenerator: root = dom2.firstChild - self.parse(src, hooks, articles, dom2, root) + self.parse(src, hooks, posts, dom2, root) return root diff --git a/generators/index.py b/generators/index.py index 77ad2b5..fae2b04 100644 --- a/generators/index.py +++ b/generators/index.py @@ -10,12 +10,12 @@ class Index(DynastieGenerator): cur_page = 0 nb_pages = 0 - cur_article = 0 - articles_per_page = 0 + cur_post = 0 + posts_per_page = 0 filename = 'index' dirname = '' - def createNavigation(self, articles, dom, root, node): + def createNavigation(self, posts, dom, root, node): if self.nb_pages == 0 or self.nb_pages == 1: return '' @@ -60,55 +60,55 @@ class Index(DynastieGenerator): new_node = new_dom.getElementsByTagName('div')[0] root.replaceChild(new_node.cloneNode(True), node) - def createArticle(self, article, dom, article_elem, root): + def createPost(self, post, dom, post_elem, root): values = {} - values['title'] = self.createLinkElem(dom, article.getPath(), article.title) - values['author'] = article.author.first_name + ' ' + article.author.last_name - values['date'] = article.creation_date.strftime("%A, %d %B %Y %H:%m") - values['article_content'] = '' + values['title'] = self.createLinkElem(dom, post.getPath(), post.title) + values['author'] = post.author.first_name + ' ' + post.author.last_name + values['date'] = post.creation_date.strftime("%A, %d %B %Y %H:%m") + values['post_content'] = '' - blog = article.blog + blog = post.blog blog.create_paths() - filename = blog.src_path + '/_articles/' + str(article.id) + filename = blog.src_path + '/_post/' + str(post.id) if not os.path.exists(filename): self.addError('File does not exists ' + filename) return f = open(filename, 'rb') - article_content = f.read() + post_content = f.read() f.close() - self.simpleTransform(values, dom, article_elem, root) + self.simpleTransform(values, dom, post_elem, root) - content_nodes = article_elem.getElementsByTagName("div") - post_transform = ('article_content') + content_nodes = post_elem.getElementsByTagName("div") + post_transform = ('post_content') for content_node in content_nodes: the_class = content_node.getAttribute('class') if not the_class in post_transform: continue - if the_class == 'article_content': - new_node = dom.createTextNode(article_content) + if the_class == 'post_content': + new_node = dom.createTextNode(post_content) content_node.appendChild(new_node) - def createArticles(self, articles, dom, root, node): - articles_elem = self.createElement(dom, 'articles') - for i in range(0, self.articles_per_page): - article_elem = self.createElement(dom, 'article') - if len(articles) > self.cur_article: - self.createArticle(articles[self.cur_article], dom, article_elem, node) + def createPosts(self, posts, dom, root, node): + posts_elem = self.createElement(dom, 'posts') + for i in range(0, self.posts_per_page): + post_elem = self.createElement(dom, 'post') + if len(posts) > self.cur_post: + self.createPost(posts[self.cur_post], dom, post_elem, node) else: - article_elem = self.createElement(dom, '', 'No articles yet') - articles_elem.appendChild(article_elem) + post_elem = self.createElement(dom, '', 'No posts yet') + posts_elem.appendChild(post_elem) - self.cur_article = self.cur_article + 1 - if self.cur_article == len(articles): + self.cur_post = self.cur_post + 1 + if self.cur_post == len(posts): break - root.replaceChild(articles_elem, node) + root.replaceChild(posts_elem, node) - def createRecents(self, articles, dom, root, node): - if self.cur_article == len(articles): + def createRecents(self, posts, dom, root, node): + if self.cur_post == len(posts): root.removeChild(node) return @@ -121,22 +121,22 @@ class Index(DynastieGenerator): recents_elem.appendChild(child.cloneNode(True)) list_elem = dom.createElement('ul') for i in range(0, nb_recents): - article_elem = dom.createElement('li') - if self.cur_article+i < len(articles): - article = articles[self.cur_article+i] - link_elem = self.createLinkElem(dom, article.getPath(), article.title) - article_elem.appendChild(link_elem) + post_elem = dom.createElement('li') + if self.cur_post+i < len(posts): + post = posts[self.cur_post+i] + link_elem = self.createLinkElem(dom, post.getPath(), post.title) + post_elem.appendChild(link_elem) else: break - list_elem.appendChild(article_elem) + list_elem.appendChild(post_elem) recents_elem.appendChild(list_elem) root.replaceChild(recents_elem, node) def generate(self, blog, src, output): - from dynastie.models import Article, Blog + from dynastie.models import Post, Blog - hooks = {'articles' : self.createArticles, + hooks = {'posts' : self.createPosts, 'navigation' : self.createNavigation, 'recents' : self.createRecents} @@ -150,31 +150,31 @@ class Index(DynastieGenerator): self.addError('Error parsing _index.html : ' + e) return self.report - article_nodes = dom.getElementsByTagNameNS(self.URI, "articles") + post_nodes = dom.getElementsByTagNameNS(self.URI, "posts") - if not article_nodes is None: - if article_nodes[0].hasAttribute("limit"): - self.articles_per_page = int(article_nodes[0].getAttribute("limit")) + if not post_nodes is None: + if post_nodes[0].hasAttribute("limit"): + self.posts_per_page = int(post_nodes[0].getAttribute("limit")) else: - self.articles_per_page = 5 + self.posts_per_page = 5 else: - self.addError('No tag dyn:articles found') + self.addError('No tag dyn:posts found') now = datetime.datetime.now() cur_year = now.year - articles = Article.objects.filter(creation_date__year=cur_year, published=True, front_page=True).order_by('-creation_date') + posts = Post.objects.filter(creation_date__year=cur_year, published=True, front_page=True).order_by('-creation_date') - if articles.count() < self.articles_per_page: - articles = Article.objects.all()[:self.articles_per_page] + if posts.count() < self.posts_per_page: + posts = Post.objects.all()[:self.posts_per_page] - if articles.count() > self.articles_per_page: - self.nb_pages = self.computeNbPages(articles.count(), self.articles_per_page) + if posts.count() > self.posts_per_page: + self.nb_pages = self.computeNbPages(posts.count(), self.posts_per_page) filename = 'index.html' while self.cur_page <= self.nb_pages: #print 'Generate ' + filename nodes = dom.getElementsByTagName("*") - nodes[0] = self.parse(src, hooks, articles, dom, nodes[0]) + nodes[0] = self.parse(src, hooks, posts, dom, nodes[0]) self.writeIfNotTheSame(output + '/' + filename, nodes[0]) self.cur_page = self.cur_page + 1 filename = 'index' + str(self.cur_page) + '.html' diff --git a/generators/post.py b/generators/post.py new file mode 100644 index 0000000..63a9487 --- /dev/null +++ b/generators/post.py @@ -0,0 +1,51 @@ +import os +from xml.dom.minidom import parse, parseString +from dynastie.generators.generator import DynastieGenerator +from dynastie.generators.index import Index +from django.db import models + +class Post(Index): + + def _createPost(self, post, dom, post_elem, root): + self.createPost(post, dom, post_elem, root) + post_nodes = dom.getElementsByTagNameNS(self.URI, "post") + post_elem = post_nodes[0] + post_elem.parentNode.removeChild(post_elem) + + def generate(self, blog, src, output): + from dynastie.models import Post, Blog + + hooks = {'post' : self._createPost} + + if not os.path.exists(src + '/_post.html'): + self.addError('No _post.html found, exiting') + return self.report + + try: + dom = parse(src + '/_post.html') + except xml.dom.DOMException as e: + self.addError('Error parsing _post.html : ' + e) + return self.report + + if not os.path.exists(output + '/post'): + os.mkdir(output + '/post') + + posts = Post.objects.all() + + for post in posts: + #print 'Generate ' + filename + nodes = dom.getElementsByTagName("*") + nodes[0] = self.parse(src, hooks, post, dom, nodes[0]) + filename = output + '/post/' + filename = filename + post.creation_date.strftime("%Y") + '/' + post.creation_date.strftime("%m") + '/' + if not os.path.exists(filename): + os.makedirs(filename) + filename = filename + post.title_slug + '.html' + self.writeIfNotTheSame(filename, nodes[0]) + dom = parse(src + '/_post.html') + + if not self.somethingWrote: + self.addReport('Nothing changed') + + return self.report + diff --git a/generators/rss.py b/generators/rss.py index 34b06f2..9576283 100644 --- a/generators/rss.py +++ b/generators/rss.py @@ -18,7 +18,7 @@ class RSS(DynastieGenerator): return elem def generate(self, blog, src, output): - from dynastie.models import Article, Blog + from dynastie.models import Post, Blog now = datetime.datetime.now() @@ -40,33 +40,33 @@ class RSS(DynastieGenerator): self.appendElement(dom, channel, 'generator', 'Dynastie') self.appendElement(dom, channel, 'language', 'en-gb') - articles = Article.objects.filter(published=True).order_by('-creation_date')[:10] + posts = Post.objects.filter(published=True).order_by('-creation_date')[:10] - for article in articles: + for post in posts: item = dom.createElement('item') - self.appendElement(dom, item, 'title', article.title) - path = 'http://' + blog.name + article.getPath() + self.appendElement(dom, item, 'title', post.title) + path = 'http://' + blog.name + post.getPath() self.appendElement(dom, item, 'link', path) self.appendElement(dom, item, 'guid', path) - filename = blog.src_path + '/_articles/' + str(article.id) + filename = blog.src_path + '/_post/' + str(post.id) if not os.path.exists(filename): self.addError('File does not exists ' + filename) return f = open(filename, 'rb') - article_content = f.read() + post_content = f.read() f.close() - self.appendElement(dom, item, 'description', '') + self.appendElement(dom, item, 'description', '') - author = article.author.email - author += ' (' + article.author.first_name + ' ' + article.author.last_name + ')' + author = post.author.email + author += ' (' + post.author.first_name + ' ' + post.author.last_name + ')' self.appendElement(dom, item, 'author', author) - self.appendElement(dom, item, 'category', article.category.name) + self.appendElement(dom, item, 'category', post.category.name) - creationDate = article.creation_date.strftime('%a, %d %b %Y %H:%M:%S') + creationDate = post.creation_date.strftime('%a, %d %b %Y %H:%M:%S') self.appendElement(dom, item, 'pubDate', creationDate) channel.appendChild(item) diff --git a/models.py b/models.py index 5aa0a45..b23f7c7 100644 --- a/models.py +++ b/models.py @@ -52,10 +52,13 @@ class Blog(models.Model): for line in f: if line.startswith("#"): continue - self.engines.append(globals()[line.strip()]) + engine = line.strip() + if not engine in globals(): + print 'Engine ' + engine + ' doesn\'t exists' + self.engines.append(globals()[engine]) f.close() else: - self.engines.append(globals()['article']) + self.engines.append(globals()['post']) self.engines.append(globals()['index']) self.engines.append(globals()['category']) self.engines.append(globals()['archive']) @@ -104,7 +107,7 @@ class Blog(models.Model): exts = ('css', 'html', 'htm', 'xhtml', 'js') found = False for ext in exts: - if srname.endswith(ext): + if srcname.endswith(ext): found = True break if found: @@ -179,7 +182,7 @@ class Category(models.Model): class Tag(models.Model): name = models.CharField(max_length=255, unique=True) -class Article(models.Model): +class Post(models.Model): title = models.CharField(max_length=255) title_slug = models.CharField(max_length=255) category = models.ForeignKey(Category, blank=True, null=True, on_delete=models.SET_NULL) @@ -193,7 +196,7 @@ class Article(models.Model): blog = models.ForeignKey(Blog) def getPath(self): - filename = '/article/' + filename = '/post/' filename = filename + self.creation_date.strftime("%Y") + '/' + self.creation_date.strftime("%m") + '/' filename = filename + self.title_slug + '.html' return filename @@ -208,16 +211,16 @@ class Article(models.Model): def save(self): self.slugify() - super(Article, self).save() + super(Post, self).save() - def createArticle(self, content): + def createPost(self, content): b = self.blog b.create_paths() output = b.src_path - if not os.path.exists(output + '/_articles'): - os.mkdir(output + '/_articles') + if not os.path.exists(output + '/_post'): + os.mkdir(output + '/_post') - filename = output + '/_articles/' + str(self.pk) + filename = output + '/_post/' + str(self.pk) if os.path.exists(filename): os.unlink(filename) f = open(filename, 'wb') @@ -229,7 +232,7 @@ class Article(models.Model): b.create_paths() output = b.src_path - filename = output + '/_articles/' + str(self.pk) + filename = output + '/_post/' + str(self.pk) if os.path.exists(filename): os.unlink(filename) @@ -240,18 +243,18 @@ class Article(models.Model): if os.path.exists(filename): os.unlink(filename) - filename = output + '/article/' + filename = output + '/post/' filename = filename + self.creation_date.strftime("%Y") + '/' + self.creation_date.strftime("%m") + '/' if len(os.listdir(filename)) == 0: os.rmdir(filename) - filename = output + '/article/' + filename = output + '/post/' filename = filename + self.creation_date.strftime("%Y") + '/' if len(os.listdir(filename)) == 0: os.rmdir(filename) class Comment(models.Model): - article = models.ForeignKey(Article) + post = models.ForeignKey(Post) parent = models.ForeignKey('Comment') date = models.DateField(max_length=255) author = models.CharField(max_length=255) @@ -266,6 +269,6 @@ def delete_blog_signal(sender, **kwargs): def delete_blog_signal(sender, **kwargs): sender.remove() -@receiver(post_delete, sender=Article) -def delete_article_signal(sender, **kwargs): +@receiver(post_delete, sender=Post) +def delete_post_signal(sender, **kwargs): sender.remove() diff --git a/templates/add_article.html b/templates/add_article.html index e2e6bca..600f0b1 100644 --- a/templates/add_article.html +++ b/templates/add_article.html @@ -27,7 +27,7 @@ tinyMCE.init({ {% endblock %} {% block content %} -
{% csrf_token %} +{% csrf_token %} {{ form.as_p }}

diff --git a/templates/edit_article.html b/templates/edit_article.html index b03f13c..f8775b1 100644 --- a/templates/edit_article.html +++ b/templates/edit_article.html @@ -27,7 +27,7 @@ tinyMCE.init({ {% endblock %} {% block content %} -{% csrf_token %} +{% csrf_token %} {{ form.as_p }} diff --git a/templates/generate.html b/templates/generate.html index 1b0d759..ed6d008 100644 --- a/templates/generate.html +++ b/templates/generate.html @@ -9,7 +9,7 @@
{% endif %}

-Add an article Generate blog
+Add an post Generate blog
{% if report|length == 0 %} Any engine selected

{% else %} @@ -18,13 +18,13 @@

{% endautoescape %} {% endif %} -{% if articles|length == 0 %} +{% if posts|length == 0 %}

-Any article available

+Any post available

{% else %} -{% for article in articles %} - +{% for post in posts %} + {% endfor %} {% endif %}
{{ article.id }}{{ article.title }}{{ article.category.name }}{{ article.creation_date }}{{ article.published }}{{ article.front_page }}Delete
{{ post.id }}{{ post.title }}{{ post.category.name }}{{ post.creation_date }}{{ post.published }}{{ post.front_page }}Delete
diff --git a/templates/view_blog.html b/templates/view_blog.html index 62efc76..5be985f 100644 --- a/templates/view_blog.html +++ b/templates/view_blog.html @@ -9,15 +9,15 @@ {% endif %}

-Add an article Generate blog +Add an post Generate blog

-{% if articles|length == 0 %} +{% if posts|length == 0 %}

-Any article available

+Any post available

{% else %} -{% for article in articles %} - +{% for post in posts %} + {% endfor %} {% endif %}
{{ article.id }}{{ article.title }}{{ article.category.name }}{{ article.creation_date }}{{ article.published }}{{ article.front_page }}Delete
{{ post.id }}{{ post.title }}{{ post.category.name }}{{ post.creation_date }}{{ post.published }}{{ post.front_page }}Delete
diff --git a/urls.py b/urls.py index 36c2fa9..6a988c3 100644 --- a/urls.py +++ b/urls.py @@ -21,9 +21,9 @@ urlpatterns = patterns('', url(r'^blog/add$', 'dynastie.views.add_blog', name='add_blog'), url(r'^blog/(\d+)$', 'dynastie.views.view_blog', name='view_blog'), url(r'^blog/edit/(\d+)$', 'dynastie.views.edit_blog', name='edit_blog'), - url(r'^article/add/(\d+)$', 'dynastie.views.add_article', name='add_article'), - url(r'^article/edit/(\d+)$', 'dynastie.views.edit_article', name='edit_article'), - url(r'^article/delete/(\d+)$','dynastie.views.delete_article', name='delete_article'), + url(r'^post/add/(\d+)$', 'dynastie.views.add_post', name='add_post'), + url(r'^post/edit/(\d+)$', 'dynastie.views.edit_post', name='edit_post'), + url(r'^post/delete/(\d+)$','dynastie.views.delete_post', name='delete_post'), url(r'^generate/(\d+)$', 'dynastie.views.generate', name='generate'), # url(r'^dynastie/', include('dynastie.foo.urls')), diff --git a/views.py b/views.py index 1b08d0b..3a5f6b6 100644 --- a/views.py +++ b/views.py @@ -209,11 +209,11 @@ def view_blog(request, blog_id): if b is None: raise Http404 - articles = Article.objects.filter(blog=b).order_by('-creation_date') + posts = Post.objects.filter(blog=b).order_by('-creation_date') b = Blog.objects.get(pk=blog_id) form = BlogForm(instance=b) - c = {'blog' : b, 'articles' : articles, 'form' : form} + c = {'blog' : b, 'posts' : posts, 'form' : form} return render(request, 'templates/view_blog.html', c) @@ -240,14 +240,14 @@ def edit_blog(request, blog_id): else: form = BlogForm(instance=b) # An unbound form - articles = Article.objects.filter(blog=b).order_by('-creation_date') + posts = Post.objects.filter(blog=b).order_by('-creation_date') - c = {'blog' : b, 'articles' : articles, 'form' : form} + c = {'blog' : b, 'posts' : posts, 'form' : form} return render(request, 'templates/view_blog.html', c) @login_required -def add_article(request, blog_id): +def add_post(request, blog_id): if not request.user.is_superuser: b = Blog.objects.filter(id=blog_id).filter(writers=request.user.id)[0] @@ -256,50 +256,50 @@ def add_article(request, blog_id): if request.method == 'POST': # If the form has been submitted... if 'add' in request.POST: - article = Article(blog=Blog.objects.get(pk=blog_id), author=User.objects.get(pk=request.user.id), creation_date=datetime.now()) + post = Post(blog=Blog.objects.get(pk=blog_id), author=User.objects.get(pk=request.user.id), creation_date=datetime.now()) content = request.POST['content'] # del request.POST['content'] - form = ArticleForm(request.POST, instance=article) # A form bound to the POST data + form = PostForm(request.POST, instance=post) # A form bound to the POST data if form.is_valid(): # All validation rules pass form = form.save() - form.createArticle(content) + form.createPost(content) # Process the data in form.cleaned_data # ... return HttpResponseRedirect('/blog/' + blog_id) # Redirect after POST else: return HttpResponseRedirect('/blog/' + blog_id) # Redirect after POST else: - form = ArticleForm() # An unbound form + form = PostForm() # An unbound form - return render(request, 'add_article.html', { + return render(request, 'add_post.html', { 'form': form, 'blog_id' : blog_id }) @login_required -def edit_article(request, article_id): - article = Article.objects.get(pk=article_id) +def edit_post(request, post_id): + post = Post.objects.get(pk=post_id) - if article is None: + if post is None: raise Http404 - title = article.title + title = post.title - blog_id = article.blog.id + blog_id = post.blog.id if not request.user.is_superuser: - b = Blog.objects.filter(pk=article.blog.id).filter(writers=request.user.id)[0] + b = Blog.objects.filter(pk=post.blog.id).filter(writers=request.user.id)[0] if b is None: raise Http404 else: - b = Blog.objects.get(pk=article.blog.id) + b = Blog.objects.get(pk=post.blog.id) if request.method == 'POST': # If the form has been submitted... if 'edit' in request.POST: - form = ArticleForm(request.POST, instance=article) # A form bound to the POST data + form = PostForm(request.POST, instance=post) # A form bound to the POST data if form.is_valid(): # All validation rules pass if title != form.title: - article.remove() + post.remove() form.save() # Process the data in form.cleaned_data # ... @@ -308,36 +308,36 @@ def edit_article(request, article_id): if 'cancel' in request.POST: return HttpResponseRedirect('/blog/' + str(blog_id)) # Redirect after POST else: - form = ArticleForm(instance=article) # An unbound form + form = PostForm(instance=post) # An unbound form b.create_paths() - filename = b.src_path + '/_articles/' + str(article.pk) + filename = b.src_path + '/_post/' + str(post.pk) if os.path.exists(filename): f = open(filename, 'rb') content = f.read() f.close() else: - content = 'Empty article' + content = 'Empty post' - return render(request, 'edit_article.html', { - 'form': form, 'article_id' : article_id, 'content' : content + return render(request, 'edit_post.html', { + 'form': form, 'post_id' : post_id, 'content' : content }) @login_required -def delete_article(request, article_id): - article = Article.objects.get(pk=article_id) +def delete_post(request, post_id): + post = Post.objects.get(pk=post_id) - if article is None: + if post is None: raise Http404 - b = Blog.objects.filter(writers=request.user.id).filter(pk=article.blog.pk) + b = Blog.objects.filter(writers=request.user.id).filter(pk=post.blog.pk) if b is None: raise Http404 - blog_id = article.blog.pk + blog_id = post.blog.pk - article.delete() + post.delete() return HttpResponseRedirect('/blog/' + str(blog_id)) @@ -354,10 +354,10 @@ def generate(request, blog_id): b.create_paths() report = b.generate() - articles = Article.objects.filter(blog=b).order_by('-creation_date') + posts = Post.objects.filter(blog=b).order_by('-creation_date') b = Blog.objects.get(pk=blog_id) form = BlogForm(instance=b) - c = {'blog' : b, 'articles' : articles, 'form' : form, 'report': report} + c = {'blog' : b, 'posts' : posts, 'form' : form, 'report': report} return render(request, 'generate.html', c)