# HG changeset patch # User Tero Marttila # Date 1410650125 -10800 # Node ID da5de3a97efb32d36ed47b1a05f8cbf65f60d726 # Parent edcbbc94f90d751c8e663556f91eae941df91d9e pages: Site, footer with modified, basic css styles, page tree types diff -r edcbbc94f90d -r da5de3a97efb qmsk_www/settings.py --- a/qmsk_www/settings.py Sun Sep 14 01:45:17 2014 +0300 +++ b/qmsk_www/settings.py Sun Sep 14 02:15:25 2014 +0300 @@ -98,3 +98,4 @@ ) QMSK_WWW_PAGES_DIR = './pages' +QMSK_WWW_PAGES_SITE = "qmsk.net" diff -r edcbbc94f90d -r da5de3a97efb qmsk_www/templates/site.html --- a/qmsk_www/templates/site.html Sun Sep 14 01:45:17 2014 +0300 +++ b/qmsk_www/templates/site.html Sun Sep 14 02:15:25 2014 +0300 @@ -1,3 +1,4 @@ +{% load staticfiles %} @@ -5,10 +6,11 @@ {% block title %}{% endblock %} - + + - - + + {% block content %}{% endblock %} diff -r edcbbc94f90d -r da5de3a97efb qmsk_www_pages/pages.py --- a/qmsk_www_pages/pages.py Sun Sep 14 01:45:17 2014 +0300 +++ b/qmsk_www_pages/pages.py Sun Sep 14 02:15:25 2014 +0300 @@ -1,15 +1,28 @@ from django.conf import settings import codecs +import datetime import logging; log = logging.getLogger('qmsk_www_pages.pages') import os, os.path +class Site (object): + @classmethod + def lookup (cls): + return cls( + root = settings.QMSK_WWW_PAGES_DIR, + name = settings.QMSK_WWW_PAGES_SITE, + ) + + def __init__ (self, root, name): + self.root = root + self.name = name + class Tree (object): INDEX = 'index' @classmethod - def lookup (cls, parts): - path = settings.QMSK_WWW_PAGES_DIR + def lookup (cls, site, parts): + path = site.root for part in parts: if part.startswith('.'): @@ -27,12 +40,12 @@ if not os.path.isdir(path): return None - return cls(path, parts) + return cls(path, parts, site) - def __init__ (self, path, parts): + def __init__ (self, path, parts, site): self.path = path self.parts = parts - + self.site = site def url (self, tree=None, page=None): path = '/'.join(self.parts) @@ -51,7 +64,7 @@ def breadcrumb (self): path = [] - yield '', 'Home' + yield '', self.site.name for part in self.parts: path.append(part) @@ -88,7 +101,7 @@ for path, file_name, file_type in self.scan(): # trees if os.path.isdir(path): - yield self.url(tree=file_name), file_name + yield self.url(tree=file_name), file_name, None if file_name == self.INDEX: continue @@ -100,7 +113,7 @@ if file_type not in TYPES: continue - yield self.url(page=file_name), file_name + yield self.url(page=file_name), file_name, file_type def page (self, name): """ @@ -137,7 +150,7 @@ ENCODING = 'utf-8' @classmethod - def lookup (cls, page): + def lookup (cls, site, page): """ Lookup a Page from disk. @@ -159,7 +172,7 @@ tree_parts = [] # scan dir - tree = Tree.lookup(tree_parts) + tree = Tree.lookup(site, tree_parts) if not tree: return None @@ -184,6 +197,9 @@ def open (self): return codecs.open(self.path, encoding=self.encoding) + def stat (self): + return os.stat(self.path) + def breadcrumb (self): for path, name in self.tree.breadcrumb(): yield path, name @@ -191,6 +207,9 @@ if self.name != self.tree.INDEX: yield self.url(), self.name + def modified (self): + return datetime.datetime.utcfromtimestamp(self.stat().st_mtime) + def render (self, request): raise NotImplementedError() @@ -198,6 +217,12 @@ def render (self, request): return self.open().read() +SITE = Site.lookup() + TYPES = { 'html': HTML_Page, } + +def page (page): + return Page.lookup(SITE, page) + diff -r edcbbc94f90d -r da5de3a97efb qmsk_www_pages/static/pages/pages.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qmsk_www_pages/static/pages/pages.css Sun Sep 14 02:15:25 2014 +0300 @@ -0,0 +1,11 @@ +div.page-header { + border-bottom: 1px solid #EEE; +} + +div.page-footer { + border-top: 1px solid #EEE; + + margin: 40px 0px 0px 0px; + + padding: 20px 0px; +} diff -r edcbbc94f90d -r da5de3a97efb qmsk_www_pages/templates/pages/page.html --- a/qmsk_www_pages/templates/pages/page.html Sun Sep 14 01:45:17 2014 +0300 +++ b/qmsk_www_pages/templates/pages/page.html Sun Sep 14 02:15:25 2014 +0300 @@ -1,15 +1,14 @@ {% extends "site.html" %} -{% block title %}qmsk.net :: {{ page_name }}{% endblock %} +{% block title %}{{ site_name }} :: {{ page_name }}{% endblock %} {% block content %}
-
+ -
-
+
{% for page, name in tree_breadcrumb %}
-
+
{{ page_html|safe }}
+
{% endblock %} diff -r edcbbc94f90d -r da5de3a97efb qmsk_www_pages/views.py --- a/qmsk_www_pages/views.py Sun Sep 14 01:45:17 2014 +0300 +++ b/qmsk_www_pages/views.py Sun Sep 14 02:15:25 2014 +0300 @@ -5,15 +5,17 @@ # Create your views here. def page (request, page): - page = pages.Page.lookup(page) + page = pages.page(page) if not page: raise Http404 return render(request, 'pages/page.html', dict( + site_name = page.tree.site.name, tree_breadcrumb = page.tree.breadcrumb(), page_name = page.name, page_breadcrumb = page.breadcrumb(), page_list = page.tree.list(), page_html = page.render(request), + page_modified = page.modified(), ))