From a3015ba8429a09878ed6c35d7c7c76a882de7dcf Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 15:52:18 -0600 Subject: Override default sitemap.xml template The Django one uses the spaceless tag, which isn't all that useful when we are gzipping the response anyway. Remove it to make generation a tad faster. Signed-off-by: Dan McGee --- templates/sitemaps/sitemap.xml | 9 +++++++++ urls.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 templates/sitemaps/sitemap.xml diff --git a/templates/sitemaps/sitemap.xml b/templates/sitemaps/sitemap.xml new file mode 100644 index 00000000..50a95237 --- /dev/null +++ b/templates/sitemaps/sitemap.xml @@ -0,0 +1,9 @@ + + +{% for url in urlset %} +{{ url.location }} +{% if url.lastmod %}{{ url.lastmod|date:"Y-m-d" }}{% endif %} +{% if url.changefreq %}{{ url.changefreq }}{% endif %} +{% if url.priority %}{{ url.priority }}{% endif %} +{% endfor %} + diff --git a/urls.py b/urls.py index 518e88e7..2d174012 100644 --- a/urls.py +++ b/urls.py @@ -81,7 +81,7 @@ urlpatterns += patterns('', {'sitemaps': our_sitemaps, 'sitemap_url_name': 'sitemaps'}), (r'^sitemap-(?P
.+)\.xml$', cache_page(1831)(sitemap_views.sitemap), - {'sitemaps': our_sitemaps}, 'sitemaps'), + {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml'}, 'sitemaps'), ) # Authentication / Admin -- cgit v1.2.3 From 4c5b478543184ea395e0e692d3bcf666fb7513ad Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 15:58:26 -0600 Subject: Convert sitemap.xml template to Jinja2 Signed-off-by: Dan McGee --- templates/sitemaps/sitemap.xml | 9 --------- templates/sitemaps/sitemap.xml.jinja | 9 +++++++++ urls.py | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) delete mode 100644 templates/sitemaps/sitemap.xml create mode 100644 templates/sitemaps/sitemap.xml.jinja diff --git a/templates/sitemaps/sitemap.xml b/templates/sitemaps/sitemap.xml deleted file mode 100644 index 50a95237..00000000 --- a/templates/sitemaps/sitemap.xml +++ /dev/null @@ -1,9 +0,0 @@ - - -{% for url in urlset %} -{{ url.location }} -{% if url.lastmod %}{{ url.lastmod|date:"Y-m-d" }}{% endif %} -{% if url.changefreq %}{{ url.changefreq }}{% endif %} -{% if url.priority %}{{ url.priority }}{% endif %} -{% endfor %} - diff --git a/templates/sitemaps/sitemap.xml.jinja b/templates/sitemaps/sitemap.xml.jinja new file mode 100644 index 00000000..0808a7de --- /dev/null +++ b/templates/sitemaps/sitemap.xml.jinja @@ -0,0 +1,9 @@ + + +{% for url in urlset %} +{{ url.location }} +{% if url.lastmod %}{{ url.lastmod|date("Y-m-d") }}{% endif %} +{% if url.changefreq %}{{ url.changefreq }}{% endif %} +{% if url.priority %}{{ url.priority }}{% endif %} +{% endfor %} + diff --git a/urls.py b/urls.py index 2d174012..6d896b3c 100644 --- a/urls.py +++ b/urls.py @@ -81,7 +81,7 @@ urlpatterns += patterns('', {'sitemaps': our_sitemaps, 'sitemap_url_name': 'sitemaps'}), (r'^sitemap-(?P
.+)\.xml$', cache_page(1831)(sitemap_views.sitemap), - {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml'}, 'sitemaps'), + {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml.jinja'}, 'sitemaps'), ) # Authentication / Admin -- cgit v1.2.3 From 96a7614285325b693434f3fd011238000d75926d Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 16:31:38 -0600 Subject: Add a news-specific sitemap This follows the spec at https://support.google.com/news/publisher/answer/74288?hl=en#tagdefinitions Signed-off-by: Dan McGee --- sitemaps.py | 7 +++++++ templates/sitemaps/news_sitemap.xml.jinja | 14 ++++++++++++++ urls.py | 9 ++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 templates/sitemaps/news_sitemap.xml.jinja diff --git a/sitemaps.py b/sitemaps.py index eb4e05d9..fb81357e 100644 --- a/sitemaps.py +++ b/sitemaps.py @@ -98,6 +98,13 @@ class NewsSitemap(Sitemap): return 'yearly' +class RecentNewsSitemap(NewsSitemap): + def items(self): + now = datetime.utcnow().replace(tzinfo=utc) + cutoff = now - timedelta(days=30) + return super(RecentNewsSitemap, self).items().filter(postdate__gte=cutoff) + + class ReleasesSitemap(Sitemap): changefreq = "monthly" diff --git a/templates/sitemaps/news_sitemap.xml.jinja b/templates/sitemaps/news_sitemap.xml.jinja new file mode 100644 index 00000000..97dd17b5 --- /dev/null +++ b/templates/sitemaps/news_sitemap.xml.jinja @@ -0,0 +1,14 @@ + + +{% for url in urlset %} +{{ url.location }} +{% if url.lastmod %}{{ url.lastmod|date("Y-m-d") }}{% endif %} +{% if url.changefreq %}{{ url.changefreq }}{% endif %} +{% if url.priority %}{{ url.priority }}{% endif %} + + Arch Linux Newsen + {% if url.item.postdate %}{{ url.item.postdate|date("c") }}{% endif %} + {% if url.item.title %}{{ url.item.title }}{% endif %} + +{% endfor %} + diff --git a/urls.py b/urls.py index 6d896b3c..c35baedf 100644 --- a/urls.py +++ b/urls.py @@ -18,6 +18,8 @@ our_sitemaps = { 'releases': sitemaps.ReleasesSitemap, } +news_sitemaps = { 'news': sitemaps.RecentNewsSitemap } + urlpatterns = [] # Public pages @@ -81,7 +83,12 @@ urlpatterns += patterns('', {'sitemaps': our_sitemaps, 'sitemap_url_name': 'sitemaps'}), (r'^sitemap-(?P
.+)\.xml$', cache_page(1831)(sitemap_views.sitemap), - {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml.jinja'}, 'sitemaps'), + {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml.jinja'}, + 'sitemaps'), + (r'^news-sitemap\.xml$', + cache_page(1831)(sitemap_views.sitemap), + {'sitemaps': news_sitemaps, 'template_name': 'sitemaps/news_sitemap.xml.jinja'}, + 'news-sitemap'), ) # Authentication / Admin -- cgit v1.2.3 From 88a457f1c8ae057278f1a7cadb6c163183484019 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 19:14:32 -0600 Subject: Minor news listing tweaks Signed-off-by: Dan McGee --- news/urls.py | 3 +-- templates/news/list.html | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/news/urls.py b/news/urls.py index 0eec6d86..c13722d4 100644 --- a/news/urls.py +++ b/news/urls.py @@ -5,8 +5,7 @@ from .views import (NewsDetailView, NewsListView, urlpatterns = patterns('news.views', - (r'^$', - NewsListView.as_view(), {}, 'news-list'), + (r'^$', NewsListView.as_view(), {}, 'news-list'), (r'^preview/$', 'preview'), # old news URLs, permanent redirect view so we don't break all links diff --git a/templates/news/list.html b/templates/news/list.html index 4acbc7e9..71cd3d02 100644 --- a/templates/news/list.html +++ b/templates/news/list.html @@ -10,7 +10,7 @@ {% block content %}
-

News Archives

+

Arch Linux News Archives

{% if perms.news.add_news %}
    @@ -54,6 +54,5 @@ {% include "news/paginator.html" %} -
{% endblock %} -- cgit v1.2.3 From 327bd4cfc599dbeddd501afd5221a1d2ff7eee08 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 19:15:35 -0600 Subject: Paginate the todolist listing page Signed-off-by: Dan McGee --- sitestatic/archweb.css | 11 +++++++++++ templates/todolists/list.html | 7 ++++++- todolists/urls.py | 6 +++--- todolists/views.py | 13 ++++++++----- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/sitestatic/archweb.css b/sitestatic/archweb.css index edabcfb7..cd46e4c0 100644 --- a/sitestatic/archweb.css +++ b/sitestatic/archweb.css @@ -655,6 +655,17 @@ div.news-article .article-info { width: 75%; } +/* todolists: list */ +.todolist-nav { + float: right; + margin-top: -2.2em; +} + + .todolist-nav .prev, + .todolist-nav .next { + margin: 0 1em; + } + /* donate: donor list */ #donor-list ul { width: 100%; diff --git a/templates/todolists/list.html b/templates/todolists/list.html index 7f0368de..983a49f0 100644 --- a/templates/todolists/list.html +++ b/templates/todolists/list.html @@ -16,7 +16,10 @@

Todo lists are used by the developers when a rebuild of a set of packages is needed. This is common when a library has a version bump, during a toolchain rebuild, or a general cleanup of packages in the - repositories. The progress can be tracked here.

+ repositories. The progress can be tracked here, and completed todo lists + can be browsed as well.

+ + {% include "todolists/paginator.html" %} @@ -46,6 +49,8 @@ {% endfor %}
+ + {% include "todolists/paginator.html" %} {% endblock %} diff --git a/todolists/urls.py b/todolists/urls.py index 6617d7dd..ed065f50 100644 --- a/todolists/urls.py +++ b/todolists/urls.py @@ -1,11 +1,11 @@ from django.conf.urls import patterns from django.contrib.auth.decorators import permission_required -from .views import (view_redirect, view, todolist_list, add, edit, flag, - list_pkgbases, DeleteTodolist) +from .views import (view_redirect, view, add, edit, flag, + list_pkgbases, DeleteTodolist, TodolistListView) urlpatterns = patterns('', - (r'^$', todolist_list), + (r'^$', TodolistListView.as_view(), {}, 'todolist-list'), # old todolists URLs, permanent redirect view so we don't break all links (r'^(?P\d+)/$', view_redirect), diff --git a/todolists/views.py b/todolists/views.py index c37c13f5..c781a562 100644 --- a/todolists/views.py +++ b/todolists/views.py @@ -7,7 +7,7 @@ from django.shortcuts import (get_list_or_404, get_object_or_404, redirect, render) from django.db import transaction from django.views.decorators.cache import never_cache -from django.views.generic import DeleteView +from django.views.generic import DeleteView, ListView from django.template import Context, loader from django.utils.timezone import now @@ -91,10 +91,13 @@ def list_pkgbases(request, slug, svn_root): return HttpResponse('\n'.join(pkgbases), content_type='text/plain') -def todolist_list(request): - incomplete_only = request.user.is_anonymous() - lists = get_annotated_todolists(incomplete_only) - return render(request, 'todolists/list.html', {'lists': lists}) +class TodolistListView(ListView): + context_object_name = "lists" + template_name = "todolists/list.html" + paginate_by = 50 + + def get_queryset(self): + return get_annotated_todolists() @never_cache -- cgit v1.2.3 From b1aa075652f89efa4f1af9d62c214e93fd453001 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 19:26:51 -0600 Subject: Add a todolists sitemap Signed-off-by: Dan McGee --- sitemaps.py | 22 +++++++++++++++++++++- urls.py | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/sitemaps.py b/sitemaps.py index fb81357e..03ad9254 100644 --- a/sitemaps.py +++ b/sitemaps.py @@ -8,6 +8,7 @@ from main.models import Package from news.models import News from packages.utils import get_group_info, get_split_packages_info from releng.models import Release +from todolists.models import Todolist class PackagesSitemap(Sitemap): @@ -112,7 +113,7 @@ class ReleasesSitemap(Sitemap): return Release.objects.all().defer('info', 'torrent_data').order_by() def lastmod(self, obj): - return obj.created + return obj.last_modified def priority(self, obj): if obj.available: @@ -120,6 +121,25 @@ class ReleasesSitemap(Sitemap): return "0.2" +class TodolistSitemap(Sitemap): + priority = "0.4" + + def __init__(self): + now = datetime.utcnow().replace(tzinfo=utc) + self.two_weeks_ago = now - timedelta(days=14) + + def items(self): + return Todolist.objects.all().defer('raw').order_by() + + def lastmod(self, obj): + return obj.last_modified + + def changefreq(self, obj): + if obj.last_modified > self.two_weeks_ago: + return 'weekly' + return 'monthly' + + class BaseSitemap(Sitemap): DEFAULT_PRIORITY = 0.7 diff --git a/urls.py b/urls.py index c35baedf..36e3fef1 100644 --- a/urls.py +++ b/urls.py @@ -16,6 +16,7 @@ our_sitemaps = { 'package-groups': sitemaps.PackageGroupsSitemap, 'split-packages': sitemaps.SplitPackagesSitemap, 'releases': sitemaps.ReleasesSitemap, + 'todolists': sitemaps.TodolistSitemap, } news_sitemaps = { 'news': sitemaps.RecentNewsSitemap } -- cgit v1.2.3 From e5fc7cd53f6082f2911bc6c8cf8ea4f4ca4addc8 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 19:41:21 -0600 Subject: Add paginator template for todolists Signed-off-by: Dan McGee --- templates/todolists/paginator.html | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 templates/todolists/paginator.html diff --git a/templates/todolists/paginator.html b/templates/todolists/paginator.html new file mode 100644 index 00000000..3b077419 --- /dev/null +++ b/templates/todolists/paginator.html @@ -0,0 +1,22 @@ +{% if is_paginated %} + +{% endif %} -- cgit v1.2.3