Mercurial > hg > savane-forge
changeset 345:a812fdfce278
View related news
author | Sylvain Beucler <beuc@beuc.net> |
---|---|
date | Sun, 29 Aug 2010 11:41:26 +0200 |
parents | 32d0e87d3fd5 |
children | 6b68af3c7eaf |
files | TODO savane/svnews/models.py savane/svnews/urls.py savane/svnews/views.py templates/svnews/news_detail.html |
diffstat | 5 files changed, 71 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/TODO +++ b/TODO @@ -74,7 +74,19 @@ [/] Admin interface (implemented via Django admin) -[ ] News management (+ comments) +[/] News management + + [X] Display frontpage news + + [X] Display group news + + [ ] Manage news + + [ ] Post news item + + [ ] Edit news item + + [ ] Comments [/] Rewrite backend (or have them work on a replicate that uses the old DB schema) @@ -109,7 +121,9 @@ [X] Jobs - [.] Trackers + [X] Import news + + [/] Trackers [ ] Implement mod_rewrite URL migration list
--- a/savane/svnews/models.py +++ b/savane/svnews/models.py @@ -20,10 +20,16 @@ import django.contrib.auth.models as auth_models # - news_byte +class ApprovedNewsManager(models.Manager): + def get_query_set(self): + return super(self.__class__, self).get_query_set().filter(is_approved__in=(0,1,2)) class News(models.Model): """ One piece of news """ + class Meta: + ordering = ('-date',) + IS_APPROVED_CHOICES = ( ('0', 'approved for project page'), ('1', 'approved for site frontpage news'), @@ -41,6 +47,9 @@ # Savane3's 'forum_id', the most visible id, is now 'id'. # Savane3's 'id', only used in administration screens, is dropped. + objects = models.Manager() # default manager + approved_objects = ApprovedNewsManager() + class Comment(models.Model): """ A comment on the news item
--- a/savane/svnews/urls.py +++ b/savane/svnews/urls.py @@ -34,11 +34,11 @@ url(r'^$', views.redirect_to_admin_group, {}, name='news_list_admin_group'), - url(r'^(?P<object_id>\d+)/$', object_detail, - { 'queryset' : svnews_models.News.objects.filter(is_approved__in=(0,1,2,)) }, + url(r'^(?P<object_id>\d+)/$', views.news_detail, + { 'queryset' : svnews_models.News.approved_objects.all() }, name='news_detail'), url(r'^(?P<slug>[-\w]+)/$', views.news_list_by_group, - { 'queryset' : svnews_models.News.objects.filter(is_approved__in=(0,1,2,)).order_by('-date') }, + { 'queryset' : svnews_models.News.approved_objects.all() }, name='news_list_by_group'), ) urlpatterns += decorated_patterns ('', only_project_admin,
--- a/savane/svnews/views.py +++ b/savane/svnews/views.py @@ -19,10 +19,11 @@ from django.conf import settings from django.shortcuts import get_object_or_404 from django.views.generic.simple import redirect_to -from django.views.generic.list_detail import object_list +from django.views.generic.list_detail import object_list, object_detail from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _, ungettext import django.contrib.auth.models as auth_models +import models as svnews_models def redirect_to_admin_group(*args, **kwargs): group = get_object_or_404(auth_models.Group, name=settings.SV_ADMIN_GROUP) @@ -35,3 +36,13 @@ kwargs['extra_context'] = kwargs.get('extra_context', {}) kwargs['extra_context']['group'] = group return object_list(request, *args, **kwargs) + +def news_detail(request, *args, **kwargs): + news = get_object_or_404(svnews_models.News, pk=kwargs['object_id']) + group = news.group + kwargs['extra_context'] = kwargs.get('extra_context', {}) + kwargs['extra_context']['group'] = group + kwargs['extra_context']['group_news'] = svnews_models.News \ + .approved_objects.filter(group=group) \ + .select_related() + return object_detail(request, *args, **kwargs)
--- a/templates/svnews/news_detail.html +++ b/templates/svnews/news_detail.html @@ -10,15 +10,39 @@ {% block content %} -<h2><a href="">{{object.summary}}</a></h2> +<div class="indexright"> + <div class="box"> + <div class="boxtitle">{% trans "Latest news" %}</div> + {% with group_news|slice:":5" as object_list %} + {% include 'svnews/news_list_short.inc' %} + {% endwith %} + <div class="smaller"> + <a href="{% url savane:svnews:news_list_admin_group %}" + >[{% blocktrans count group_news.count as count %}{{count}} news in archive{% plural %}{{count}} news in archive{% endblocktrans %}] + </a> + </div> + </div> +</div> + +<div class="indexcenter"> + <h2><a href="">{{object.summary}}</a></h2> -<p><em> - {% trans "Posted by" %} - {% include 'svnews/user_submitted_by_link.inc' %} - {{object.date}} -</em></p> + <p><em> + {% trans "Posted by" %} + {% include 'svnews/user_submitted_by_link.inc' %} + {{object.date}} + </em></p> + + {{object.details|svmarkup_full}} -{{object.details|svmarkup_full}} + <h2><a name="comments" href="#comments">{% trans "Comments" %}</a></h2> + + <h2><a name="newthread" href="#newthread">{% trans "Start a new thread" %}</a></h2> + {% if not user.is_anonymous %} + {% else %} + <p class="error" style="text-align: center">{% trans "You could post if you were logged in" %}</p> + {% endif %} +</div> {% endblock %}