From cfdc9b6de0957da7258c2b400d3588da834de11c Mon Sep 17 00:00:00 2001 From: bkfox Date: Sun, 4 Oct 2015 22:05:10 +0200 Subject: [PATCH] work on sections --- aircox_cms/static/aircox_cms/styles.css | 43 ++- .../templates/aircox_cms/base_section.html | 9 + .../templates/aircox_cms/base_site.html | 27 +- aircox_cms/templates/aircox_cms/menu.html | 8 +- aircox_cms/templates/aircox_cms/section.html | 55 +-- aircox_cms/views.py | 319 ++++++++++-------- aircox_cms/website.py | 42 ++- website/static/website/colony.png | Bin 0 -> 15222 bytes website/static/website/logo.png | Bin 0 -> 42051 bytes website/static/website/styles.css | 44 +++ website/urls.py | 26 +- website/views.py | 10 +- 12 files changed, 372 insertions(+), 211 deletions(-) create mode 100644 aircox_cms/templates/aircox_cms/base_section.html create mode 100644 website/static/website/colony.png create mode 100644 website/static/website/logo.png create mode 100644 website/static/website/styles.css diff --git a/aircox_cms/static/aircox_cms/styles.css b/aircox_cms/static/aircox_cms/styles.css index 54d97e3..db2fe27 100644 --- a/aircox_cms/static/aircox_cms/styles.css +++ b/aircox_cms/static/aircox_cms/styles.css @@ -1,10 +1,41 @@ -body { padding: 0; margin: 0; } - -nav.menu_top { - width: 100% - position: absolute; - border-bottom: 1px grey solid; +body { + padding: 0; + margin: 0; } +.page { + display: flex; +} + + .page .menu { + width: 15em; + } + + .page .menu_left { margin-right: 0.5em; } + .page .menu_right { margin-left: 0.5em; } + + .page main { + flex-grow: 1; + } + + +main .section { + width: calc(50% - 1em); + float: left; + padding: 0.5em; +} + + main .section .section_content { + font-size: 0.95em; + } + + main .section h1 { + font-size: 1.2em; + } + + main .section * { + max-width: 100%; + } + diff --git a/aircox_cms/templates/aircox_cms/base_section.html b/aircox_cms/templates/aircox_cms/base_section.html new file mode 100644 index 0000000..4a054b6 --- /dev/null +++ b/aircox_cms/templates/aircox_cms/base_section.html @@ -0,0 +1,9 @@ + +<{{ tag }} class="section {{ classes }}" + {% for key, value in attrs.items %}{{ key }} = "{{ value|addslashes }}" + {% endfor %} > +{% block content %} +{{ content|safe }} +{% endblock %} + + diff --git a/aircox_cms/templates/aircox_cms/base_site.html b/aircox_cms/templates/aircox_cms/base_site.html index 3646555..5f14dc4 100644 --- a/aircox_cms/templates/aircox_cms/base_site.html +++ b/aircox_cms/templates/aircox_cms/base_site.html @@ -8,22 +8,23 @@ - + + {% if website.styles %} + + {% endif %} {{ website.name }} {% if title %}- {{ title }} {% endif %} + {% block header %} + {% if menus.header %} + {{ menus.header|safe }} + {% endif %} + {% endblock %} + {% if menus.top %} {{ menus.top|safe }} {% endif %} - {% block header %} - {% if menus.header %} -
- {{ menus.header|safe }} -
- {% endif %} - {% endblock %} -
{% if menus.left %} {{ menus.left|safe }} @@ -50,11 +51,13 @@ {% endif %}
+ {% if menus.page_bottom %} + {{ menus.page_bottom|safe }} + {% endif %} + {% block footer %} {% if menus.footer %} - + {{ menus.footer|safe }} {% endif %} {% endblock %} diff --git a/aircox_cms/templates/aircox_cms/menu.html b/aircox_cms/templates/aircox_cms/menu.html index 917406b..acfc3f0 100644 --- a/aircox_cms/templates/aircox_cms/menu.html +++ b/aircox_cms/templates/aircox_cms/menu.html @@ -1,10 +1,10 @@ - + diff --git a/aircox_cms/templates/aircox_cms/section.html b/aircox_cms/templates/aircox_cms/section.html index 38e477b..3f549a4 100644 --- a/aircox_cms/templates/aircox_cms/section.html +++ b/aircox_cms/templates/aircox_cms/section.html @@ -1,33 +1,34 @@ -
- {% if title %} -

- {% block section_title %} - {{ title }} - {% endblock %} -

- {% endif %} +{% extends "aircox_cms/base_section.html" %} - {% if header %} -
- {% block section_header %} - {{ header }} - {% endblock %} -
- {% endif %} +{% block content %} +{% if title %} +

+ {% block section_title %} + {{ title }} + {% endblock %} +

+{% endif %} -
- {% block section_content %} - {{ content|safe }} - {% endblock %} -
+{% if header %} +
+ {% block section_header %} + {{ header }} + {% endblock %} +
+{% endif %} - {% if bottom %} -
- {% block section_bottom %} - {{ bottom }} - {% endblock %} -
- {% endif %} +
+ {% block section_content %} + {{ content|safe }} + {% endblock %}
+{% if bottom %} +
+ {% block section_bottom %} + {{ bottom }} + {% endblock %} +
+{% endif %} +{% endblock %} diff --git a/aircox_cms/views.py b/aircox_cms/views.py index ba95209..30f681a 100644 --- a/aircox_cms/views.py +++ b/aircox_cms/views.py @@ -1,9 +1,14 @@ +import re + + +from django.templatetags.static import static from django.shortcuts import render from django.template.loader import render_to_string from django.views.generic import ListView, DetailView from django.views.generic.base import View, TemplateResponseMixin from django.core import serializers from django.utils.translation import ugettext as _, ugettext_lazy +from django.utils.html import escape import aircox_cms.routes as routes @@ -29,12 +34,8 @@ class PostBaseView: context['menus'] = { k: v.get(self.request) for k, v in { - 'top': self.website.get_menu('top'), - 'left': self.website.get_menu('left'), - 'bottom': self.website.get_menu('bottom'), - 'right': self.website.get_menu('right'), - 'header': self.website.get_menu('header'), - 'footer': self.website.get_menu('footer'), + k: self.website.get_menu(k) + for k in self.website.menu_layouts }.items() if v } @@ -162,6 +163,179 @@ class PostDetailView (DetailView, PostBaseView): return context +class Menu (View): + template_name = 'aircox_cms/menu.html' + + name = '' + tag = 'nav' + enabled = True + classes = '' + position = '' # top, left, bottom, right, header, footer, page_top, page_bottom + sections = None + + def __init__ (self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.name = self.name or ('menu_' + self.position) + + def get_context_data (self, **kwargs): + return { + 'name': self.name, + 'tag': self.tag, + 'classes': self.classes, + 'position': self.position, + 'sections': [ + section.get(self.request, object = None) + for section in self.sections + ] + } + + def get (self, request, **kwargs): + self.request = request + context = self.get_context_data(**kwargs) + return render_to_string(self.template_name, context) + + + +class BaseSection (View): + """ + Base class for sections. Sections are view that can be used in detail view + in order to have extra content about a post, or in menus. + """ + template_name = 'aircox_cms/base_section.html' + tag = 'div' # container tags + classes = '' # container classes + attrs = '' # container extra attributes + content = '' # content + + + def get_context_data (self, **kwargs): + return { + 'tag': self.tag, + 'classes': self.classes, + 'attrs': self.attrs, + 'content': self.content, + } + + def get (self, request, **kwargs): + self.request = request + context = self.get_context_data(**kwargs) + return render_to_string(self.template_name, context) + + +class Section (BaseSection): + template_name = 'aircox_cms/section.html' + require_object = False + object = None + title = '' + header = '' + bottom = '' + + def get_context_data (self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'title': self.title, + 'header': self.header, + 'bottom': self.bottom, + }) + return context + + def get (self, request, **kwargs): + self.object = kwargs.get('object') or self.object + return super().get(request, **kwargs) + + +class Sections: + class Image (BaseSection): + url = None # relative url to the image + + @property + def content (self): + return ''.format( + static(self.url), + ) + + + class PostContent (Section): + @property + def content (self): + content = escape(self.object.content) + content = re.sub(r'(^|\n\n)((\n?[^\n])+)', r'

\2

', content) + content = re.sub(r'\n', r'
', content) + return content + + + class PostImage (Section): + @property + def content (self): + return ''.format( + self.object.image.url + ) + + + class List (Section): + """ + Section to render list. The context item 'object_list' is used as list of + items to render. + """ + class Item: + icon = None + title = None + text = None + + def __init__ (self, icon, title = None, text = None): + self.icon = icon + self.title = title + self.text = text + + use_icons = True + icon_size = '32x32' + template_name = 'aircox_cms/section_list.html' + + def get_object_list (self): + return [] + + def get_context_data (self, **kwargs): + context = super().get_context_data(**kwargs) + context.update({ + 'classes': context.get('classes') + ' section_list', + 'icon_size': self.icon_size, + 'object_list': self.get_object_list(), + }) + return context + + + class UrlList (List): + classes = 'section_urls' + targets = None + + def get_object_list (self, request, **kwargs): + return [ + List.Item( + target.image or None, + '{}'.format(target.detail_url(), target.title) + ) + for target in self.targets + ] + + + class PostList (PostListView): + route = None + model = None + embed = True + + def __init__ (self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def get_kwargs (self, request, **kwargs): + return kwargs + + def dispatch (self, request, *args, **kwargs): + kwargs = self.get_kwargs(kwargs) + response = super().dispatch(request, *args, **kwargs) + return str(response.content) + + + class ViewSet: """ A ViewSet is a class helper that groups detail and list views that can be @@ -173,7 +347,10 @@ class ViewSet: list_routes = [] detail_view = PostDetailView - detail_sections = [] + detail_sections = [ + Sections.PostContent, + Sections.PostImage, + ] def __init__ (self, website = None): self.detail_sections = [ @@ -195,131 +372,3 @@ class ViewSet: [ routes.DetailRoute.as_url(self.model, self.detail_view ) ] -class Menu (View): - template_name = 'aircox_cms/menu.html' - - name = '' - enabled = True - classes = '' - position = '' # top, left, bottom, right, header, footer - sections = None - - def __init__ (self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.name = self.name or ('menu_' + self.position) - - def get_context_data (self, **kwargs): - return { - 'name': self.name, - 'classes': self.classes, - 'position': self.position, - 'sections': [ - section.get(self.request, object = None) - for section in self.sections - ] - } - - def get (self, request, **kwargs): - self.request = request - context = self.get_context_data(**kwargs) - return render_to_string(self.template_name, context) - - -class Section (View): - """ - Base class for sections. Sections are view that can be used in detail view - in order to have extra content about a post. - """ - template_name = 'aircox_cms/section.html' - require_object = False - object = None - classes = '' - title = '' - content = '' - header = '' - bottom = '' - - def get_context_data (self, **kwargs): - context = { - 'title': self.title, - 'header': self.header, - 'content': self.content, - 'bottom': self.bottom, - 'classes': self.classes, - } - return context - - def get (self, request, **kwargs): - self.object = kwargs.get('object') or self.object - self.request = request - context = self.get_context_data(**kwargs) - return render_to_string(self.template_name, context) - - - -class ListSection (Section): - """ - Section to render list. The context item 'object_list' is used as list of - items to render. - """ - class Item: - icon = None - title = None - text = None - - def __init__ (self, icon, title = None, text = None): - self.icon = icon - self.title = title - self.text = text - - use_icons = True - icon_size = '32x32' - template_name = 'aircox_cms/section_list.html' - - def get_object_list (self): - return [] - - def get_context_data (self, **kwargs): - context = super().get_context_data(**kwargs) - context.update({ - 'classes': context.get('classes') + ' section_list', - 'icon_size': self.icon_size, - 'object_list': self.get_object_list(), - }) - return context - - -class UrlListSection (ListSection): - classes = 'section_urls' - targets = None - - def get_object_list (self, request, **kwargs): - return [ - ListSection.Item( - target.image or None, - '{}'.format(target.detail_url(), target.title) - ) - for target in self.targets - ] - - -class PostListSection (PostListView): - route = None - model = None - embed = True - - def __init__ (self, *args, **kwargs): - super().__init__(*args, **kwargs) - - def get_kwargs (self, request, **kwargs): - return kwargs - - def dispatch (self, request, *args, **kwargs): - kwargs = self.get_kwargs(kwargs) - response = super().dispatch(request, *args, **kwargs) - return str(response.content) - -# TODO: -# - get_title: pass object / queryset - - diff --git a/aircox_cms/website.py b/aircox_cms/website.py index fe3f877..45a4a6c 100644 --- a/aircox_cms/website.py +++ b/aircox_cms/website.py @@ -6,38 +6,46 @@ class Website: description = 'An aircox website' # public description (used in meta info) tags = 'aircox,radio,music' # public keywords (used in meta info) - logo = None - menus = None + styles = '' # relative url to stylesheet file + menus = None # list of menus + menu_layouts = ['top', 'left', # available positions + 'right', 'bottom', + 'header', 'footer'] router = None + @property + def urls (self): + return self.router.get_urlpatterns() + def __init__ (self, **kwargs): self.__dict__.update(kwargs) if not self.router: self.router = routes.Router() def register_set (self, view_set): + """ + Register a ViewSet (or subclass) to the router, + and connect it to self. + """ view_set = view_set(website = self) self.router.register_set(view_set) def get_menu (self, position): + """ + Get an enabled menu by its position + """ for menu in self.menus: if menu.enabled and menu.position == position: + self.check_menu_tag(menu) return menu - def get_top_menu (self): - return self.get_menu('top') - - def get_left_menu (self): - return self.get_menu('left') - - def get_bottom_menu (self): - return self.get_menu('bottom') - - def get_right_menu (self): - return self.get_menu('right') - - @property - def urls (self): - return self.router.get_urlpatterns() + def check_menu_tag (self, menu): + """ + Update menu tag if it is a footer or a header + """ + if menu.position in ('footer','header'): + menu.tag = menu.position + if menu.position in ('left', 'right'): + menu.tag = 'side' diff --git a/website/static/website/colony.png b/website/static/website/colony.png new file mode 100644 index 0000000000000000000000000000000000000000..80938a2574aad98f525d7b1ad0fbf49b7a7959a8 GIT binary patch literal 15222 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 literal 0 HcmV?d00001 diff --git a/website/static/website/logo.png b/website/static/website/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..89fa4c2ee0d0bc4a7c7053326d7149012ec866b8 GIT binary patch literal 42051 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
    <9Oc8#EeL-2skr(xE*-M-@iv4 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