damned-lies r1422 - in trunk: . languages media media/css stats templates/languages templates/teams



Author: claudep
Date: Tue Feb  3 13:29:12 2009
New Revision: 1422
URL: http://svn.gnome.org/viewvc/damned-lies?rev=1422&view=rev

Log:
2009-02-03  Claude Paroz  <claude 2xlibre net>

	* languages/views.py:
	* media/css/main.css: Add branch class.
	* stats/models.py: Make get_lang_stats_by_type a method of Statistics
	instead of Release.
	* templates/languages/language_all_modules.html: Include
	language_release_stats.html
	* templates/languages/language_release.html:
	* templates/languages/language_release_stats.html: Module table is now
	sortable. Move "Download all po files" to language_release.
	* templates/teams/team_detail.html: Add links to "all modules" view.
    Fixes bugs #415315, #567084.

Modified:
   trunk/ChangeLog
   trunk/languages/views.py
   trunk/media/   (props changed)
   trunk/media/css/main.css
   trunk/stats/models.py
   trunk/templates/languages/language_all_modules.html
   trunk/templates/languages/language_release.html
   trunk/templates/languages/language_release_stats.html
   trunk/templates/teams/team_detail.html

Modified: trunk/languages/views.py
==============================================================================
--- trunk/languages/views.py	(original)
+++ trunk/languages/views.py	Tue Feb  3 13:29:12 2009
@@ -42,13 +42,14 @@
 
 def language_all(request, locale, dtype):
     language = get_object_or_404(Language, locale=Language.unslug_locale(locale))
-    stats = Statistics.objects.filter(language=language, domain__dtype=dtype).select_related('branch__module', 'domain') 
+    stats = Statistics.get_lang_stats_by_type(language, dtype, release=None)
     context = {
         'pageSection': "languages",
         'language': language,
         'stats_title': {'ui':  _("UI Translations"),
                         'doc': _("Documentation")}.get(dtype),
         'stats': stats,
+        'dateformat': get_date_formats()[0],
     }
     return render_to_response('languages/language_all_modules.html', context,
                               context_instance=RequestContext(request))
@@ -56,7 +57,7 @@
 def language_release(request, locale, release_name, dtype):
     language = get_object_or_404(Language, locale=Language.unslug_locale(locale))
     release = get_object_or_404(Release, name=release_name)
-    stats = release.get_lang_stats_by_type(language, dtype)
+    stats = Statistics.get_lang_stats_by_type(language, dtype, release)
     context = {
         'pageSection': "languages",
         'language': language,

Modified: trunk/media/css/main.css
==============================================================================
--- trunk/media/css/main.css	(original)
+++ trunk/media/css/main.css	Tue Feb  3 13:29:12 2009
@@ -201,6 +201,12 @@
   color: #666666;
 }
 
+.branch {
+  font-size: x-small;
+  font-style: italic;
+  color: #666666;
+}
+
 .help {
   font-size: 10px;
   color: #999;
@@ -274,4 +280,4 @@
   clear: both;
   margin-top: 20px;
   color: #aaaaaa;
-}
\ No newline at end of file
+}

Modified: trunk/stats/models.py
==============================================================================
--- trunk/stats/models.py	(original)
+++ trunk/stats/models.py	Tue Feb  3 13:29:12 2009
@@ -793,120 +793,10 @@
         """ Get statistics for a specific language, producing the stats data structure
             Used for displaying the language-release template """
         
-        stats = {'doc': self.get_lang_stats_by_type(lang, 'doc'),
-                 'ui':  self.get_lang_stats_by_type(lang, 'ui'), 
+        stats = {'doc': Statistics.get_lang_stats_by_type(lang, 'doc', self),
+                 'ui':  Statistics.get_lang_stats_by_type(lang, 'ui', self), 
                 }
         return stats
-    
-    def get_lang_stats_by_type(self, lang, dtype):
-        """ Cook statistics for an entire release, a domain type dtype and the language lang.
-            Structure of the resulting stats dictionary is as follows:
-            stats = {
-                'dtype':dtype, # 'ui' or 'doc'
-                'total': 0,
-                'totaltrans': 0,
-                'totalfuzzy': 0,
-                'totaluntrans': 0,
-                'totaltransperc': 0,
-                'totalfuzzyperc': 0,
-                'totaluntransperc': 0,
-                'categs': {
-                    <categname>: {
-                        'catname': <catname>, # translated category name (see CATEGORY_CHOICES)
-                        'cattotal': 0,
-                        'cattrans': 0,
-                        'catfuzzy': 0, 
-                        'catuntrans': 0,
-                        'cattransperc': 0,
-                        'modules': { # This dict is converted to a sorted list at the end of stats computation
-                            <modname>: {
-                                'domains': [(<domname>, <stat>), ...], # List of tuples (domain name, Statistics object)
-                                           # First element is a placeholder for a FakeStatistics object
-                                           # only used for summary if module has more than 1 domain
-                                'branch': <branch>
-                                }
-                            }
-                        }
-                    }
-                },
-                'all_errors':[]
-            }
-        """
-        from vertimus.models import StateDb # import here to prevent a circular dependency
-        
-        stats = {'dtype':dtype, 'totaltrans':0, 'totalfuzzy':0, 'totaluntrans':0,
-                 'totaltransperc': 0, 'totalfuzzyperc': 0, 'totaluntransperc': 0,
-                 'categs':{}, 'all_errors':[]}
-        # Sorted by module to allow grouping ('fake' stats)
-        pot_stats = Statistics.objects.extra(select={'categ_name': "category.name"}).select_related('domain', 'branch__module').filter(language=None, branch__releases=self, domain__dtype=dtype).order_by('branch__module__id')
-
-        tr_stats = Statistics.objects.select_related('domain', 'language', 'branch__module').filter(language=lang, branch__releases=self, domain__dtype=dtype).order_by('branch__module__id')
-        tr_stats_dict = dict([("%d-%d" % (st.branch.id, st.domain.id),st) for st in tr_stats])
-
-        infos_dict = Information.get_info_dict(lang)
-        
-        vt_states = StateDb.objects.select_related('branch','domain').filter(language=lang, branch__releases=self, domain__dtype=dtype)
-        vt_states_dict = dict([("%d-%d" % (vt.branch.id, vt.domain.id),vt) for vt in vt_states])
-
-        for stat in pot_stats:
-            categdescr = stat.categ_name
-            domname = _(stat.domain.description)
-            modname = stat.branch.module.name
-            if categdescr not in stats['categs']:
-                stats['categs'][categdescr] = {'cattrans':0, 'catfuzzy':0, 'catuntrans':0,
-                                               'cattransperc':0, 'modules':{}}
-            # Try to get translated stat, else stick with POT stat
-            br_dom_key = "%d-%d" % (stat.branch.id, stat.domain.id)
-            if br_dom_key in tr_stats_dict:
-                stat = tr_stats_dict[br_dom_key]
-            # Match stat with error list
-            if stat.id in infos_dict:
-                stat.info_list = infos_dict[stat.id]
-                stats['all_errors'].extend(stat.info_list)
-
-            # Search if a state exists for this statistic
-            if br_dom_key in vt_states_dict:
-                stat.state = vt_states_dict[br_dom_key]
-
-            stats['totaltrans'] += stat.translated
-            stats['totalfuzzy'] += stat.fuzzy
-            stats['totaluntrans'] += stat.untranslated
-            stats['categs'][categdescr]['cattrans'] += stat.translated
-            stats['categs'][categdescr]['catfuzzy'] += stat.fuzzy
-            stats['categs'][categdescr]['catuntrans'] += stat.untranslated
-            if modname not in stats['categs'][categdescr]['modules']:
-                # first element is a placeholder for a fake stat
-                stats['categs'][categdescr]['modules'][modname] = {'domains':[[' fake', None], (domname, stat)],
-                                                                   'branch': stat.branch.name }
-            else:
-                if len(stats['categs'][categdescr]['modules'][modname]['domains']) == 2:
-                    # Create a fake statistics object for module summary
-                    stats['categs'][categdescr]['modules'][modname]['domains'][0][1] = FakeStatistics(stat.domain.module, dtype)
-                    stats['categs'][categdescr]['modules'][modname]['domains'][0][1].trans(stats['categs'][categdescr]['modules'][modname]['domains'][1][1])
-                stats['categs'][categdescr]['modules'][modname]['domains'].append((domname, stat))
-                stats['categs'][categdescr]['modules'][modname]['domains'][0][1].trans(stat)
-              
-        # Compute percentages and sorting
-        stats['total'] = stats['totaltrans'] + stats['totalfuzzy'] + stats['totaluntrans']
-        if stats['total'] > 0:
-            stats['totaltransperc'] = int(100*stats['totaltrans']/stats['total'])
-            stats['totalfuzzyperc'] = int(100*stats['totalfuzzy']/stats['total'])
-            stats['totaluntransperc'] = int(100*stats['totaluntrans']/stats['total'])
-        for key, categ in stats['categs'].items():
-            categ['catname'] = Category.get_cat_name(key)
-            categ['cattotal'] = categ['cattrans'] + categ['catfuzzy'] + categ['catuntrans']
-            if categ['cattotal'] > 0:
-                categ['cattransperc'] = int(100*categ['cattrans']/categ['cattotal'])
-            # Sort modules
-            mods = [[name,mod] for name, mod in categ['modules'].items()]
-            mods.sort()
-            categ['modules'] = mods
-            # Sort domains
-            for mod in categ['modules']:
-                mod[1]['domains'].sort()
-        # Sort errors
-        stats['all_errors'].sort()
-        return stats
 
     def get_lang_files(self, lang, dtype):
         """ Return a list of all po files of a lang for this release, preceded by the more recent modification date
@@ -1115,7 +1005,137 @@
             if not error or e.type == 'error' or (e.type == 'warn' and error.type == 'info'):
                 error = e
         return error
+
+    @classmethod
+    def get_lang_stats_by_type(cls, lang, dtype, release):
+        """ Cook statistics for an entire release, a domain type dtype and the language lang.
+            Structure of the resulting stats dictionary is as follows:
+            stats = {
+                'dtype':dtype, # 'ui' or 'doc'
+                'total': 0,
+                'totaltrans': 0,
+                'totalfuzzy': 0,
+                'totaluntrans': 0,
+                'totaltransperc': 0,
+                'totalfuzzyperc': 0,
+                'totaluntransperc': 0,
+                'categs': {
+                    <categname>: {
+                        'catname': <catname>, # translated category name (see CATEGORY_CHOICES)
+                        'cattotal': 0,
+                        'cattrans': 0,
+                        'catfuzzy': 0, 
+                        'catuntrans': 0,
+                        'cattransperc': 0,
+                        'modules': { # This dict is converted to a sorted list at the end of stats computation
+                            <modname>: {
+                                <branchname>:
+                                    [(<domname>, <stat>), ...], # List of tuples (domain name, Statistics object)
+                                           # First element is a placeholder for a FakeStatistics object
+                                           # only used for summary if module has more than 1 domain
+                                }
+                            }
+                        }
+                    }
+                },
+                'all_errors':[]
+            }
+        """
+        from vertimus.models import StateDb # import here to prevent a circular dependency
+        
+        stats = {'dtype':dtype, 'totaltrans':0, 'totalfuzzy':0, 'totaluntrans':0,
+                 'totaltransperc': 0, 'totalfuzzyperc': 0, 'totaluntransperc': 0,
+                 'categs':{}, 'all_errors':[]}
+        # Sorted by module to allow grouping ('fake' stats)
+        pot_stats = Statistics.objects.select_related('domain', 'branch__module')
+        if release:
+            pot_stats = pot_stats.extra(select={'categ_name': "category.name"}).filter(language=None, branch__releases=release, domain__dtype=dtype).order_by('branch__module__id')
+        else:
+            pot_stats = pot_stats.filter(language=None, domain__dtype=dtype).order_by('branch__module__id')
+
+        tr_stats = Statistics.objects.select_related('domain', 'language', 'branch__module')
+        if release:
+            tr_stats = tr_stats.filter(language=lang, branch__releases=release, domain__dtype=dtype).order_by('branch__module__id')
+        else:
+            tr_stats = tr_stats.filter(language=lang, domain__dtype=dtype).order_by('branch__module__id')
+        tr_stats_dict = dict([("%d-%d" % (st.branch.id, st.domain.id),st) for st in tr_stats])
+
+        infos_dict = Information.get_info_dict(lang)
         
+        vt_states = StateDb.objects.select_related('branch','domain')
+        if release:
+            vt_states = vt_states.filter(language=lang, branch__releases=release, domain__dtype=dtype)
+        else:
+            vt_states = vt_states.filter(language=lang, domain__dtype=dtype)
+        vt_states_dict = dict([("%d-%d" % (vt.branch.id, vt.domain.id),vt) for vt in vt_states])
+
+        for stat in pot_stats:
+            categdescr = "default"
+            if release:
+                categdescr = stat.categ_name
+            domname = _(stat.domain.description)
+            branchname = stat.branch.name
+            modname = stat.branch.module.name
+            if categdescr not in stats['categs']:
+                stats['categs'][categdescr] = {'cattrans':0, 'catfuzzy':0, 'catuntrans':0,
+                                               'cattransperc':0, 'modules':{}}
+            # Try to get translated stat, else stick with POT stat
+            br_dom_key = "%d-%d" % (stat.branch.id, stat.domain.id)
+            if br_dom_key in tr_stats_dict:
+                stat = tr_stats_dict[br_dom_key]
+            # Match stat with error list
+            if stat.id in infos_dict:
+                stat.info_list = infos_dict[stat.id]
+                stats['all_errors'].extend(stat.info_list)
+
+            # Search if a state exists for this statistic
+            if br_dom_key in vt_states_dict:
+                stat.state = vt_states_dict[br_dom_key]
+
+            stats['totaltrans'] += stat.translated
+            stats['totalfuzzy'] += stat.fuzzy
+            stats['totaluntrans'] += stat.untranslated
+            stats['categs'][categdescr]['cattrans'] += stat.translated
+            stats['categs'][categdescr]['catfuzzy'] += stat.fuzzy
+            stats['categs'][categdescr]['catuntrans'] += stat.untranslated
+            if modname not in stats['categs'][categdescr]['modules']:
+                # first element is a placeholder for a fake stat
+                stats['categs'][categdescr]['modules'][modname] = {branchname:[[' fake', None], (domname, stat)]}
+            elif branchname not in stats['categs'][categdescr]['modules'][modname]:
+                # first element is a placeholder for a fake stat
+                stats['categs'][categdescr]['modules'][modname][branchname] = [[' fake', None], (domname, stat)]
+            else:
+                # Here we add the 2nd or more stat to the same module-branch
+                if len(stats['categs'][categdescr]['modules'][modname][branchname]) == 2:
+                    # Create a fake statistics object for module summary
+                    stats['categs'][categdescr]['modules'][modname][branchname][0][1] = FakeStatistics(stat.domain.module, dtype)
+                    stats['categs'][categdescr]['modules'][modname][branchname][0][1].trans(stats['categs'][categdescr]['modules'][modname][branchname][1][1])
+                stats['categs'][categdescr]['modules'][modname][branchname].append((domname, stat))
+                stats['categs'][categdescr]['modules'][modname][branchname][0][1].trans(stat)
+              
+        # Compute percentages and sorting
+        stats['total'] = stats['totaltrans'] + stats['totalfuzzy'] + stats['totaluntrans']
+        if stats['total'] > 0:
+            stats['totaltransperc'] = int(100*stats['totaltrans']/stats['total'])
+            stats['totalfuzzyperc'] = int(100*stats['totalfuzzy']/stats['total'])
+            stats['totaluntransperc'] = int(100*stats['totaluntrans']/stats['total'])
+        for key, categ in stats['categs'].items():
+            categ['catname'] = Category.get_cat_name(key)
+            categ['cattotal'] = categ['cattrans'] + categ['catfuzzy'] + categ['catuntrans']
+            if categ['cattotal'] > 0:
+                categ['cattransperc'] = int(100*categ['cattrans']/categ['cattotal'])
+            # Sort modules
+            mods = [[name,mod] for name, mod in categ['modules'].items()]
+            mods.sort()
+            categ['modules'] = mods
+            # Sort domains
+            for mod in categ['modules']:
+                for branch, doms in mod[1].items():
+                    doms.sort()
+        # Sort errors
+        stats['all_errors'].sort()
+        return stats
+
 class FakeStatistics(object):
     """ This is a fake statistics class where a summary value is needed for a multi-domain module
         This is used in get_lang_stats for the language-release-stats template """

Modified: trunk/templates/languages/language_all_modules.html
==============================================================================
--- trunk/templates/languages/language_all_modules.html	(original)
+++ trunk/templates/languages/language_all_modules.html	Tue Feb  3 13:29:12 2009
@@ -29,38 +29,9 @@
 </p>
 
 <h3>{{ stats_title }}</h3>
-<table class="tablesorter" name="stats-table" id="stats-table">
-<thead>
-  <tr><th>{% trans "Module" %}</th><th>{% trans "Branch" %}</th><th>{% trans "Statistics" %}</th></tr>
-</thead>
-<tbody>
-{% for stat in stats %}
-  {% with stat.branch.module.name as modname %}
-  {% ifequal stat.tr_percentage 100 %}
-    <tr id="{{ modname }}-{{ stat.domain.id }}-complete">
-  {% else %}
-    <tr>
-  {% endifequal %}
-      <td><a href="{% url vertimus-names-view modname stat.branch.name stat.domain.name language.locale %}">{{ stat.branch.module.name }}</a></td>
-      <td>{{ stat.branch.name }}
-          {% ifnotequal stat.domain.name "po" %}
-            ({{ stat.domain.name }})
-          {% endifnotequal %}
-      </td>
-      <td><span style="display:none;">{{ stat.tr_percentage }}</span>
-          {{ stat.tr_percentage }}%&nbsp;({{ stat.translated }}/{{ stat.fuzzy }}/{{ stat.untranslated }})</td>
-      <td style="width: 108px; text-align: center;">
-        <div class="graph">
-          <div class="translated" style="width: {{ stat.tr_percentage }}px;"></div>
-          <div class="fuzzy" style="{{ LANGUAGE_BIDI|yesno:"right,left" }}:{{ stat.tr_percentage }}px; width:{{ stat.fu_percentage }}px;"></div>
-          <div class="untranslated" style="{{ LANGUAGE_BIDI|yesno:"right,left" }}:{{ stat.tr_percentage|add:stat.fu_percentage }}px; width: {{ stat.un_percentage }}px;"></div>
-        </div>
-      </td>
-  </tr>
-  {% endwith %}
-{% endfor %}
-</tbody>
-</table>
+{% with stats as modstats %}
+  {% include "languages/language_release_stats.html" %}
+{% endwith %}
 
 </div>
 {% endblock %}

Modified: trunk/templates/languages/language_release.html
==============================================================================
--- trunk/templates/languages/language_release.html	(original)
+++ trunk/templates/languages/language_release.html	Tue Feb  3 13:29:12 2009
@@ -2,6 +2,20 @@
 {% load i18n %}
 
 {% block title %} {% trans release.description %} - {% trans language.name %}{% endblock %}
+{% block extrahead %}
+<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery.min.js"></script> 
+<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery.tablesorter.min.js"></script>
+<script type="text/javascript">
+$(document).ready(function() 
+    { 
+        $("#stats-table").tablesorter({headers: {3:{sorter: false}}});
+        $("#stats-table").bind("sortStart",function() { 
+            /* Hide category subheaders when sorting */
+            $("tr.subheader").hide(); 
+        })
+    }
+);
+</script>{% endblock %}
 
 {% block content %}
 <div class="mainpage">
@@ -25,5 +39,8 @@
   {% include "languages/language_release_stats.html" %}
 {% endwith %}
 
+<hr />
+<p><a href="{% url languages.views.language_release_tar locale=language.locale release_name=release.name dtype=stats.dtype %}"><img src="{{ MEDIA_URL }}img/download.png" /> {% trans "Download all po files" %}</a></p>
+
 </div>
 {% endblock %}

Modified: trunk/templates/languages/language_release_stats.html
==============================================================================
--- trunk/templates/languages/language_release_stats.html	(original)
+++ trunk/templates/languages/language_release_stats.html	Tue Feb  3 13:29:12 2009
@@ -2,9 +2,9 @@
 
 {% load i18n %}
 
-<table name="stats-table">
+<table>
 <tr>
-  <td class="leftcell" colspan="2">{{ modstats.totaltransperc }}% ({{ modstats.totaltrans }}/{{ modstats.totalfuzzy }}/{{ modstats.totaluntrans }})</td>
+  <td class="leftcell" colspan="3">{{ modstats.totaltransperc }}% ({{ modstats.totaltrans }}/{{ modstats.totalfuzzy }}/{{ modstats.totaluntrans }})</td>
   <td style="width: 108px; text-align: center;"><div class="graph">
       <div class="translated" style="width: {{ modstats.totaltransperc }}px;"></div>
       <div class="fuzzy" style="left:{{ modstats.totaltransperc }}px; width:{{ modstats.totalfuzzyperc }}px;"></div>
@@ -14,46 +14,53 @@
      </div>
    </td>
 </tr>
+</table>
 
+<table class="tablesorter" name="stats-table" id="stats-table">
+<thead>
+  <tr><th>{% trans "Module" %}</th><th>{% trans "Branch&nbsp;&nbsp;&nbsp;" %}</th><th >{% trans "Statistics" %}</th>
+      <th></th><th>{% trans "Status&nbsp;&nbsp;&nbsp;" %}</th><th>{% trans "Date&nbsp;&nbsp;&nbsp;" %}</th></tr>
+</thead>
+<tbody>
+ {# empty line to not disturb tablesorter if 1st line is a colspan #}
+ <tr style="display:none;"><td>mod</td><td>br</td><td>100</td><td></td><td>state</td><td></td></tr>
 {% for catname,categ in modstats.categs.items %}
   {% ifnotequal catname "default" %}
-    <tr><td colspan="3" class="leftcell" style="font-weight: bold; padding-top:1em;">
+    <tr class="subheader"><td colspan="4" class="leftcell" style="font-weight: bold; padding-top:1em;">
      {% with categ.cattransperc as percentage %}
      {% with categ.catname as categname %}
      {% blocktrans %}{{ categname }} ({{ percentage }}% translated){% endblocktrans %}
      {% endwith %}
      {% endwith %}
-    </td></tr>
+    </td><td></td></tr>
   {% endifnotequal %}
   
   {% for module in categ.modules %}
     {% with module.0 as modname %}
-    {% for dom in module.1.domains %}
+    {% for branch, doms in module.1.items %}
+     {% for dom in doms %}
       {% with dom.0 as domname %}
       {% with dom.1 as stat %}
-      {% if stat %}
+      {% if stat and not stat.is_fake %}
         {% ifequal stat.tr_percentage 100 %}
           <tr id="{{ modname }}-{{ stat.domain.id }}-complete">
         {% else %}
           <tr>
         {% endifequal %}
+        <td class="leftcell">
+          <a href="{% url vertimus-names-view modname branch stat.domain.name language.locale %}">{{ stat.module_description }}
           {% if stat.partial_po %}
-            {# This is a partial po, indented, with the domain description #}
-            <td class="leftcell" style="padding-left:2em; padding-right:2em;">
-            <a href="{% url vertimus-names-view modname module.1.branch stat.domain.name language.locale %}">{{ domname }}</a>
-          {% else %}
-            <td class="leftcell">
-            {% if not stat.is_fake %}
-              <a href="{% url vertimus-names-view modname module.1.branch stat.domain.name language.locale %}">{{ stat.module_description }}</a>
-            {% else %}
-              <em>{{ stat.module_description }}</em>
-            {% endif %}
+            {# For a partial po, domain description is appended #}
+            &bull; {{ domname }}
           {% endif %}
+          </a>          
           {% for err in stat.info_list %}
             <img src="{{ err.get_icon }}" title="{{ err.get_description|striptags }}" alt="{{ err.type }}" />
           {% endfor %}
-          </td>
-          <td>{{ stat.tr_percentage }}%&nbsp;({{ stat.translated }}/{{ stat.fuzzy }}/{{ stat.untranslated }})</td>
+        </td>
+          <td><span class="branch">{{ branch }}</span></td>
+          <td><span style="display:none;">{{ stat.tr_percentage }}</span>
+              {{ stat.tr_percentage }}%&nbsp;({{ stat.translated }}/{{ stat.fuzzy }}/{{ stat.untranslated }})</td>
           <td style="width: 108px; text-align: center;"><div class="graph">
               <div class="translated" style="width: {{ stat.tr_percentage }}px;"></div>
               <div class="fuzzy" style="left:{{ stat.tr_percentage }}px; width:{{ stat.fu_percentage }}px;"></div>
@@ -65,18 +72,23 @@
            <td>
            {% if stat.state.name %}
              {% ifnotequal stat.state.name "None" %}
-             <em><small>{{ stat.state.get_state }} - {{ stat.state.updated|date:dateformat }}</small></em>
+             <em><small>{{ stat.state.get_state }}</small></em></td>
+             <td><span style="display: none;">{{ stat.state.updated }}</span><em><small>{{ stat.state.updated|date:dateformat }}
+             {% else %} </td><td>
              {% endifnotequal %}
+           {% else %} </td><td>
            {% endif %}
            </td>
         </tr>
       {% endif %}
       {% endwith %}
       {% endwith %}
+     {% endfor %}
     {% endfor %}
     {% endwith %}
   {% endfor %}
 {% endfor %}
+</tbody>
 </table>
 
 {% if modstats.all_errors %}
@@ -88,6 +100,4 @@
   {% endfor %}
   </ul>
 {% endif %}
-<hr />
-<p><a href="{% url languages.views.language_release_tar locale=language.locale release_name=release.name dtype=modstats.dtype %}"><img src="/media/img/download.png" /> {% trans "Download all po files" %}</a></p>
 

Modified: trunk/templates/teams/team_detail.html
==============================================================================
--- trunk/templates/teams/team_detail.html	(original)
+++ trunk/templates/teams/team_detail.html	Tue Feb  3 13:29:12 2009
@@ -56,6 +56,8 @@
     {% endif %}
   </tr>
   {% endfor %}
+  <tr><td></td><td><a href="{% url language_all lang.locale,"ui" %}">{% trans "All modules" %}</a></td>
+      <td></td><td><a href="{% url language_all lang.locale,"doc" %}">{% trans "All modules" %}</a></td><td></td></tr>
 </table>
 {% endfor %}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]