[damned-lies] Change URL format for dynamic po



commit 8e334f1bd203951bacb7fbac593300bff0e2e3a6
Author: Claude Paroz <claude 2xlibre net>
Date:   Mon Sep 26 22:53:09 2011 +0200

    Change URL format for dynamic po
    
    Fixes bug #660109
    The previous format containing dots instead of slashes was problematic
    for example when a branch name contained dots. Splitting of components
    could not properly happen.

 stats/models.py         |    2 +-
 stats/tests/__init__.py |    4 ++--
 stats/views.py          |   12 ++++++------
 urls.py                 |    2 +-
 4 files changed, 10 insertions(+), 10 deletions(-)
---
diff --git a/stats/models.py b/stats/models.py
index 9af6212..d5a76e2 100644
--- a/stats/models.py
+++ b/stats/models.py
@@ -1691,7 +1691,7 @@ class FakeLangStatistics(object):
             locale = self.language.locale
         return reverse(
             'dynamic_po',
-            args=("%s.%s.%s.%s.po" % (self.branch.module.name, self.domain.name, self.branch.name, locale),)
+            args=(self.branch.module.name, self.domain.name, self.branch.name, "%s.po" % locale)
         )
 
 class FakeSummaryStatistics(object):
diff --git a/stats/tests/__init__.py b/stats/tests/__init__.py
index 3a6ec91..9e60e4e 100644
--- a/stats/tests/__init__.py
+++ b/stats/tests/__init__.py
@@ -181,13 +181,13 @@ class ModuleTestCase(TestCase):
         """ Test the creation of a blank po file for a new language """
         lang = Language.objects.create(name="Tamil", locale="ta")
         self.branch.update_stats(force=False) # At least POT stats needed
-        response = self.client.get('/module/po/gnome-hello.po.master.ta.po')
+        response = self.client.get('/module/po/gnome-hello/po/master/ta.po')
         self.assertContains(response, """# Tamil translation for gnome-hello.
 # Copyright (C) %s gnome-hello's COPYRIGHT HOLDER
 # This file is distributed under the same license as the gnome-hello package.
 # FIRST AUTHOR <EMAIL ADDRESS>, YEAR.""" % date.today().year)
         self.assertContains(response, "Language-Team: Tamil <ta li org>")
-        response = self.client.get('/module/po/gnome-hello.po.master.ta-reduced.po')
+        response = self.client.get('/module/po/gnome-hello/po/master/ta-reduced.po')
         self.assertContains(response, """# Tamil translation for gnome-hello.""")
 
     @test_scratchdir
diff --git a/stats/views.py b/stats/views.py
index 8c32eb0..4a6c781 100644
--- a/stats/views.py
+++ b/stats/views.py
@@ -168,10 +168,10 @@ def docimages(request, module_name, potbase, branch_name, langcode):
     }
     return render(request, 'module_images.html', context)
 
-def dynamic_po(request, filename):
+def dynamic_po(request, module_name, domain, branch_name, filename):
     """ Generates a dynamic po file from the POT file of a branch """
     try:
-        module, domain, branch, locale, ext = filename.split(".")
+        locale, ext = filename.split(".")
         if locale.endswith('-reduced'):
             locale, reduced = locale[:-8], True
         else:
@@ -180,8 +180,8 @@ def dynamic_po(request, filename):
     except:
         raise Http404
     potfile = get_object_or_404(Statistics,
-                             branch__module__name=module,
-                             branch__name=branch,
+                             branch__module__name=module_name,
+                             branch__name=branch_name,
                              domain__name=domain,
                              language=None)
     file_path = potfile.po_path(reduced=reduced).encode('ascii')
@@ -192,7 +192,7 @@ def dynamic_po(request, filename):
 # Copyright (C) %(year)s %(pack)s's COPYRIGHT HOLDER
 # This file is distributed under the same license as the %(pack)s package.\n""" % {
         'lang': language.name,
-        'pack': module,
+        'pack': module_name,
         'year': date.today().year
     }
     if request.user.is_authenticated():
@@ -216,7 +216,7 @@ def dynamic_po(request, filename):
             continue
         # Transformations
         new_line = {
-            '"Project-Id-': u"\"Project-Id-Version: %s %s\\n\"" % (module, branch),
+            '"Project-Id-': u"\"Project-Id-Version: %s %s\\n\"" % (module_name, branch_name),
             '"Last-Transl': u"\"Last-Translator: FULL NAME <EMAIL ADDRESS>\\n\"",
             '"Language-Te': u"\"Language-Team: %s <%s>\\n\"" % (
                 language.name, language.team and language.team.mailing_list or "%s li org" % locale),
diff --git a/urls.py b/urls.py
index 02730f5..ac8fb5c 100644
--- a/urls.py
+++ b/urls.py
@@ -61,7 +61,7 @@ urlpatterns += patterns('stats.views',
         view = 'modules',
         name = 'modules'),
     url(
-        regex = r'^module/po/(?P<filename>.*)$',
+        regex = r'^module/po/(?P<module_name>[\w\-\+]+)/(?P<domain>\w+)/(?P<branch_name>[\w\-\.]+)/(?P<filename>.*)$',
         view = 'dynamic_po',
         name = 'dynamic_po'),
     url(



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