diff --git a/mixins/assetsmixin.py b/mixins/assetsmixin.py index a1064a9..c4a6a58 100644 --- a/mixins/assetsmixin.py +++ b/mixins/assetsmixin.py @@ -4,7 +4,6 @@ import shutil from verdandi.constants import CONTENT_DIRECTORY - class AssetsMixin(object): assets = [] @@ -15,53 +14,4 @@ class AssetsMixin(object): return self.assets def collect_assets(self, output_directory): - assets = self.get_assets() - - for source, destination in assets: - source_path = os.path.join(self.asset_directory, source) - dest_path = os.path.join(output_directory, destination); - - if os.path.isdir(source_path): - self.copy_dir(source_path, dest_path) - elif os.path.isfile(source_path): - self.copy_file(source_path, dest_path) - else: - print "Skipping %s is neither directory nor file" % source_path - - - def copy_file(self, source_path, dest_path): - print "Copying %s to %s" % (source_path, dest_path) - - dest_dir = os.path.dirname(dest_path) - - if not os.path.exists(dest_dir): - os.makedirs(dest_dir) - shutil.copy(source_path, dest_path) - - - def copy_dir(self, source_path, dest_path): - # /foo/bar /rofl -> contents of bar go to rofl/bar - # /foo/bar/ /rofl -> contests of bar got to rofl/ - # Trailing slash on destination should have no effect - - # Will be '' in case of a trailing slash: /foo/bar/ else bar - source_base = os.path.basename(source_path) - # /rofl will become /rofl/ if base is '' otherwise it will become /rofl/bar - dest_path = os.path.join(dest_path, source_base) - - if not os.path.exists(dest_path): - os.makedirs(dest_path) - - # Discover the whole tree and copy each file individually - for source_dir, _, files in os.walk(source_path): - rel_path = os.path.relpath(source_dir, source_path) - # Purely cosmetical for debug output - if rel_path == '.': - dest_dir = dest_path - else: - dest_dir = os.path.join(dest_path, rel_path) - - for source_file in files: - file_source_path = os.path.join(source_dir, source_file) - file_dest_path = os.path.join(dest_dir, source_file) - self.copy_file(file_source_path, file_dest_path) + pass diff --git a/mixins/fileassetsmixin.py b/mixins/fileassetsmixin.py new file mode 100644 index 0000000..44ee667 --- /dev/null +++ b/mixins/fileassetsmixin.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python2 +import os +import shutil + +from verdandi.mixins.assetsmixin import AssetsMixin + +from verdandi.constants import CONTENT_DIRECTORY + + +class FileAssetsMixin(AssetsMixin): + + def collect_assets(self, output_directory): + super(FileAssetsMixin, self).collect_assets(output_directory) + + assets = self.get_assets() + + for source, destination in assets: + source_path = os.path.join(self.asset_directory, source) + dest_path = os.path.join(output_directory, destination); + + if os.path.isdir(source_path): + self.copy_dir(source_path, dest_path) + elif os.path.isfile(source_path): + self.copy_file(source_path, dest_path) + else: + print "Skipping %s is neither directory nor file" % source_path + + + def copy_file(self, source_path, dest_path): + print "Copying %s to %s" % (source_path, dest_path) + + dest_dir = os.path.dirname(dest_path) + + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + shutil.copy(source_path, dest_path) + + + def copy_dir(self, source_path, dest_path): + # /foo/bar /rofl -> contents of bar go to rofl/bar + # /foo/bar/ /rofl -> contests of bar got to rofl/ + # Trailing slash on destination should have no effect + + # Will be '' in case of a trailing slash: /foo/bar/ else bar + source_base = os.path.basename(source_path) + # /rofl will become /rofl/ if base is '' otherwise it will become /rofl/bar + dest_path = os.path.join(dest_path, source_base) + + if not os.path.exists(dest_path): + os.makedirs(dest_path) + + # Discover the whole tree and copy each file individually + for source_dir, _, files in os.walk(source_path): + rel_path = os.path.relpath(source_dir, source_path) + # Purely cosmetical for debug output + if rel_path == '.': + dest_dir = dest_path + else: + dest_dir = os.path.join(dest_path, rel_path) + + for source_file in files: + file_source_path = os.path.join(source_dir, source_file) + file_dest_path = os.path.join(dest_dir, source_file) + self.copy_file(file_source_path, file_dest_path) diff --git a/modules/commonassets.py b/modules/commonassets.py index 36b9cad..4542e25 100644 --- a/modules/commonassets.py +++ b/modules/commonassets.py @@ -1,8 +1,8 @@ #!/usr/bin/env python2 -from verdandi.mixins.assetsmixin import AssetsMixin +from verdandi.mixins.fileassetsmixin import FileAssetsMixin from verdandi.mixins.messagemixin import MessageMixin from verdandi.mixins.rendermixin import RenderMixin -class CommonAssets(AssetsMixin, MessageMixin, RenderMixin): +class CommonAssets(FileAssetsMixin, MessageMixin, RenderMixin): pass diff --git a/modules/gallery.py b/modules/gallery.py index 6fa3667..298676d 100644 --- a/modules/gallery.py +++ b/modules/gallery.py @@ -7,11 +7,11 @@ import markdown from verdandi.mixins.templatemixin import TemplateMixin from verdandi.mixins.menuitemmixin import MenuItemMixin -from verdandi.mixins.assetsmixin import AssetsMixin +from verdandi.mixins.fileassetsmixin import FileAssetsMixin from verdandi.mixins.newsitemmixin import NewsItemMixin from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS -class Gallery(MenuItemMixin, NewsItemMixin, TemplateMixin, AssetsMixin): +class Gallery(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin): title = 'Gallery Title' gallery_description_file = 'description.md' gallery_directory = 'gallery' diff --git a/modules/newsfeed.py b/modules/newsfeed.py index f4891e3..0ff8c9f 100644 --- a/modules/newsfeed.py +++ b/modules/newsfeed.py @@ -7,11 +7,11 @@ from dateutil import parser from verdandi.mixins.templatemixin import TemplateMixin from verdandi.mixins.menuitemmixin import MenuItemMixin -from verdandi.mixins.assetsmixin import AssetsMixin +from verdandi.mixins.fileassetsmixin import AssetsMixin from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS -class NewsFeed(MenuItemMixin, TemplateMixin, AssetsMixin): +class NewsFeed(MenuItemMixin, TemplateMixin, FileAssetsMixin): title = "News feed title" template = "newsfeed.html" diff --git a/modules/page.py b/modules/page.py index 467aa3d..ebd36d8 100644 --- a/modules/page.py +++ b/modules/page.py @@ -6,11 +6,11 @@ import markdown from verdandi.mixins.templatemixin import TemplateMixin from verdandi.mixins.menuitemmixin import MenuItemMixin -from verdandi.mixins.assetsmixin import AssetsMixin +from verdandi.mixins.fileassetsmixin import FileAssetsMixin from verdandi.mixins.newsitemmixin import NewsItemMixin from verdandi.constants import CONTENT_DIRECTORY, MARKDOWN_EXTENSIONS -class Page(MenuItemMixin, NewsItemMixin, TemplateMixin, AssetsMixin): +class Page(MenuItemMixin, NewsItemMixin, TemplateMixin, FileAssetsMixin): title = "Page Title" content_file = "content.md"