Set article to be displayed in reverse creation_date order

Fix a bug in navigation bar
Rework on archive (there is still a bug)
This commit is contained in:
Grégory Soutadé 2012-08-03 21:58:04 +02:00
parent 8bb10fc1e1
commit 4277d28c9d
4 changed files with 34 additions and 22 deletions

View File

@ -22,6 +22,7 @@ class Archive(Index):
filename = self.filename + '.html' filename = self.filename + '.html'
self.nb_pages = 0 self.nb_pages = 0
self.cur_page = 0 self.cur_page = 0
self.cur_article = 0
if len(articles) > self.articles_per_page: if len(articles) > self.articles_per_page:
self.nb_pages = len(articles) / self.articles_per_page self.nb_pages = len(articles) / self.articles_per_page
@ -37,15 +38,15 @@ class Archive(Index):
filename = self.filename + str(self.cur_page) + '.html' filename = self.filename + str(self.cur_page) + '.html'
dom = parse(src + '/_archive.html') dom = parse(src + '/_archive.html')
while os.path.exists(filename): while os.path.exists(filename):
self.addReport('Removing unused ' + filename)
os.unlink(filename)
filename = filename + '.gz'
if os.path.exists(filename):
self.addReport('Removing unused ' + filename) self.addReport('Removing unused ' + filename)
os.unlink(filename) os.unlink(filename)
filename = filename + '.gz' self.cur_page = self.cur_page + 1
if os.path.exists(filename): filename = output + '/archive/' + str(self.cur_year) + '/' + self.filename + str(self.cur_page) + '.html'
self.addReport('Removing unused ' + filename)
os.unlink(filename)
self.cur_page = self.cur_page + 1
filename = output + '/archive/' + str(self.cur_year) + '/' + self.filename + str(self.cur_page) + '.html'
def generate(self, blog, src, output): def generate(self, blog, src, output):
from dynastie.models import Article, Blog from dynastie.models import Article, Blog
@ -76,26 +77,32 @@ class Archive(Index):
else: else:
self.addError('No tag dyn:articles found') self.addError('No tag dyn:articles found')
articles = Article.objects.all() articles = Article.objects.all().order_by('creation_date')
if articles.count() != 0: if articles.count() != 0:
self.cur_year = articles[0].creation_date.year self.cur_year = int(articles[0].creation_date.year)
my_articles = [] my_articles = []
now = datetime.now() now = datetime.now()
for article in articles: nb_articles = len(articles)
for i in range(0, nb_articles):
if self.cur_year == now.year: if self.cur_year == now.year:
break break
if article.creation_date.year != self.cur_year: if i < nb_articles-1:
self.createArchives(src, output, dom, hooks, my_articles) if articles[i].creation_date.year != articles[i+1].creation_date.year:
self.cur_year = article.creation_date.year self.createArchives(src, output, dom, hooks, my_articles)
#print 'New year ' + str(self.cur_year) self.cur_year = int(articles[i+1].creation_date.year)
if self.cur_year == now.year: #print 'New year ' + str(self.cur_year)
continue my_articles = []
my_articles = [] if self.cur_year == int(now.year):
break
else:
my_articles.append(articles[i])
else: else:
my_articles.append(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)
if len(my_articles) != 0: if len(my_articles) != 0:
self.createArchives(src, output, dom, hooks, my_articles) self.createArchives(src, output, dom, hooks, my_articles)

View File

@ -54,7 +54,7 @@ class Category(Index):
self.cur_category = category self.cur_category = category
self.filename = category.name_slug self.filename = category.name_slug
filename = self.filename + '.html' filename = self.filename + '.html'
articles = Article.objects.filter(category__exact=category) articles = Article.objects.filter(category__exact=category).order_by('-creation_date')
self.nb_pages = 0 self.nb_pages = 0
self.cur_page = 0 self.cur_page = 0

View File

@ -30,6 +30,11 @@ class Index(DynastieGenerator):
if end > self.nb_pages+1: if end > self.nb_pages+1:
end = self.nb_pages+1 end = self.nb_pages+1
if (end-start) < 10:
start = end - 10
if start < 0:
start = 0
for i in range(start, end): for i in range(start, end):
if i == self.cur_page: if i == self.cur_page:
nav = nav + str(i+1) + ' ' nav = nav + str(i+1) + ' '
@ -120,7 +125,7 @@ class Index(DynastieGenerator):
now = datetime.datetime.now() now = datetime.datetime.now()
cur_year = now.year cur_year = now.year
articles = Article.objects.filter(creation_date__year=cur_year) articles = Article.objects.filter(creation_date__year=cur_year).order_by('-creation_date')
if articles.count() < self.articles_per_page: if articles.count() < self.articles_per_page:
articles = Article.objects.all()[:self.articles_per_page] articles = Article.objects.all()[:self.articles_per_page]

View File

@ -206,7 +206,7 @@ def view_blog(request, blog_id):
if b is None: if b is None:
raise Http404 raise Http404
articles = Article.objects.filter(blog=b) articles = Article.objects.filter(blog=b).order_by('-creation_date')
b = Blog.objects.get(pk=blog_id) b = Blog.objects.get(pk=blog_id)
form = BlogForm(instance=b) form = BlogForm(instance=b)
@ -237,7 +237,7 @@ def edit_blog(request, blog_id):
else: else:
form = BlogForm(instance=b) # An unbound form form = BlogForm(instance=b) # An unbound form
articles = Article.objects.filter(blog=b) articles = Article.objects.filter(blog=b).order_by('-creation_date')
c = {'blog' : b, 'articles' : articles, 'form' : form} c = {'blog' : b, 'articles' : articles, 'form' : form}
@ -351,7 +351,7 @@ def generate(request, blog_id):
b.create_paths() b.create_paths()
report = b.generate() report = b.generate()
articles = Article.objects.filter(blog=b) articles = Article.objects.filter(blog=b).order_by('-creation_date')
b = Blog.objects.get(pk=blog_id) b = Blog.objects.get(pk=blog_id)
form = BlogForm(instance=b) form = BlogForm(instance=b)