changeset 343:c1d7767e3abf

Import news and display site homepage news
author Sylvain Beucler <beuc@beuc.net>
date Sat, 28 Aug 2010 23:26:51 +0200
parents a13981e03bf4
children 32d0e87d3fd5
files migrate_old_savane.sql savane/svmain/views.py savane/svnews/models.py templates/svmain/homepage.html
diffstat 4 files changed, 67 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/migrate_old_savane.sql
+++ b/migrate_old_savane.sql
@@ -696,3 +696,39 @@
 -- TODO: import 'support'
 -- TODO: import 'task'
 
+
+----
+-- NEWS
+----
+
+TRUNCATE svnews_news;
+INSERT INTO svnews_news
+    (id, group_id, submitted_by_id, is_approved, date, date_last_edit, summary, details)
+  SELECT forum_id, group_id, submitted_by, is_approved,
+  FROM_UNIXTIME(date), FROM_UNIXTIME(date_last_edit), summary, details
+  FROM savane_old.news_bytes
+  WHERE id<>100;
+
+TRUNCATE svnews_comment;
+INSERT INTO svnews_comment
+    (id, news_id, posted_by_id, subject, body, date, is_followup_to_id, thread_id)
+  SELECT msg_id, group_forum_id, posted_by, subject, body, FROM_UNIXTIME(date), is_followup_to, thread_id
+  FROM savane_old.forum;
+
+TRUNCATE svnews_notification;
+INSERT INTO svnews_notification
+    (news_id, user_id)
+  SELECT forum_id, user_id
+  FROM savane_old.forum_monitored_forums;
+
+TRUNCATE svnews_lastvisit;
+INSERT INTO svnews_lastvisit
+    (news_id, user_id, date)
+  SELECT user_id, forum_id, FROM_UNIXTIME(save_date)
+  FROM savane_old.forum_saved_place;
+
+TRUNCATE svnews_thread;
+INSERT INTO svnews_thread
+    (id)
+  SELECT thread_id
+  FROM savane_old.forum_thread_id;
--- a/savane/svmain/views.py
+++ b/savane/svmain/views.py
@@ -87,6 +87,9 @@
     import savane.svpeople.models as svpeople_models
     category_list = svpeople_models.Category.objects.all()
 
+    import savane.svnews.models as svnews_models
+    news_list = svnews_models.News.objects.filter(is_approved=1).order_by('-date')[:9]
+
     # nb_users and nb_groups as string, because the |add: template
     # filter only accepts strings.
     context = {
@@ -95,6 +98,7 @@
         'nb_pending' : str(666), # TODO
         'group_confs' : group_confs,
         'category_list' : category_list,
+        'news_list' : news_list,
         }
     return context
 
--- a/savane/svnews/models.py
+++ b/savane/svnews/models.py
@@ -38,6 +38,8 @@
     date_last_edit = models.DateTimeField(auto_now=True, db_index=True)
     summary = models.CharField(max_length=255)
     details = models.TextField()
+    # Savane3's 'forum_id', the most visible id, is now 'id'.
+    # Savane3's 'id', only used in administration screens, is dropped.
 
 class Comment(models.Model):
     """
@@ -45,7 +47,7 @@
     """
     news = models.ForeignKey(News)  # savane_old: uses forum_id through forum_group_list
     posted_by = models.ForeignKey(auth_models.User, related_name='svnews_comment_set')
-    body = models.CharField(max_length=255)
+    subject = models.CharField(max_length=255)
     body = models.TextField(blank=True)
     date = models.DateTimeField(auto_now_add=True, db_index=True)
     is_followup_to = models.ForeignKey("Comment")
--- a/templates/svmain/homepage.html
+++ b/templates/svmain/homepage.html
@@ -1,5 +1,6 @@
 {%  extends "base.html" %}
 {% load i18n %}
+{% load svmarkup %}
 
 {% block top %}{% endblock %}
 
@@ -54,17 +55,30 @@
 <!-- /stats -->
 </div>
 
+<div class="indexcenter">
+  <div class="intro">
+  <!-- intro -->
+  Intro
+  <!-- /intro -->
+  </div>
 
-<div class="intro">
-<!-- intro -->
-Intro
-<!-- /intro -->
-</div>
-
-<div class="news">
-<!-- news -->
-News
-<!-- /news -->
+  <div class="boxtitle"><a href="TODO">{% trans "Latest news" %}</a></div>
+  {% for object in news_list %}
+  <div class="{% cycle 'boxitem' 'boxitemalt' %}">
+    <a href="TODO"><strong>{{object.summary}}</strong></a><br />
+    &nbsp;&nbsp;&nbsp;&nbsp;
+    <span class="smaller"><em>
+      {% trans "posted by" %}
+      <a href="{% url savane:svmain:user_detail object.submitted_by.username %}"
+      >{{object.submitted_by.username}}</a>,
+      {{object.date}} -
+      {% blocktrans count object.comment_set.count as count %}{{count}} comment{% plural %}{{count}} comments{% endblocktrans %}
+    </em></span>
+    <br />
+    {{object.details|svmarkup_full}}
+    TODO: conditional [Read more]
+  </div>
+  {% endfor %}
 </div>
 
 {% endblock %}