changeset 45:df4e2a6d6b8f

Merge branch 'master' of Beuc@git.sv.gnu.org:/srv/git/savane-cleanup/framework
author Sylvain Beucler <beuc@beuc.net>
date Tue, 16 Jun 2009 20:29:30 +0200
parents 49caab60397d (current diff) 43c1419c06c3 (diff)
children 352cce412bae
files template/base.djhtml template/index.djhtml template/savane_user/authentication.djhtml template/savane_user/conf.djhtml template/savane_user/identity.djhtml template/savane_user/index.djhtml template/savane_user/mail.djhtml
diffstat 16 files changed, 430 insertions(+), 383 deletions(-) [+]
line wrap: on
line diff
--- a/savane/main/views.py
+++ b/savane/main/views.py
@@ -3,5 +3,5 @@
 from django.http import HttpResponse
 
 def index(request):
-    return render_to_response( 'index.djhtml', RequestContext( request, {'has_left_menu': False},
+    return render_to_response( 'index.html', RequestContext( request, {'has_left_menu': False},
                                                                ) )
--- a/savane/savane_user/views.py
+++ b/savane/savane_user/views.py
@@ -5,7 +5,7 @@
 from django import forms
 
 def index( request ):
-    return render_to_response( 'savane_user/index.djhtml',
+    return render_to_response( 'savane_user/index.html',
                                RequestContext( request,
                                                ) )
 def sv_login( request ):
@@ -18,7 +18,7 @@
         login( request, user )
     else:
         login_error = u"User or password didn't match"
-        return render_to_response( 'error.djhtml',
+        return render_to_response( 'error.html',
                                    {'error' : login_error
                                     } )
 
@@ -31,8 +31,15 @@
 
 
 def sv_conf( request ):
-    return render_to_response( 'savane_user/conf.djhtml',
+
+    form_pass = PasswordForm ()
+    form_mail = MailForm ()
+
+    return render_to_response( 'savane_user/conf.html',
                                RequestContext( request,
+                                               { 'form_pass' : form_pass,
+                                                 'form_mail' : form_mail,
+                                                 }
                                                ) )
 def sv_identity( request ):
 
@@ -41,7 +48,7 @@
         request.user.last_name = request.POST['new_last_name']
         request.user.save()
 
-    return render_to_response( 'savane_user/identity.djhtml',
+    return render_to_response( 'savane_user/identity.html',
                                RequestContext( request,
                                                ) )
 def sv_authentication( request ):
@@ -55,13 +62,13 @@
         if form.is_valid():
             if request.user.check_password( request.POST['old_password'] ):
                 form = PasswordForm( )
-                return render_to_response( 'savane_user/authentication.djhtml',
+                return render_to_response( 'savane_user/authentication.html',
                                            RequestContext( request,
                                                            { 'form' : form,
                                                              'success_message' : success,}
                                                            ) )
             else:
-                return render_to_response( 'savane_user/authentication.djhtml',
+                return render_to_response( 'savane_user/authentication.html',
                                            RequestContext( request,
                                                            { 'form' : form,
                                                              'error_message' : "Current password doesn't match",}
@@ -71,7 +78,7 @@
     else:
         form = PasswordForm()
 
-    return render_to_response( 'savane_user/authentication.djhtml',
+    return render_to_response( 'savane_user/authentication.html',
                                RequestContext( request,
                                                {'form' : form,
                                                 'error_message' : error,}
@@ -83,7 +90,12 @@
     old_password = forms.CharField(widget=forms.PasswordInput,required=True)
     new_password = forms.CharField(widget=forms.PasswordInput,required=True)
     repated_password = forms.CharField(widget=forms.PasswordInput,required=True)
-    accion = forms.CharField( widget=forms.HiddenInput, required=True, initial='update' )
+    accion = forms.CharField( widget=forms.HiddenInput, required=True, initial='update_password' )
+
+    def clean( self ):
+        cleaned_data = self.cleaned_data
+        new_password = cleaned_data.get('new_password')
+        old_password = cleaned_data.get('old_password')
 
 def sv_mail( request ):
 
@@ -93,14 +105,14 @@
         if form.is_valid():
             request.user.email = request.POST['email']
             request.user.save()
-            return render_to_response( 'savane_user/mail.djhtml',
+            return render_to_response( 'savane_user/mail.html',
                                        RequestContext( request,
                                                        { 'form' : form,
                                                          'success_message' : 'The E-mail address was succesfully changed'
                                                          }
                                                        ) )
         else:
-            return render_to_response( 'savane_user/mail.djhtml',
+            return render_to_response( 'savane_user/mail.html',
                                        RequestContext( request,
                                                        { 'form' : form,
                                                          'error_message' : 'Could not change the e-mail address'
@@ -109,7 +121,7 @@
     else:
         form = MailForm()
 
-    return render_to_response( 'savane_user/mail.djhtml',
+    return render_to_response( 'savane_user/mail.html',
                                RequestContext( request,
                                                { 'form' : form }
                                                ) )
deleted file mode 100644
--- a/template/base.djhtml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US.UTF-8" xml:lang="en-US.UTF-8">
-  <head>
-    <title>Welcome [Savannah]</title>
-    <meta name="Generator" content="Savane 3.1-cleanup, see http://savannah.nongnu.org/projects/savane-cleanup" />
-    <meta http-equiv="Content-Script-Type" content="text/javascript" />
-    <link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}/css/Savannah.css" />
-    <link rel="icon" type="image/png" href="static/images/Savannah.theme/icon.png" />
-    <meta name="Author" content="Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved" />
-    <meta name="Keywords" content="Savannah,GNU, FSF, Free Software Foundation, GNU/Linux, Linux, Emacs, GCC, Unix, Free Software, Operating System, GNU Kernel, HURD, gnus, SourceForge" />
-    <meta name="Description" content="Savannah is a central point for development, distribution and maintainance of Free Software. It allows contributors to easily join existing Free Software projects." />
-
-  </head>
-
-  {{request.GET.test}}
-  <body>
-    <div class="main_menu">
-      <a href="/"><img src="{{MEDIA_URL}}/images/floating.png" alt="Back to Savannah Homepage" border="0" width="118" height="100" /></a>
-      <a href="">Hosted Projects</a>
-      <a href="">Help</a>
-
-      <div class="menu_search">
-	<form action="/search/#options" method="get" >
-	  <input type="text" size="15" name="words" value="" />
-	  <em>in</em>
-	  <select name="type_of_search">
-	    <option value="soft" selected="selected">Projects</option>
-	    <option value="people">People</option>
-	    <option value="cookbook">Cookbook</option>
-	    <option value="support">Support</option>
-	    <option value="bugs">Bugs</option>
-	    <option value="task">Tasks</option>
-	    <option value="patch">Patches</option>
-	  </select>
-	  <input type="submit" name="Search" value="Search" /><input type="hidden" name="exact" value="1" />
-	</form>
-      </div>
-    </div>
-    {% if user.is_authenticated %}
-    <div class="fast_menu_user">
-      <a href="">Items</a>
-      <a href="">Groups</a>
-      <a href="/user/conf">Account Conf</a>
-      <a href="/user/logout">Logout</a>
-    </div>
-    {% else %}
-    <div class="menu_login">
-      <form action="/user/login" method="post">
-	<input type="hidden" name="uri" value="/" />
-	<dl>
-	  <dt>Login Name:</dt>
-	  <dd><input type="text" name="username" value="" size="12" /></dd>
-	  <dt>Password:</dt>
-	  <dd><input type="password" name="password" size="12" /></dd>
-	  <dd><input type="submit" name="login" value="Login" /></dd>
-	</dl>
-      </form>
-    </div>
-    {% endif %}
-    <div class="root">
-      <div class="body">
-        {% ifequal has_left_menu None %}
-        <div class="menu_left">
-        </div>
-        {% endifequal %}
-        <div class="content">
-          {% if error_message %}
-          <div class="error">
-            {{ error_message }}
-          </div>
-          {% endif %}
-          {% if success_message %}
-          <div class="success">
-            {{ success_message }}
-          </div>
-          {% endif %}
-        {% block content %}
-        {% endblock %}
-        </div>
-      </div>
-    </div>
-
-    <!-- footer start here -->
-    <p class="footer">
-      <span style="float:right">
-        <a href="http://git.sv.gnu.org/gitweb/?p=savane-cleanup.git;a=blob;f=frontend/php/index.php">Source<br />Code</a>
-      </span>
-
-      Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 &nbsp;Free Software
-      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-      02110-1301, USA
-
-      <br />
-
-      Verbatim copying and distribution of this entire article is
-      permitted in any medium, provided this notice is preserved.
-
-      <br />
-
-      The <a href="http://www.gnu.org/graphics/meditate.html">Levitating,
-        Meditating, Flute-playing Gnu</a> logo is a GNU GPL'ed image provided
-      by the Nevrax Design Team.
-    </p>
-
-    <div align="right">
-      <a href="http://savannah.nongnu.org/projects/savane-cleanup">Powered by Savane 3.1-cleanup</a>
-    </div>
-    <!-- footer ends here -->
-
-  </body>
-</html>
new file mode 100644
--- /dev/null
+++ b/template/base.html
@@ -0,0 +1,113 @@
+{# -*- Mode: django-html; -*- #}
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US.UTF-8" xml:lang="en-US.UTF-8">
+  <head>
+    <title>Welcome [Savannah]</title>
+    <meta name="Generator" content="Savane 3.1-cleanup, see http://savannah.nongnu.org/projects/savane-cleanup" />
+    <meta http-equiv="Content-Script-Type" content="text/javascript" />
+    <link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}/css/Savannah.css" />
+    <link rel="icon" type="image/png" href="static/images/Savannah.theme/icon.png" />
+    <meta name="Author" content="Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved" />
+    <meta name="Keywords" content="Savannah,GNU, FSF, Free Software Foundation, GNU/Linux, Linux, Emacs, GCC, Unix, Free Software, Operating System, GNU Kernel, HURD, gnus, SourceForge" />
+    <meta name="Description" content="Savannah is a central point for development, distribution and maintainance of Free Software. It allows contributors to easily join existing Free Software projects." />
+
+  </head>
+
+  {{request.GET.test}}
+  <body>
+    <div class="main_menu">
+      <a href="/"><img src="{{MEDIA_URL}}/images/floating.png" alt="Back to Savannah Homepage" border="0" width="118" height="100" /></a>
+      <a href="">Hosted Projects</a>
+      <a href="">Help</a>
+
+      <div class="menu_search">
+	<form action="/search/#options" method="get" >
+	  <input type="text" size="15" name="words" value="" />
+	  <em>in</em>
+	  <select name="type_of_search">
+	    <option value="soft" selected="selected">Projects</option>
+	    <option value="people">People</option>
+	    <option value="cookbook">Cookbook</option>
+	    <option value="support">Support</option>
+	    <option value="bugs">Bugs</option>
+	    <option value="task">Tasks</option>
+	    <option value="patch">Patches</option>
+	  </select>
+	  <input type="submit" name="Search" value="Search" /><input type="hidden" name="exact" value="1" />
+	</form>
+      </div>
+    </div>
+    {% if user.is_authenticated %}
+    <div class="fast_menu_user">
+      <a href="">Items</a>
+      <a href="">Groups</a>
+      <a href="/user/conf">Account Conf</a>
+      <a href="/user/logout">Logout</a>
+    </div>
+    {% else %}
+    <div class="menu_login">
+      <form action="/user/login" method="post">
+	<input type="hidden" name="uri" value="/" />
+	<dl>
+	  <dt>Login Name:</dt>
+	  <dd><input type="text" name="username" value="" size="12" /></dd>
+	  <dt>Password:</dt>
+	  <dd><input type="password" name="password" size="12" /></dd>
+	  <dd><input type="submit" name="login" value="Login" /></dd>
+	</dl>
+      </form>
+    </div>
+    {% endif %}
+    <div class="root">
+      <div class="body">
+        {% ifequal has_left_menu None %}
+        <div class="menu_left">
+        </div>
+        {% endifequal %}
+        <div class="content">
+          {% if error_message %}
+          <div class="error">
+            {{ error_message }}
+          </div>
+          {% endif %}
+          {% if success_message %}
+          <div class="success">
+            {{ success_message }}
+          </div>
+          {% endif %}
+        {% block content %}
+        {% endblock %}
+        </div>
+      </div>
+    </div>
+
+    <!-- footer start here -->
+    <p class="footer">
+      <span style="float:right">
+        <a href="http://git.sv.gnu.org/gitweb/?p=savane-cleanup.git;a=blob;f=frontend/php/index.php">Source<br />Code</a>
+      </span>
+
+      Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 &nbsp;Free Software
+      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+      02110-1301, USA
+
+      <br />
+
+      Verbatim copying and distribution of this entire article is
+      permitted in any medium, provided this notice is preserved.
+
+      <br />
+
+      The <a href="http://www.gnu.org/graphics/meditate.html">Levitating,
+        Meditating, Flute-playing Gnu</a> logo is a GNU GPL'ed image provided
+      by the Nevrax Design Team.
+    </p>
+
+    <div align="right">
+      <a href="http://savannah.nongnu.org/projects/savane-cleanup">Powered by Savane 3.1-cleanup</a>
+    </div>
+    <!-- footer ends here -->
+
+  </body>
+</html>
deleted file mode 100644
--- a/template/index.djhtml
+++ /dev/null
@@ -1,156 +0,0 @@
-{%  extends "base.djhtml" %}
-
-{% block content %}
-	<p>
-		Welcome to <strong>Savannah</strong>, the software forge for people
-		committed to <a href="http://www.gnu.org/philosophy/free-sw.html">Free Software</a>:
-	</p>
-	<p>
-		<ul>
-			<li>We host free projects that run on free operating systems and without any proprietary software dependencies</li>
-			<li>Our service runs with 100% free software, including <a href="/projects/savane-cleanup">itself</a></li>
-			<li><a href="http://savannah.gnu.org/maintenance/WhyChooseSavannah">More...</a></li>
-		</ul>
-	</p>
-	<p>
-		Savannah aims to be a central point for development, maintenance and distribution of <a href="http://www.gnu.org/gnu/thegnuproject.html">official GNU software</a>.  In additions, for projects that are free software but not part of the GNU project we provide <a href="http://savannah.nongnu.org/">savannah.nongnu.org</a>.
-	</p>
-	<p>
-		If you would like to use these facilities to host your
-		project, then go to the <b>Register new project</b> menu entry.
-	</p>
-	<p>
-		We provide two mailing lists that you may want to subscribe to:
-		<ul>
-			<li><a href="http://lists.gnu.org/mailman/listinfo/savannah-announce">savannah-announce</a>: low-volume notifications of important issues and changes at Savannah</li>
-			<li><a href="http://lists.gnu.org/mailman/listinfo/savannah-users">savannah-users</a>: discussion of savannah-announce and any user-oriented topic</li>
-		</ul>
-	</p>
-</div>
-
-<div class="news">
-	<div>
-		<a href="/news/">Latest News</a>
-	</div>
-
-	<div>
-		<a href="/forum/forum.php?forum_id=5615"><strong>Mail issues</strong></a><br />
-		<span>
-			<em>posted by <a href="/users/Beuc">Beuc</a>, Tue 13 Jan 2009 09:27:20 AM UTC - 0 replies</em>
-		</span>
-		<p>Due to a recent change in the GNU mail system, some of the mails could not be delivered between the 7th and the 12th. This is now fixed and handled differently so that the savannah and gnu mails won't lost sync again. <br />
-		Commit notifications sent to lists.gnu.org in that interval were lost.
-		<br />
-		Trackers notifications could be recovered and have been reinjected in the mail system - you should be receiving them.<br />
-		</p>
-	</div>
-
-	<div>
-		<a href="/forum/forum.php?forum_id=5613"><strong>Please report slow mirrors</strong></a><br />
-		<span>
-			<em>posted by <a href="/users/Beuc">Beuc</a>, Mon 12 Jan 2009 06:41:11 AM UTC - 0 replies</em>
-		</span>
-		<p>Let us know if one of the download mirrors is slow! <br />
-		</p>
-		<p>Our tools allow us to check if a mirror is up-to-date, but can't check if it has bandwidth issues.  We'll retire slow mirrors and contact their maintainers to see if this can be improved.<br />
-		</p>
-	</div>
-</div>
-
-
-<div class="boxes">
-
-	<div class="box">
-		<div class="boxtitle">
-			<a href="/stats/">Savannah Statistics</a>
-		</div>
-		<div>
-			<span>
-			<strong>60502</strong> registered users</span>
-		</div>
-		<div>
-			<span><strong>3013</strong> hosted projects</span>
-		</div>
-		<div>
-			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=4" class="center">10 GUG</a></span>
-		</div>
-		<div>
-			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=2" class="center">2578 non-GNU software &amp; documentation</a></span>
-		</div>
-		<div>
-			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=1" class="center">362 Official GNU software</a></span>
-		</div>
-		<div >
-			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=3" class="center">31 www.gnu.org portion</a></span>
-		</div>
-		<div>
-			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=6" class="center">32 www.gnu.org translation team</a></span>
-		</div>
-		<div >
-			<span>+ 88 registrations pending</span>
-		</div>
-	</div>
-
-	<div class="box">
-		<div class="boxtitle">Help Wanted</div>
-		<ul>
-			<li><span>- <a href="/people/?category_id=1">177 Developer</a></span></li>
-			<li><span>- <a href="/people/?category_id=2">9 Project Manager</a></span></li>
-			<li><span>- <a href="/people/?category_id=3">1 Unix Admin</a></span></li>
-			<li><span>- <a href="/people/?category_id=4">48 Doc Writer</a></span></li>
-			<li><span>- <a href="/people/?category_id=5">30 Tester</a></span></li>
-			<li><span>- <a href="/people/?category_id=6">4 Support Manager</a></span></li>
-			<li><span>- <a href="/people/?category_id=7">28 Graphic/Other Designer</a></span></li>
-			<li><span>- <a href="/people/?category_id=8">28 Translator</a></span></li>
-		</ul>
-
-	</div>
-
-	<div class="box">
-		<div class="boxtitle">
-			Newest non-GNU software &amp; documentation Projects
-		</div>
-		<div>
-			<span>- <a href="http://savannah.nongnu.org/projects/clanbomber/">ClanBomber</a>, 2009-01-13</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.nongnu.org/projects/urip/">URip</a>, 2009-01-06</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.nongnu.org/projects/espresso/">espresso-mode</a>, 2009-01-05</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.nongnu.org/projects/leo-lookup/">leo-lookup</a>, 2009-01-02</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.nongnu.org/projects/openpgp-sharp/">OpenPGP Sharp</a>, 2008-12-31</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.nongnu.org/projects/libqtlua/">QtLua script engine for Qt</a>, 2008-12-29</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.nongnu.org/projects/tkresolver/">TkResolver++</a>, 2008-12-25</span>
-		</div>
-		<div>
-			<span><a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=2">[all non-GNU software &amp; documentation projects]</a></span>
-		</div>
-	</div>
-	<div class="box">
-		<div class="boxtitle">Newest Official GNU software Projects</div>
-		<div>
-			<span>- <a href="http://savannah.gnu.org/projects/speedx/">SpeedX</a>, 2009-01-15</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.gnu.org/projects/rush/">GNU Rush</a>, 2009-01-14</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.gnu.org/projects/indent/">GNU indent</a>, 2008-12-14</span>
-		</div>
-		<div>
-			<span>- <a href="http://savannah.gnu.org/projects/gdbm/">GNU dbm</a>, 2008-11-24</span>
-		</div>
-		<div>
-			<span><a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=1">[all Official GNU software projects]</a></span>
-		</div>
-	</div>
-{% endblock %}
new file mode 100644
--- /dev/null
+++ b/template/index.html
@@ -0,0 +1,157 @@
+{# -*- Mode: django-html; -*- #}
+{%  extends "base.html" %}
+
+{% block content %}
+	<p>
+		Welcome to <strong>Savannah</strong>, the software forge for people
+		committed to <a href="http://www.gnu.org/philosophy/free-sw.html">Free Software</a>:
+	</p>
+	<p>
+		<ul>
+			<li>We host free projects that run on free operating systems and without any proprietary software dependencies</li>
+			<li>Our service runs with 100% free software, including <a href="/projects/savane-cleanup">itself</a></li>
+			<li><a href="http://savannah.gnu.org/maintenance/WhyChooseSavannah">More...</a></li>
+		</ul>
+	</p>
+	<p>
+		Savannah aims to be a central point for development, maintenance and distribution of <a href="http://www.gnu.org/gnu/thegnuproject.html">official GNU software</a>.  In additions, for projects that are free software but not part of the GNU project we provide <a href="http://savannah.nongnu.org/">savannah.nongnu.org</a>.
+	</p>
+	<p>
+		If you would like to use these facilities to host your
+		project, then go to the <b>Register new project</b> menu entry.
+	</p>
+	<p>
+		We provide two mailing lists that you may want to subscribe to:
+		<ul>
+			<li><a href="http://lists.gnu.org/mailman/listinfo/savannah-announce">savannah-announce</a>: low-volume notifications of important issues and changes at Savannah</li>
+			<li><a href="http://lists.gnu.org/mailman/listinfo/savannah-users">savannah-users</a>: discussion of savannah-announce and any user-oriented topic</li>
+		</ul>
+	</p>
+</div>
+
+<div class="news">
+	<div>
+		<a href="/news/">Latest News</a>
+	</div>
+
+	<div>
+		<a href="/forum/forum.php?forum_id=5615"><strong>Mail issues</strong></a><br />
+		<span>
+			<em>posted by <a href="/users/Beuc">Beuc</a>, Tue 13 Jan 2009 09:27:20 AM UTC - 0 replies</em>
+		</span>
+		<p>Due to a recent change in the GNU mail system, some of the mails could not be delivered between the 7th and the 12th. This is now fixed and handled differently so that the savannah and gnu mails won't lost sync again. <br />
+		Commit notifications sent to lists.gnu.org in that interval were lost.
+		<br />
+		Trackers notifications could be recovered and have been reinjected in the mail system - you should be receiving them.<br />
+		</p>
+	</div>
+
+	<div>
+		<a href="/forum/forum.php?forum_id=5613"><strong>Please report slow mirrors</strong></a><br />
+		<span>
+			<em>posted by <a href="/users/Beuc">Beuc</a>, Mon 12 Jan 2009 06:41:11 AM UTC - 0 replies</em>
+		</span>
+		<p>Let us know if one of the download mirrors is slow! <br />
+		</p>
+		<p>Our tools allow us to check if a mirror is up-to-date, but can't check if it has bandwidth issues.  We'll retire slow mirrors and contact their maintainers to see if this can be improved.<br />
+		</p>
+	</div>
+</div>
+
+
+<div class="boxes">
+
+	<div class="box">
+		<div class="boxtitle">
+			<a href="/stats/">Savannah Statistics</a>
+		</div>
+		<div>
+			<span>
+			<strong>60502</strong> registered users</span>
+		</div>
+		<div>
+			<span><strong>3013</strong> hosted projects</span>
+		</div>
+		<div>
+			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=4" class="center">10 GUG</a></span>
+		</div>
+		<div>
+			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=2" class="center">2578 non-GNU software &amp; documentation</a></span>
+		</div>
+		<div>
+			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=1" class="center">362 Official GNU software</a></span>
+		</div>
+		<div >
+			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=3" class="center">31 www.gnu.org portion</a></span>
+		</div>
+		<div>
+			<span>- <a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=6" class="center">32 www.gnu.org translation team</a></span>
+		</div>
+		<div >
+			<span>+ 88 registrations pending</span>
+		</div>
+	</div>
+
+	<div class="box">
+		<div class="boxtitle">Help Wanted</div>
+		<ul>
+			<li><span>- <a href="/people/?category_id=1">177 Developer</a></span></li>
+			<li><span>- <a href="/people/?category_id=2">9 Project Manager</a></span></li>
+			<li><span>- <a href="/people/?category_id=3">1 Unix Admin</a></span></li>
+			<li><span>- <a href="/people/?category_id=4">48 Doc Writer</a></span></li>
+			<li><span>- <a href="/people/?category_id=5">30 Tester</a></span></li>
+			<li><span>- <a href="/people/?category_id=6">4 Support Manager</a></span></li>
+			<li><span>- <a href="/people/?category_id=7">28 Graphic/Other Designer</a></span></li>
+			<li><span>- <a href="/people/?category_id=8">28 Translator</a></span></li>
+		</ul>
+
+	</div>
+
+	<div class="box">
+		<div class="boxtitle">
+			Newest non-GNU software &amp; documentation Projects
+		</div>
+		<div>
+			<span>- <a href="http://savannah.nongnu.org/projects/clanbomber/">ClanBomber</a>, 2009-01-13</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.nongnu.org/projects/urip/">URip</a>, 2009-01-06</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.nongnu.org/projects/espresso/">espresso-mode</a>, 2009-01-05</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.nongnu.org/projects/leo-lookup/">leo-lookup</a>, 2009-01-02</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.nongnu.org/projects/openpgp-sharp/">OpenPGP Sharp</a>, 2008-12-31</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.nongnu.org/projects/libqtlua/">QtLua script engine for Qt</a>, 2008-12-29</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.nongnu.org/projects/tkresolver/">TkResolver++</a>, 2008-12-25</span>
+		</div>
+		<div>
+			<span><a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=2">[all non-GNU software &amp; documentation projects]</a></span>
+		</div>
+	</div>
+	<div class="box">
+		<div class="boxtitle">Newest Official GNU software Projects</div>
+		<div>
+			<span>- <a href="http://savannah.gnu.org/projects/speedx/">SpeedX</a>, 2009-01-15</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.gnu.org/projects/rush/">GNU Rush</a>, 2009-01-14</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.gnu.org/projects/indent/">GNU indent</a>, 2008-12-14</span>
+		</div>
+		<div>
+			<span>- <a href="http://savannah.gnu.org/projects/gdbm/">GNU dbm</a>, 2008-11-24</span>
+		</div>
+		<div>
+			<span><a href="/search/?type_of_search=soft&amp;words=%%%&amp;type=1">[all Official GNU software projects]</a></span>
+		</div>
+	</div>
+{% endblock %}
deleted file mode 100644
--- a/template/savane_user/authentication.djhtml
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends "base.djhtml" %}
-
-{% block content %}
-<div class="box">
-  <div class="boxtitle">Change Password</div>
-  <div class="boxitem">
-    <form method="post">
-      <dl>
-        {% for field in form %}
-        {% if field.is_hidden %}
-        {{field}}
-        {% else %}
-        <dt>{{ field.label_tag }} {{ field.error }}</dt>
-        <dd>{{ field }}</dd>
-        {% endif %}
-        {% endfor %}
-        <dd><input type="submit" value="Update" name="Update" /></dd>
-      </dl>
-    </form>
-  </div>
-</div>
-{% endblock %}
new file mode 100644
--- /dev/null
+++ b/template/savane_user/authentication.html
@@ -0,0 +1,23 @@
+{# -*- Mode: django-html; -*- #}
+{% extends "base.html" %}
+
+{% block content %}
+<div class="box">
+  <div class="boxtitle">Change Password</div>
+  <div class="boxitem">
+    <form method="post">
+      <dl>
+        {% for field in form %}
+        {% if field.is_hidden %}
+        {{field}}
+        {% else %}
+        <dt>{{ field.label_tag }} {{ field.error }}</dt>
+        <dd>{{ field }}</dd>
+        {% endif %}
+        {% endfor %}
+        <dd><input type="submit" value="Update" name="Update" /></dd>
+      </dl>
+    </form>
+  </div>
+</div>
+{% endblock %}
deleted file mode 100644
--- a/template/savane_user/conf.djhtml
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends "base.djhtml" %}
-
-{% block content %}
-<ul class="section">
-  <li><a href="identity">Identity</a></li>
-  <li><a href="authentication">Authentication</a></li>
-  <li><a href="mail">Mail</a></li>
-</ul>
-
-{% endblock %}
new file mode 100644
--- /dev/null
+++ b/template/savane_user/conf.html
@@ -0,0 +1,40 @@
+{# -*- Mode: django-html; -*- #}
+{% extends "base.html" %}
+
+{% block content %}
+<ul class="section">
+  <li><a href="identity">Identity</a></li>
+  <li><a href="authentication">Authentication</a></li>
+  <li><a href="mail">Mail</a></li>
+</ul>
+
+<div class="box">
+  <div class="boxtitle">Change Password</div>
+  <div class="boxitem">
+    <form method="post">
+      <dl>
+        {% for field in form_pass %}
+        {% if field.is_hidden %}
+        {{field}}
+        {% else %}
+        <dt>{{ field.label_tag }} {{ field.error }}</dt>
+        <dd>{{ field }}</dd>
+        {% endif %}
+        {% endfor %}
+        <dd><input type="submit" value="Update" name="Update" /></dd>
+      </dl>
+    </form>
+  </div>
+</div>
+
+<div class="box">
+  <div class="boxtitle">Change E-Mail</div>
+  <div class="boxitem">
+    <form method="post">
+    {{form_mail.as_p}}
+    <input type="submit" value="Update" />
+    </form>
+  </div>
+</div>
+
+{% endblock %}
deleted file mode 100644
--- a/template/savane_user/identity.djhtml
+++ /dev/null
@@ -1,44 +0,0 @@
-{% extends "base.djhtml" %}
-
-{% block content %}
-
-<ul class="section">
-  <li><a href="identity">Identity</a></li>
-  <li><a href="authentication">Authentication</a></li>
-  <li><a href="mail">Mail</a></li>
-</ul>
-
-<div class="box">
-  <div class="boxtitle">General Information</div>
-  <div class="boxitem">
-    <dl>
-      <dt>Name</dt>
-      <dd>{{ user.first_name }} {{ user.last_name }}</dd>
-      <dt>Login</dt>
-      <dd>{{ user }}</dd>
-      <dt>Id</dt>
-      <dd></dd>
-      <dt>Email Address</dt>
-      <dd></dd>
-      <dt>Member Since</dt>
-      <dd></dd>
-    </dl>
-  </div>
-</div>
-<div class="box">
-  <div class="boxtitle">Change Name</div>
-  <div class="boxitem">
-    <form method="post">
-      <input type="hidden" name="action" value="update" />
-      <dl>
-        <dt>Name</dt>
-        <dd><input type="text" name="new_name" /></dd>
-        <dt>Last Name</dt>
-        <dd><input type="text" name="new_last_name" /></dd>
-        <dd><input type="submit" value="Update" name="Update" /></dd>
-      </dl>
-    </form>
-  </div>
-</div>
-
-{% endblock %}
new file mode 100644
--- /dev/null
+++ b/template/savane_user/identity.html
@@ -0,0 +1,45 @@
+{# -*- Mode: django-html; -*- #}
+{% extends "base.html" %}
+
+{% block content %}
+
+<ul class="section">
+  <li><a href="identity">Identity</a></li>
+  <li><a href="authentication">Authentication</a></li>
+  <li><a href="mail">Mail</a></li>
+</ul>
+
+<div class="box">
+  <div class="boxtitle">General Information</div>
+  <div class="boxitem">
+    <dl>
+      <dt>Name</dt>
+      <dd>{{ user.first_name }} {{ user.last_name }}</dd>
+      <dt>Login</dt>
+      <dd>{{ user }}</dd>
+      <dt>Id</dt>
+      <dd></dd>
+      <dt>Email Address</dt>
+      <dd></dd>
+      <dt>Member Since</dt>
+      <dd></dd>
+    </dl>
+  </div>
+</div>
+<div class="box">
+  <div class="boxtitle">Change Name</div>
+  <div class="boxitem">
+    <form method="post">
+      <input type="hidden" name="action" value="update" />
+      <dl>
+        <dt>Name</dt>
+        <dd><input type="text" name="new_name" /></dd>
+        <dt>Last Name</dt>
+        <dd><input type="text" name="new_last_name" /></dd>
+        <dd><input type="submit" value="Update" name="Update" /></dd>
+      </dl>
+    </form>
+  </div>
+</div>
+
+{% endblock %}
deleted file mode 100644
--- a/template/savane_user/index.djhtml
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "base.djhtml" %}
-
-{% block content %}
-<form action="login" method="post">
-<dl>
-  <dt>Login Name:</dt>
-  <dd><input type="text" name="username" value="" size="12" /></dd>
-  <dt>Password:</dt>
-  <dd><input type="password" name="password" size="12" /></dd>
-  <dd><input type="submit" name="login" value="Login" /></dd>
-</dl>
-</form>
-{% endblock %}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/template/savane_user/index.html
@@ -0,0 +1,14 @@
+{# -*- Mode: django-html; -*- #}
+{% extends "base.html" %}
+
+{% block content %}
+<form action="login" method="post">
+<dl>
+  <dt>Login Name:</dt>
+  <dd><input type="text" name="username" value="" size="12" /></dd>
+  <dt>Password:</dt>
+  <dd><input type="password" name="password" size="12" /></dd>
+  <dd><input type="submit" name="login" value="Login" /></dd>
+</dl>
+</form>
+{% endblock %}
deleted file mode 100644
--- a/template/savane_user/mail.djhtml
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "base.djhtml" %}
-
-{% block content %}
-<div class="box">
-  <div class="boxtitle">Change E-Mail</div>
-  <div class="boxitem">
-    <form method="post">
-    {{form.as_p}}
-    <input type="submit" value="Update" />
-    </form>
-  </div>
-</div>
-{% endblock %}
new file mode 100644
--- /dev/null
+++ b/template/savane_user/mail.html
@@ -0,0 +1,14 @@
+{# -*- Mode: django-html; -*- #}
+{% extends "base.html" %}
+
+{% block content %}
+<div class="box">
+  <div class="boxtitle">Change E-Mail</div>
+  <div class="boxitem">
+    <form method="post">
+    {{form.as_p}}
+    <input type="submit" value="Update" />
+    </form>
+  </div>
+</div>
+{% endblock %}