Skip to content

Commit

Permalink
Added a more generic assets mixin
Browse files Browse the repository at this point in the history
  • Loading branch information
LongHairedHacker committed Apr 22, 2016
1 parent fdd2cd1 commit c775fc6
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 59 deletions.
52 changes: 1 addition & 51 deletions mixins/assetsmixin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

from verdandi.constants import CONTENT_DIRECTORY


class AssetsMixin(object):

assets = []
Expand All @@ -15,53 +14,4 @@ def get_assets(self):
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
64 changes: 64 additions & 0 deletions mixins/fileassetsmixin.py
Original file line number Diff line number Diff line change
@@ -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)
4 changes: 2 additions & 2 deletions modules/commonassets.py
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions modules/gallery.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

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'
Expand Down
4 changes: 2 additions & 2 deletions modules/newsfeed.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

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"
Expand Down
4 changes: 2 additions & 2 deletions modules/page.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

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"
Expand Down

0 comments on commit c775fc6

Please sign in to comment.