diff piecrust/data/assetor.py @ 6:f5ca5c5bed85

More Python 3 fixes, modularization, and new unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Aug 2014 08:15:30 -0700
parents 474c9882decf
children a8f9c78a6608
line wrap: on
line diff
--- a/piecrust/data/assetor.py	Mon Aug 11 22:36:47 2014 -0700
+++ b/piecrust/data/assetor.py	Sat Aug 16 08:15:30 2014 -0700
@@ -1,3 +1,4 @@
+import os
 import os.path
 import logging
 from piecrust.uriutil import multi_replace
@@ -6,6 +7,10 @@
 logger = logging.getLogger(__name__)
 
 
+class UnsupportedAssetsError(Exception):
+    pass
+
+
 def build_base_url(app, uri, assets_path):
     base_url_format = app.env.base_asset_url_format
     site_root = app.config.get('site/root')
@@ -13,6 +18,7 @@
     pretty = app.config.get('site/pretty_urls')
     if not pretty:
         uri, _ = os.path.splitext(uri)
+    uri = uri.lstrip('/')
     base_url = multi_replace(
             base_url_format,
             {
@@ -71,5 +77,8 @@
         for _, __, filenames in os.walk(assets_dir):
             for fn in filenames:
                 name, ext = os.path.splitext(fn)
+                if name in self._cache:
+                    raise UnsupportedAssetsError(
+                            "Multiple asset files are named '%s'." % name)
                 self._cache[name] = base_url + fn