damned-lies r1128 - in branches/djamnedlies: . languages stats stats/management/commands teams templates templates/languages templates/teams vertimus



Author: stephaner
Date: Mon Nov  3 14:11:09 2008
New Revision: 1128
URL: http://svn.gnome.org/viewvc/damned-lies?rev=1128&view=rev

Log:
2008-11-03  StÃphane Raimbault  <stephane raimbault gmail com>

	Moved language components to their own 'languages' application.

	* languages/admin.py: Register the new model.
	* languages/models.py: Moved from stats.models with adjustments.
	* languages/urls.py: Moved from stats.urls with adjustments.
	* languages/views.py: Moved from stats.views with adjustments.
	* settings_sample.py: Added teams, people and languages.
	* stats/admin.py:
	* stats/management/commands/migrate.py:
	* stats/models.py: Removed Language and duplicate slug_locale().
	Renamed lang in lang_name and langcode in lang_locale.
	* stats/urls.py: Removed old URL.
	* stats/views.py: Removed languages() and languagerelease().
	* teams/models.py: 
	* teams/views.py: Fix wrong import from stats.
	* templates/languages/language_list.html: Remove useless spaces in
	title. It's simpler to directly call the team URL.
	* templates/languages/language_release.html: Use locale for locale
	and avoid a duplicate assignment.
	* templates/languages/language_release_stats.html:
	* templates/release.html: Use locale for locale!
	* templates/teams/team_detail.html: New name for the view
	language_release.	
	* urls.py: Add the languages application.
	* vertimus/models.py: Updated imports.


Added:
   branches/djamnedlies/languages/
   branches/djamnedlies/languages/__init__.py
   branches/djamnedlies/languages/admin.py
   branches/djamnedlies/languages/models.py
   branches/djamnedlies/languages/urls.py
   branches/djamnedlies/languages/views.py
   branches/djamnedlies/templates/languages/
   branches/djamnedlies/templates/languages/language_list.html
      - copied, changed from r1126, /branches/djamnedlies/templates/language_list.html
   branches/djamnedlies/templates/languages/language_release.html
      - copied, changed from r1126, /branches/djamnedlies/templates/language_release.html
   branches/djamnedlies/templates/languages/language_release_stats.html
      - copied unchanged from r1126, /branches/djamnedlies/templates/language_release_stats.html
Removed:
   branches/djamnedlies/templates/language_list.html
   branches/djamnedlies/templates/language_release.html
   branches/djamnedlies/templates/language_release_stats.html
Modified:
   branches/djamnedlies/ChangeLog
   branches/djamnedlies/settings_sample.py
   branches/djamnedlies/stats/admin.py
   branches/djamnedlies/stats/management/commands/migrate.py
   branches/djamnedlies/stats/models.py
   branches/djamnedlies/stats/urls.py
   branches/djamnedlies/stats/views.py
   branches/djamnedlies/teams/models.py
   branches/djamnedlies/teams/views.py
   branches/djamnedlies/templates/release.html
   branches/djamnedlies/templates/teams/team_detail.html
   branches/djamnedlies/urls.py
   branches/djamnedlies/vertimus/models.py

Added: branches/djamnedlies/languages/__init__.py
==============================================================================

Added: branches/djamnedlies/languages/admin.py
==============================================================================
--- (empty file)
+++ branches/djamnedlies/languages/admin.py	Mon Nov  3 14:11:09 2008
@@ -0,0 +1,4 @@
+from django.contrib import admin
+from languages.models import Language
+
+admin.site.register(Language)

Added: branches/djamnedlies/languages/models.py
==============================================================================
--- (empty file)
+++ branches/djamnedlies/languages/models.py	Mon Nov  3 14:11:09 2008
@@ -0,0 +1,43 @@
+from django.db import models
+from teams.models import Team
+
+class Language(models.Model):
+    name = models.CharField(max_length=50, unique=True)
+    locale = models.CharField(max_length=15, unique=True)
+    team = models.ForeignKey(Team, null=True)
+
+    class Meta:
+        db_table = 'language'
+        ordering = ('name',)
+
+    def __unicode__(self):
+        return "%s (%s)" % (self.name, self.locale)
+
+    @classmethod
+    def slug_locale(cls, loc_string):
+        if loc_string:
+            return loc_string.replace('@', '_at_')
+        return None
+
+    @classmethod
+    def unslug_locale(cls, loc_string):
+        if loc_string:
+            return loc_string.replace('_at_', '@')
+        return None
+    
+    def bugs_url_enter(self):
+        return "http://bugzilla.gnome.org/enter_bug.cgi?product=l10n&amp;component=%s%%20[%s]"; %  (self.name, self.locale)
+        
+    def bugs_url_show(self):
+        return "http://bugzilla.gnome.org/buglist.cgi?product=l10n&amp;component=%s%%20[%s]&amp;bug_status=NEW&amp;bug_status=REOPENED&amp;bug_status=ASSIGNED&amp;bug_status=UNCONFIRMED"; % (self.name, self.locale)          
+
+    def get_release_stats(self):
+        # FIXME Here be dragons
+        """ Get summary stats for all releases """
+        from stats.models import Release
+        
+        releases = Release.objects.all().order_by('status', '-name')
+        stats = []
+        for rel in releases:
+            stats.append(rel.total_for_lang(self))
+        return stats

Added: branches/djamnedlies/languages/urls.py
==============================================================================
--- (empty file)
+++ branches/djamnedlies/languages/urls.py	Mon Nov  3 14:11:09 2008
@@ -0,0 +1,6 @@
+from django.conf.urls.defaults import *
+
+urlpatterns = patterns('',
+    url(r'^$', 'languages.views.languages', name='languages'),
+    url(r'(?P<locale>\w+)/(?P<release_id>\d+)/$', 'languages.views.language_release', name='language_release'),
+)

Added: branches/djamnedlies/languages/views.py
==============================================================================
--- (empty file)
+++ branches/djamnedlies/languages/views.py	Mon Nov  3 14:11:09 2008
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2008 StÃphane Raimbault <stephane raimbault gmail com>
+#
+# This file is part of Damned Lies.
+#
+# Damned Lies is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Damned Lies is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Damned Lies; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from django.shortcuts import render_to_response
+from common import utils
+from languages.models import Language
+from stats.models import Release
+
+def languages(request):
+    languages = Language.objects.all()
+    context = {
+        'pageSection': "languages",
+        'languages': utils.trans_sort_object_list(languages, 'name')
+    }
+    return render_to_response('languages/language_list.html', context)
+
+def language_release(request, locale, release_id):
+    language = Language.objects.get(locale=Language.unslug_locale(locale))
+    release = Release.objects.get(pk=release_id)
+    stats = release.get_lang_stats(language)
+    context = {
+        'pageSection': "languages",
+        'language': language,
+        'release': release,
+        'stats': stats
+    }
+    return render_to_response('languages/language_release.html', context)

Modified: branches/djamnedlies/settings_sample.py
==============================================================================
--- branches/djamnedlies/settings_sample.py	(original)
+++ branches/djamnedlies/settings_sample.py	Mon Nov  3 14:11:09 2008
@@ -93,6 +93,9 @@
     'django.contrib.sessions',
     'django.contrib.sites',
     'django.contrib.admin',
+    'languages',
+    'people',
     'stats',
+    'teams',
     'vertimus'
 )

Modified: branches/djamnedlies/stats/admin.py
==============================================================================
--- branches/djamnedlies/stats/admin.py	(original)
+++ branches/djamnedlies/stats/admin.py	Mon Nov  3 14:11:09 2008
@@ -19,7 +19,7 @@
 # 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 from django.contrib import admin
-from stats.models import Statistics, Module, Branch, Category, Release, Language
+from stats.models import Statistics, Module, Branch, Category, Release
 
 class ReleaseAdmin(admin.ModelAdmin):
     list_display = ('name', 'status', 'stringfrozen')
@@ -29,4 +29,4 @@
 admin.site.register(Branch)
 admin.site.register(Category)
 admin.site.register(Release, ReleaseAdmin)
-admin.site.register(Language)
+

Modified: branches/djamnedlies/stats/management/commands/migrate.py
==============================================================================
--- branches/djamnedlies/stats/management/commands/migrate.py	(original)
+++ branches/djamnedlies/stats/management/commands/migrate.py	Mon Nov  3 14:11:09 2008
@@ -3,9 +3,11 @@
 from django.core.management.base import BaseCommand
 from people.models import Person
 from teams.models import Team
-from stats.models import Language, Module, Branch, Domain, Release, Category, Statistics
+from languages.models import Language
+from stats.models import Module, Branch, Domain, Release, Category, Statistics
 from stats.conf import settings
 
+
 class Command(BaseCommand):
     """ Before the migration, set the xml_base directory to a legacy Damned Lies checkout """
     

Modified: branches/djamnedlies/stats/models.py
==============================================================================
--- branches/djamnedlies/stats/models.py	(original)
+++ branches/djamnedlies/stats/models.py	Mon Nov  3 14:11:09 2008
@@ -28,53 +28,7 @@
 import potdiff
 
 from people.models import Person
-from teams.models import Team
-
-class Language(models.Model):
-    name = models.CharField(max_length=50)
-    locale = models.CharField(max_length=15)
-    team = models.ForeignKey(Team, null=True)
-
-    class Meta:
-        db_table = 'language'
-        ordering = ('name',)
-
-    def __unicode__(self):
-        return "%s (%s)" % (self.name, self.locale)
-
-    @models.permalink
-    def get_absolute_url(self):
-        return ('language', [self.locale])
-
-    def slug_locale(self):
-        return self.locale.replace('@', '_at_')
-    
-    @classmethod
-    def slug_locale(cls, loc_string):
-        if loc_string:
-            return loc_string.replace('@', '_at_')
-        return None
-
-    @classmethod
-    def unslug_locale(cls, loc_string):
-        if loc_string:
-            return loc_string.replace('_at_', '@')
-        return None
-    
-    def bugs_url_enter(self):
-        return "http://bugzilla.gnome.org/enter_bug.cgi?product=l10n&amp;component=%s%%20[%s]"; %  (self.name, self.locale)
-        
-    def bugs_url_show(self):
-        return "http://bugzilla.gnome.org/buglist.cgi?product=l10n&amp;component=%s%%20[%s]&amp;bug_status=NEW&amp;bug_status=REOPENED&amp;bug_status=ASSIGNED&amp;bug_status=UNCONFIRMED"; % (self.name, self.locale)          
-
-    def get_release_stats(self):
-        """ Get summary stats for all releases """
-        releases = Release.objects.all().order_by('status', '-name')
-        stats = []
-        for rel in releases:
-            stats.append(rel.total_for_lang(self))
-        return stats
-
+from languages.models import Language
     
 VCS_TYPE_CHOICES = (
     ('cvs', 'CVS'), 
@@ -600,11 +554,12 @@
         for row in cursor.fetchall():
             if not stats.has_key(row[1]):
                 # Initialize stats dict
-                stats[row[1]] = {'lang':row[0], 'lang_code':Language.slug_locale(row[1]),
-                                  'doc_trans':0, 'doc_fuzzy':0, 'doc_untrans': total_docstrings,
-                                  'doc_percent':0, 'doc_percentfuzzy':0, 'doc_percentuntrans':100,
-                                  'ui_trans':0, 'ui_fuzzy':0, 'ui_untrans': total_uistrings,
-                                  'ui_percent':0, 'ui_percentfuzzy':0, 'ui_percentuntrans':100}
+                stats[row[1]] = {
+                    'lang_name': row[0], 'lang_locale': Language.slug_locale(row[1]),
+                    'doc_trans': 0, 'doc_fuzzy': 0, 'doc_untrans': total_docstrings,
+                    'doc_percent': 0, 'doc_percentfuzzy': 0, 'doc_percentuntrans': 100,
+                    'ui_trans': 0, 'ui_fuzzy': 0, 'ui_untrans': total_uistrings,
+                    'ui_percent': 0, 'ui_percentfuzzy': 0, 'ui_percentuntrans': 100}
             if row[2] == 'doc':
                 stats[row[1]]['doc_trans'] = row[3]
                 stats[row[1]]['doc_fuzzy'] = row[4]
@@ -631,7 +586,7 @@
         if not res:
             res = cmp(b['doc_trans'], a['doc_trans'])
             if not res:
-                res = cmp(b['lang'], a['lang'])
+                res = cmp(b['lang_name'], a['lang_name'])
         return res  
     
     def get_lang_stats(self, lang):
@@ -776,7 +731,10 @@
 
     def get_lang(self):
         if self.language:
-            return _("%(langname)s (%(langcode)s)") % {'langname':self.language.name, 'langcode':self.language.locale}
+            return _("%(lang_name)s (%(lang_locale)s)") % { 
+                'lang_name': self.language.name,
+                'lang_locale': self.language.locale
+            }
         else:
             return "pot file"
     

Modified: branches/djamnedlies/stats/urls.py
==============================================================================
--- branches/djamnedlies/stats/urls.py	(original)
+++ branches/djamnedlies/stats/urls.py	Mon Nov  3 14:11:09 2008
@@ -4,8 +4,6 @@
 # FIXME All these URL must be branched under '/' not '/stats' to
 # maintain an URL compatibility with the old DL
 urlpatterns = patterns('stats.views',
-    url(r'^languages/$', 'languages', name='languages'),
-    url(r'^languages/(?P<langcode>\w+)/(?P<release_id>\d+)/$', 'languagerelease', name='languagerelease'),
     url(r'^module/$', 'modules', name='modules'),
     (r'^module/(?P<module_name>[\w\-\+]+)$', 'module'),
     (r'^module/(?P<module_name>[\w\-\+]+)/(?P<potbase>\w+)/(?P<branch_name>[\w-]+)/(?P<langcode>\w+)/images/$', 'docimages'),

Modified: branches/djamnedlies/stats/views.py
==============================================================================
--- branches/djamnedlies/stats/views.py	(original)
+++ branches/djamnedlies/stats/views.py	Mon Nov  3 14:11:09 2008
@@ -19,20 +19,12 @@
 # 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 from django.shortcuts import render_to_response
-from stats.models import Statistics, Language, Module, Release
+from stats.models import Statistics, Module, Release
 from stats.conf import settings
 from djamnedlies.stats import utils
 from django.http import HttpResponse
 from django.utils.translation import ugettext_lazy as _
 
-def languages(request):
-    all_languages = Language.objects.all()
-    context = {
-        'pageSection': "languages",
-        'languages': utils.sortObjectList(all_languages, 'name')
-    }
-    return render_to_response('language_list.html', context)
-
 def modules(request):
     all_modules = Module.objects.all()
     context = {
@@ -81,14 +73,3 @@
     }
     return render_to_response('release.html', context)
 
-def languagerelease(request, langcode, release_id):
-    rel = Release.objects.get(id=release_id)
-    lang = Language.objects.get(locale=Language.unslug_locale(langcode))
-    rel_stats = rel.get_lang_stats(lang)
-    context = {
-        'pageSection': "languages",
-        'language': lang,
-        'release': rel,
-        'stats': rel_stats
-    }
-    return render_to_response('language_release.html', context)

Modified: branches/djamnedlies/teams/models.py
==============================================================================
--- branches/djamnedlies/teams/models.py	(original)
+++ branches/djamnedlies/teams/models.py	Mon Nov  3 14:11:09 2008
@@ -20,7 +20,7 @@
 
 from django.db import models
 from django.contrib.auth.models import Group
-from stats.models import Person
+from people.models import Person
 
 class Team(Group):
     """The name of the team is stored in Group.name.

Modified: branches/djamnedlies/teams/views.py
==============================================================================
--- branches/djamnedlies/teams/views.py	(original)
+++ branches/djamnedlies/teams/views.py	Mon Nov  3 14:11:09 2008
@@ -21,7 +21,7 @@
 
 from django.shortcuts import render_to_response
 from common import utils
-from stats.models import Team
+from teams.models import Team
 
 def teams(request):
     teams = Team.objects.all()

Copied: branches/djamnedlies/templates/languages/language_list.html (from r1126, /branches/djamnedlies/templates/language_list.html)
==============================================================================
--- /branches/djamnedlies/templates/language_list.html	(original)
+++ branches/djamnedlies/templates/languages/language_list.html	Mon Nov  3 14:11:09 2008
@@ -1,7 +1,7 @@
 {% extends "base.html" %}
 {% load i18n %}
 
-{% block title %} {% trans "GNOME Languages" %} {% endblock %}
+{% block title %}{% trans "GNOME Languages" %}{% endblock %}
 
 {% block content %}
 <div class="mainpage">
@@ -19,9 +19,9 @@
 {% for lang in languages %}
 <li style="font-size: 120%;">
   {% if lang.name %}
-  <a href="{{ lang.get_absolute_url }}">{{ lang.translated_name }}</a>
+  <a href="{{ lang.team.get_absolute_url }}">{{ lang.translated_name }}</a>
   {% else %}
-  <a href="{{ lang.get_absolute_url }}">{{ lang.locale }}</a>
+  <a href="{{ lang.team.get_absolute_url }}">{{ lang.locale }}</a>
   {% endif %}
 </li>
 {% endfor %}

Copied: branches/djamnedlies/templates/languages/language_release.html (from r1126, /branches/djamnedlies/templates/language_release.html)
==============================================================================
--- /branches/djamnedlies/templates/language_release.html	(original)
+++ branches/djamnedlies/templates/languages/language_release.html	Mon Nov  3 14:11:09 2008
@@ -6,9 +6,9 @@
 {% block content %}
 <div class="mainpage">
 
-{% with language.locale as lcode %}
+{% with language.locale as locale %}
 {% if language.team %}
-  <h1>{% blocktrans with language.team.description as lang %}{{ lang }} Translation Team â {{ lcode }}{% endblocktrans %}</h1>
+  <h1>{% blocktrans with language.team.description as lang %}{{ lang }} Translation Team â {{ locale }}{% endblocktrans %}</h1>
 
 <table><tr><td valign="top" width="50%">
   <h2>{% trans "Details" %}</h2>
@@ -45,8 +45,8 @@
   {% endif %}
 </td></tr></table>
 {% else %}
-  <h1>{% blocktrans with language.locale as code %}Language code: {{ code }}{% endblocktrans %}</h1>
-  <p>{% blocktrans %}There is no translation team in charge of '{{ lcode }}' translation.{% endblocktrans %}</p>
+  <h1>{% blocktrans %}Language code: {{ locale }}{% endblocktrans %}</h1>
+  <p>{% blocktrans %}There is no translation team in charge of '{{ locale }}' translation.{% endblocktrans %}</p>
 {% endif %}
 {% endwith %}
 
@@ -69,7 +69,7 @@
   <td valign="top" width="50%"><!-- two columns set-up -->
   <h3>{% trans "Documentation" %}</h3>
   {% with stats.doc as modstats %}
-    {% include "language_release_stats.html" %}
+    {% include "languages/language_release_stats.html" %}
   {% endwith %}
   </td>
 {% endif %}  
@@ -77,7 +77,7 @@
 
   <h3>{% trans "UI translations" %}</h3>
   {% with stats.ui as modstats %}
-    {% include "language_release_stats.html" %}
+    {% include "languages/language_release_stats.html" %}
   {% endwith %}
 </td></tr></table><!-- end two column layout -->
 

Modified: branches/djamnedlies/templates/release.html
==============================================================================
--- branches/djamnedlies/templates/release.html	(original)
+++ branches/djamnedlies/templates/release.html	Mon Nov  3 14:11:09 2008
@@ -19,7 +19,7 @@
 {% for lstats in release.get_global_stats %}
 <tr>
   <td class="leftcell" style="font-size:120%;">
-    <a href="{% url languagerelease langcode=lstats.lang_code release_id=release.id %}">{% trans lstats.lang %}</a>
+    <a href="{% url language_release locale=lstats.lang_locale release_id=release.id %}">{% trans lstats.lang_name %}</a>
   </td>
   
   {% ifnotequal lstats.doc_trans|add:lstats.doc_fuzzy "0" %}

Modified: branches/djamnedlies/templates/teams/team_detail.html
==============================================================================
--- branches/djamnedlies/templates/teams/team_detail.html	(original)
+++ branches/djamnedlies/templates/teams/team_detail.html	Mon Nov  3 14:11:09 2008
@@ -52,7 +52,7 @@
   {% for stat in lang.get_release_stats %}
     <tr>
       <td class="leftcell" style="font-size:120%;">
-        <a href="{% url languagerelease lang.locale,stat.id %}">{{ stat.name }}</a>
+        <a href="{% url language_release lang.locale,stat.id %}">{{ stat.name }}</a>
       </td>
   
     {% if stat.doctotal %}

Modified: branches/djamnedlies/urls.py
==============================================================================
--- branches/djamnedlies/urls.py	(original)
+++ branches/djamnedlies/urls.py	Mon Nov  3 14:11:09 2008
@@ -7,12 +7,7 @@
 # To try to respect http://www.w3.org/Provider/Style/URI
 # The following URL must be added:
 
-# - /people/ -> all
-# - /people/<id>
-
-# - /languages/ -> all
 # - /languages/<name> (not sure, redirects on team)
-# - /languages/<langcode>/<release_id>/
 
 # - /module/ -> all
 # - /module/<name>
@@ -23,6 +18,7 @@
     url(r'^$', 'common.views.index', name='home'),
     (r'^teams/', include('teams.urls')),
     (r'^people/', include('people.urls')),
+    (r'^languages/', include('languages.urls')),
     (r'^stats/', include('stats.urls')),
     (r'^admin/(.*)', admin.site.root),
 )

Modified: branches/djamnedlies/vertimus/models.py
==============================================================================
--- branches/djamnedlies/vertimus/models.py	(original)
+++ branches/djamnedlies/vertimus/models.py	Mon Nov  3 14:11:09 2008
@@ -20,8 +20,9 @@
 
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
-from django.contrib.auth.models import User
-from stats.models import Person, Branch, Domain, Language
+from people.models import Person
+from languages.models import Language
+from stats.models import Branch, Domain
 from workflow_state import *
 
 ACTION_CODES = (



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