diff --git a/local_settings.py.example b/local_settings.py.example index 6a166a7..fe6c1aa 100644 --- a/local_settings.py.example +++ b/local_settings.py.example @@ -1,4 +1,5 @@ DEBUG = False +MARKDOWN_PATH = '' DATABASES = { 'default': { diff --git a/pages/__init__.py b/pages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pages/management/__init__.py b/pages/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pages/management/commands/__init__.py b/pages/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pages/management/commands/parse_markdown.py b/pages/management/commands/parse_markdown.py new file mode 100644 index 0000000..8c193df --- /dev/null +++ b/pages/management/commands/parse_markdown.py @@ -0,0 +1,31 @@ +import os +import markdown + +from django.core.management.base import BaseCommand, CommandError + +from settings import MARKDOWN_PATH, DEPLOY_PATH + +class Command(BaseCommand): + help = 'Parse markdown files in %s' % MARKDOWN_PATH + + def handle(self, *args, **options): + for root, dirs, files in os.walk(MARKDOWN_PATH): + for file in files: + subdir = root.replace(MARKDOWN_PATH, "") + mdfile = '%s/%s' % (root, file) + mdname = '%s/%s' % (subdir, os.path.splitext(file)[0]) + htmlpath = '%s/templates/html_pages/%s' % (DEPLOY_PATH, mdname) + htmlfile = '%s/index.html' % htmlpath + + if os.path.exists(mdfile) and not os.path.exists(htmlfile) \ + or os.path.getmtime(mdfile) > os.path.getmtime(htmlfile): + + if not os.path.exists(htmlpath): + os.makedirs(htmlpath) + + md = markdown.Markdown() + print 'Converting ', mdname, '-->', htmlfile, + wikiExtension = 'wikilinks(base_url=%s/)' % subdir + markdown.markdownFromFile(input=mdfile, output=htmlfile, encoding="utf-8", extensions=[wikiExtension]) + print ' ... succeeded' + diff --git a/pages/models.py b/pages/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/pages/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/pages/urls.py b/pages/urls.py new file mode 100644 index 0000000..1c0cf82 --- /dev/null +++ b/pages/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('pages.views', + (r'^(?P.+)/$', 'index'), +) diff --git a/pages/views.py b/pages/views.py new file mode 100644 index 0000000..7a44701 --- /dev/null +++ b/pages/views.py @@ -0,0 +1,18 @@ +import os.path + +from django.http import Http404 +from django.views.generic.simple import direct_to_template + +from settings import DEPLOY_PATH + +def index(request, page): + + template = 'html_pages/%s/index.html' % page + if not os.path.exists('%s/templates/%s' % (DEPLOY_PATH, template)): + raise Http404 + + c = { + "page": template, + } + + return direct_to_template(request, "pages/index.html", c) diff --git a/settings.py b/settings.py index 5a6641e..50e4d11 100644 --- a/settings.py +++ b/settings.py @@ -87,4 +87,5 @@ INSTALLED_APPS = ( 'main', 'blog', 'projects', + 'pages', ) diff --git a/templates/.gitignore b/templates/.gitignore new file mode 100644 index 0000000..c46f106 --- /dev/null +++ b/templates/.gitignore @@ -0,0 +1 @@ +html_pages diff --git a/templates/pages/index.html b/templates/pages/index.html new file mode 100644 index 0000000..18988f9 --- /dev/null +++ b/templates/pages/index.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} + +{% block content %} +{% include page %} +{% endblock %} diff --git a/urls.py b/urls.py index a5e253d..3b24bf7 100644 --- a/urls.py +++ b/urls.py @@ -15,4 +15,8 @@ urlpatterns = patterns('', if DEBUG: urlpatterns += patterns('', (r'^static/(?P.*)$', 'django.views.static.serve', {'document_root': '%s/static' % DEPLOY_PATH}) + ) + +urlpatterns += patterns('', + (r'^', include("pages.urls")) )