changeset 318:8d7c891dec61

Start adding some stats for the homepage
author Sylvain Beucler <beuc@beuc.net>
date Wed, 18 Aug 2010 23:35:26 +0200
parents b89bb28a8c80
children 93a8358aca79
files savane/svmain/admin.py savane/svmain/urls.py savane/svmain/views.py templates/index.html templates/svmain/homepage.html
diffstat 5 files changed, 90 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/savane/svmain/admin.py
+++ b/savane/svmain/admin.py
@@ -38,7 +38,7 @@
         ('Savane',
          {'fields': ('status', 'spamscore',
                      'gpg_key', 'gpg_key_count',
-                     'email_hide', 'timezone', 'theme',)}),
+                     'email_hide', 'timezone',)}),
         )
     list_display = ('user', 'status')
     list_filter = ('status',)
--- a/savane/svmain/urls.py
+++ b/savane/svmain/urls.py
@@ -32,9 +32,8 @@
 urlpatterns = patterns ('',)
 
 urlpatterns += patterns ('',
-  url(r'^$', 'django.views.generic.simple.direct_to_template',
-      { 'template' : 'index.html',
-        'extra_context' : { 'has_left_menu': False } },
+  url(r'^$', views.homepage,
+      { },
       name='homepage'),
   # TODO: add a web interface to edit some static content (using Django template notation?)
   url(r'^contact/$', 'django.views.generic.simple.direct_to_template',
--- a/savane/svmain/views.py
+++ b/savane/svmain/views.py
@@ -74,6 +74,25 @@
 # Main
 ##
 
+@render_to('svmain/homepage.html')
+def homepage(request):
+    group_confs_obj = svmain_models.GroupConfiguration.objects.order_by('name')
+    group_confs = []
+    for conf in group_confs_obj:
+        group_confs.append({'count' : auth_models.Group.objects \
+                                .filter(svgroupinfo__type=conf,svgroupinfo__status='A') \
+                                .count(),
+                            'conf' : conf})
+    # nb_users and nb_groups as string, because the |add: template
+    # filter only accepts strings.
+    context = {
+        'nb_users' : str(auth_models.User.objects.count()),
+        'nb_groups' : str(auth_models.Group.objects.count()),
+        'nb_pending' : str(999), # TODO
+        'group_confs' : group_confs,
+        }
+    return context
+
 def group_join(request, slug):
     g = get_object_or_404(auth_models.Group, name=slug)
     if svmain_models.Membership.objects.filter(user=request.user, group=g).count():
deleted file mode 100644
--- a/templates/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-{%  extends "base.html" %}
-
-{% block top %}{% endblock %}
-
-{% block content %}
-<div class="intro">
-<!-- intro -->
-Intro
-<!-- /intro -->
-</div>
-
-<div class="news">
-<!-- news -->
-News
-<!-- /news -->
-</div>
-
-<div class="stats">
-<!-- stats -->
-Stats
-<!-- /stats -->
-</div>
-{% endblock %}
-
-{% comment %}
-Local Variables: **
-mode: django-html **
-tab-width: 4 **
-indent-tabs-mode: nil **
-End: **
-{% endcomment %}
new file mode 100644
--- /dev/null
+++ b/templates/svmain/homepage.html
@@ -0,0 +1,68 @@
+{%  extends "base.html" %}
+{% load i18n %}
+
+{% block top %}{% endblock %}
+
+{% block content %}
+
+<div class="indexright">
+<!-- stats -->
+  <div class="box">
+    <div class="boxtitle"><a class="sortbutton" href="TODO">
+	{% blocktrans %}{{site_name}} statistics{% endblocktrans %}</a></div>
+    <div class="{% cycle 'boxitemalt' 'boxitem' as rowcolor %}">
+      {% blocktrans count nb_users as count and '<strong>'|add:nb_users|add:'</strong>'|safe as html %}{{html}} registered user{% plural %}{{html}} registered users{% endblocktrans %}
+    </div>
+    <div class="{% cycle rowcolor %}">
+      {% blocktrans count nb_groups as count and '<strong>'|add:nb_groups|add:'</strong>'|safe as html %}{{html}} hosted project{% plural %}{{html}} hosted projects{% endblocktrans %}
+    </div>
+    {% for conf in group_confs %}
+    <div class="{% cycle rowcolor %}">
+      - <a href="{% url savane:svmain:group_list %}?group_configuration=TODO">{{conf.count}} {{conf.conf.name}}</a>
+    </div>
+    {% endfor %}
+    <div class="{% cycle rowcolor %}">+
+      {% blocktrans count nb_pending as count %}{{count}} registration pending{% plural %}{{count}} registrations pending{% endblocktrans %}
+    </div>
+  </div>
+
+  <div class="box">
+    <div class="boxtitle">{% trans "Help wanted" %}</div>
+  </div>
+
+  <div class="box">
+    <div class="boxtitle">{% trans "Most popular items" %}</div>
+  </div>
+
+  <div class="box">
+    <div class="boxtitle">{% blocktrans %}Newest %s1 projects{% endblocktrans %}</div>
+  </div>
+
+  <div class="box">
+    <div class="boxtitle">{% blocktrans %}Newest %s2 projects{% endblocktrans %}</div>
+  </div>
+<!-- /stats -->
+</div>
+
+
+<div class="intro">
+<!-- intro -->
+Intro
+<!-- /intro -->
+</div>
+
+<div class="news">
+<!-- news -->
+News
+<!-- /news -->
+</div>
+
+{% endblock %}
+
+{% comment %}
+Local Variables: **
+mode: django-html **
+tab-width: 4 **
+indent-tabs-mode: nil **
+End: **
+{% endcomment %}