forked from rc/aircox
		
	work on views and templates
This commit is contained in:
		@ -1,5 +1,6 @@
 | 
				
			|||||||
from django.conf.urls import url
 | 
					from django.conf.urls import url
 | 
				
			||||||
from django.utils import timezone
 | 
					from django.utils import timezone
 | 
				
			||||||
 | 
					from django.utils.translation import ugettext as _, ugettext_lazy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from website.models import *
 | 
					from website.models import *
 | 
				
			||||||
from website.views import *
 | 
					from website.views import *
 | 
				
			||||||
@ -50,12 +51,10 @@ class Route:
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        pass
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def get_title (cl, model, request, **kwargs):
 | 
					    def get_title (cl, model, request, **kwargs):
 | 
				
			||||||
        return ''
 | 
					        return ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def as_url (cl, model, view, view_kwargs = None):
 | 
					    def as_url (cl, model, view, view_kwargs = None):
 | 
				
			||||||
        base_name = model._meta.verbose_name_plural.lower()
 | 
					        base_name = model._meta.verbose_name_plural.lower()
 | 
				
			||||||
@ -89,7 +88,6 @@ class DetailRoute (Route):
 | 
				
			|||||||
        ('slug', '(\w|-|_)+', True),
 | 
					        ('slug', '(\w|-|_)+', True),
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def get_object (cl, model, request, pk, **kwargs):
 | 
					    def get_object (cl, model, request, pk, **kwargs):
 | 
				
			||||||
        return model.objects.get(pk = int(pk))
 | 
					        return model.objects.get(pk = int(pk))
 | 
				
			||||||
@ -102,6 +100,12 @@ class AllRoute (Route):
 | 
				
			|||||||
    def get_queryset (cl, model, request, **kwargs):
 | 
					    def get_queryset (cl, model, request, **kwargs):
 | 
				
			||||||
        return model.objects.all()
 | 
					        return model.objects.all()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @classmethod
 | 
				
			||||||
 | 
					    def get_title (cl, model, request, **kwargs):
 | 
				
			||||||
 | 
					        return _('All %(model)s') % {
 | 
				
			||||||
 | 
					            'model': model._meta.verbose_name_plural
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ThreadRoute (Route):
 | 
					class ThreadRoute (Route):
 | 
				
			||||||
    name = 'thread'
 | 
					    name = 'thread'
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										8
									
								
								cms/templates/cms/base_content.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								cms/templates/cms/base_content.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					{% block pre_title %}
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					{% block title %}
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					{% block content %}
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										49
									
								
								cms/templates/cms/base_site.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								cms/templates/cms/base_site.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					<html>
 | 
				
			||||||
 | 
					    <head>
 | 
				
			||||||
 | 
					        <title>{{ website.name }} {% if title %}- {{ title }} {% endif %}</title>
 | 
				
			||||||
 | 
					    </head>
 | 
				
			||||||
 | 
					    <body>
 | 
				
			||||||
 | 
					        {% if menus.top %}
 | 
				
			||||||
 | 
					            {{ menus.top|safe }}
 | 
				
			||||||
 | 
					        {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        {% block header %}
 | 
				
			||||||
 | 
					            {% if menus.header %}
 | 
				
			||||||
 | 
					            <header>
 | 
				
			||||||
 | 
					                {{ menus.header|safe }}
 | 
				
			||||||
 | 
					            </header>
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					        {% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div class="page">
 | 
				
			||||||
 | 
					            {% if menus.left %}
 | 
				
			||||||
 | 
					                {{ menus.left|safe }}
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <main>
 | 
				
			||||||
 | 
					                {% block pre_title %}
 | 
				
			||||||
 | 
					                {% endblock %}
 | 
				
			||||||
 | 
					                <h1>
 | 
				
			||||||
 | 
					                    {% block title %}
 | 
				
			||||||
 | 
					                    {{ title }}
 | 
				
			||||||
 | 
					                    {% endblock %}
 | 
				
			||||||
 | 
					                </h1>
 | 
				
			||||||
 | 
					                {% block post_title %}
 | 
				
			||||||
 | 
					                {% endblock %}
 | 
				
			||||||
 | 
					                <div class="content">
 | 
				
			||||||
 | 
					                    {% block content %}
 | 
				
			||||||
 | 
					                    {% endblock %}
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            </main>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        {% block footer %}
 | 
				
			||||||
 | 
					            {% if menus.footer %}
 | 
				
			||||||
 | 
					            <footer>
 | 
				
			||||||
 | 
					                {{ menus.footer|safe }}
 | 
				
			||||||
 | 
					            </footer>
 | 
				
			||||||
 | 
					            {% endif %}
 | 
				
			||||||
 | 
					        {% endblock %}
 | 
				
			||||||
 | 
					    </body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
{# {% extends "website/base.html" %} #}
 | 
					{% extends embed|yesno:"cms/base_content.html,cms/base_site.html" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block title %}
 | 
					{% block title %}
 | 
				
			||||||
{{ object.title }}
 | 
					{{ object.title }}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,23 +1,21 @@
 | 
				
			|||||||
{# {% extends embed|yesno:"website/single.html,website/base.html" %} #}
 | 
					{% extends embed|yesno:"cms/base_content.html,cms/base_site.html" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% load i18n %}
 | 
					{% load i18n %}
 | 
				
			||||||
{% load thumbnail %}
 | 
					{% load thumbnail %}
 | 
				
			||||||
{# {% load website_views %} #}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% block content %}
 | 
					{% block content %}
 | 
				
			||||||
<div class="post_list {{ classes }}">
 | 
					<div class="post_list {{ classes }}">
 | 
				
			||||||
{% for post in object_list %}
 | 
					{% for post in object_list %}
 | 
				
			||||||
    <a class="post_item"
 | 
					    <a class="post_item"
 | 
				
			||||||
       href="{{ post.detail_url }}">
 | 
					       href="{{ post.detail_url }}">
 | 
				
			||||||
        {% if 'date' in list.fields or 'time' in list.fields %}
 | 
					        {% if 'date' in view.fields or 'time' in list.fields %}
 | 
				
			||||||
        <time datetime="{{ post.date }}" class="post_datetime">
 | 
					        <time datetime="{{ post.date }}" class="post_datetime">
 | 
				
			||||||
            {% if 'date' in list.fields %}
 | 
					            {% if 'date' in view.fields %}
 | 
				
			||||||
            <span class="post_date">
 | 
					            <span class="post_date">
 | 
				
			||||||
                {{ post.date|date:'D. d F' }},
 | 
					                {{ post.date|date:'D. d F' }},
 | 
				
			||||||
            </span>
 | 
					            </span>
 | 
				
			||||||
            {% endif %}
 | 
					            {% endif %}
 | 
				
			||||||
            {% if 'time' in list.fields %}
 | 
					            {% if 'time' in view.fields %}
 | 
				
			||||||
            <span class="post_time">
 | 
					            <span class="post_time">
 | 
				
			||||||
                {{ post.date|date:'H:i' }},
 | 
					                {{ post.date|date:'H:i' }},
 | 
				
			||||||
            </span>
 | 
					            </span>
 | 
				
			||||||
@ -25,15 +23,15 @@
 | 
				
			|||||||
        </time>
 | 
					        </time>
 | 
				
			||||||
        {% endif %}
 | 
					        {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        {% if 'image' in list.fields %}
 | 
					        {% if 'image' in view.fields %}
 | 
				
			||||||
        <img src="{% thumbnail post.image "64x64" crop %}" class="post_image">
 | 
					        <img src="{% thumbnail post.image "64x64" crop %}" class="post_image">
 | 
				
			||||||
        {% endif %}
 | 
					        {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        {% if 'title' in list.fields %}
 | 
					        {% if 'title' in view.fields %}
 | 
				
			||||||
        <h4 class="post_title">{{ post.title }}</h4>
 | 
					        <h4 class="post_title">{{ post.title }}</h4>
 | 
				
			||||||
        {% endif %}
 | 
					        {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        {% if 'content' in list.fields %}
 | 
					        {% if 'content' in view.fields %}
 | 
				
			||||||
        <div class="post_content">
 | 
					        <div class="post_content">
 | 
				
			||||||
        {{ post.content|safe|striptags|truncatechars:"64" }}
 | 
					        {{ post.content|safe|striptags|truncatechars:"64" }}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<div class="menu menu_{{ position }} {{ classes }}"
 | 
					<nav class="menu menu_{{ position }} {{ classes }}" {% if name %}
 | 
				
			||||||
    {% if name %}
 | 
					 | 
				
			||||||
        name="menu_{{ name }}"
 | 
					        name="menu_{{ name }}"
 | 
				
			||||||
        id="menu_{{ name }}"
 | 
					        id="menu_{{ name }}"
 | 
				
			||||||
    {% endif %}>
 | 
					    {% endif %}>
 | 
				
			||||||
    {% for section in sections %}
 | 
					    {% for section in sections %}
 | 
				
			||||||
    {{ section|safe }}
 | 
					    {{ section|safe }}
 | 
				
			||||||
    {% endfor %}
 | 
					    {% endfor %}
 | 
				
			||||||
</div>
 | 
					</nav>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +0,0 @@
 | 
				
			|||||||
{# #}
 | 
					 | 
				
			||||||
							
								
								
									
										107
									
								
								cms/views.py
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								cms/views.py
									
									
									
									
									
								
							@ -1,14 +1,48 @@
 | 
				
			|||||||
from django.shortcuts import render
 | 
					from django.shortcuts import render
 | 
				
			||||||
from django.template.loader import render_to_string
 | 
					from django.template.loader import render_to_string
 | 
				
			||||||
from django.views.generic import ListView
 | 
					from django.views.generic import ListView, DetailView
 | 
				
			||||||
from django.views.generic import DetailView
 | 
					from django.views.generic.base import View, TemplateResponseMixin
 | 
				
			||||||
from django.core import serializers
 | 
					from django.core import serializers
 | 
				
			||||||
from django.utils.translation import ugettext as _, ugettext_lazy
 | 
					from django.utils.translation import ugettext as _, ugettext_lazy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cms.routes as routes
 | 
					import cms.routes as routes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PostListView (ListView):
 | 
					class PostBaseView:
 | 
				
			||||||
 | 
					    website = None  # corresponding website
 | 
				
			||||||
 | 
					    title = ''      # title of the page
 | 
				
			||||||
 | 
					    embed = False   # page is embed (if True, only post content is printed
 | 
				
			||||||
 | 
					    classes = ''    # extra classes for the content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_base_context (self):
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Return a context with all attributes of this classe plus 'view' set
 | 
				
			||||||
 | 
					        to self.
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        context = {
 | 
				
			||||||
 | 
					            k: getattr(self, k)
 | 
				
			||||||
 | 
					            for k, v in PostBaseView.__dict__.items()
 | 
				
			||||||
 | 
					                if not k.startswith('__')
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if not self.embed:
 | 
				
			||||||
 | 
					            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'),
 | 
				
			||||||
 | 
					                }.items() if v
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        context['view'] = self
 | 
				
			||||||
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PostListView (PostBaseView, ListView):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    List view for posts and children
 | 
					    List view for posts and children
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
@ -20,34 +54,29 @@ class PostListView (ListView):
 | 
				
			|||||||
        exclude = None
 | 
					        exclude = None
 | 
				
			||||||
        order = 'desc'
 | 
					        order = 'desc'
 | 
				
			||||||
        reverse = False
 | 
					        reverse = False
 | 
				
			||||||
 | 
					        fields = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def __init__ (self, query):
 | 
					        def __init__ (self, query):
 | 
				
			||||||
 | 
					            if query:
 | 
				
			||||||
 | 
					                self.update(query)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        def update (self, query):
 | 
				
			||||||
            my_class = self.__class__
 | 
					            my_class = self.__class__
 | 
				
			||||||
            if type(query) is my_class:
 | 
					            if type(query) is my_class:
 | 
				
			||||||
                self.__dict__.update(query.__dict__)
 | 
					                self.__dict__.update(query.__dict__)
 | 
				
			||||||
                return
 | 
					                return
 | 
				
			||||||
 | 
					            self.__dict__.update(query)
 | 
				
			||||||
            if type(query) is not dict:
 | 
					 | 
				
			||||||
                query = query.__dict__
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            self.__dict__ = { k: v for k,v in query.items() }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template_name = 'cms/list.html'
 | 
					    template_name = 'cms/list.html'
 | 
				
			||||||
    allow_empty = True
 | 
					    allow_empty = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    website = None
 | 
					 | 
				
			||||||
    title = ''
 | 
					 | 
				
			||||||
    classes = ''
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    route = None
 | 
					    route = None
 | 
				
			||||||
    query = None
 | 
					    query = None
 | 
				
			||||||
    embed = False
 | 
					 | 
				
			||||||
    fields = [ 'date', 'time', 'image', 'title', 'content' ]
 | 
					    fields = [ 'date', 'time', 'image', 'title', 'content' ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__ (self, *args, **kwargs):
 | 
					    def __init__ (self, *args, **kwargs):
 | 
				
			||||||
        super().__init__(*args, **kwargs)
 | 
					        super().__init__(*args, **kwargs)
 | 
				
			||||||
        if self.query:
 | 
					        self.query = PostListView.Query(self.query)
 | 
				
			||||||
            self.query = Query(self.query)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def dispatch (self, request, *args, **kwargs):
 | 
					    def dispatch (self, request, *args, **kwargs):
 | 
				
			||||||
        self.route = self.kwargs.get('route') or self.route
 | 
					        self.route = self.kwargs.get('route') or self.route
 | 
				
			||||||
@ -55,8 +84,9 @@ class PostListView (ListView):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def get_queryset (self):
 | 
					    def get_queryset (self):
 | 
				
			||||||
        qs = self.route.get_queryset(self.model, self.request, **self.kwargs)
 | 
					        qs = self.route.get_queryset(self.model, self.request, **self.kwargs)
 | 
				
			||||||
 | 
					        query = self.query
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        query = self.query or PostListView.Query(self.request.GET)
 | 
					        query.update(self.request.GET)
 | 
				
			||||||
        if query.exclude:
 | 
					        if query.exclude:
 | 
				
			||||||
            qs = qs.exclude(id = int(exclude))
 | 
					            qs = qs.exclude(id = int(exclude))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -67,16 +97,21 @@ class PostListView (ListView):
 | 
				
			|||||||
            qs.order_by('date', 'id')
 | 
					            qs.order_by('date', 'id')
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            qs.order_by('-date', '-id')
 | 
					            qs.order_by('-date', '-id')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if query.fields:
 | 
				
			||||||
 | 
					            self.fields = [
 | 
				
			||||||
 | 
					                field for field in query.fields
 | 
				
			||||||
 | 
					                if field in self.__class__.fields
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return qs
 | 
					        return qs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_context_data (self, **kwargs):
 | 
					    def get_context_data (self, **kwargs):
 | 
				
			||||||
        context = super().get_context_data(**kwargs)
 | 
					        context = super().get_context_data(**kwargs)
 | 
				
			||||||
 | 
					        context.update(self.get_base_context())
 | 
				
			||||||
        context.update({
 | 
					        context.update({
 | 
				
			||||||
            'list': self,
 | 
					 | 
				
			||||||
            'title': self.get_title(),
 | 
					            'title': self.get_title(),
 | 
				
			||||||
            'classes': self.classes,
 | 
					 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return context
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_title (self):
 | 
					    def get_title (self):
 | 
				
			||||||
@ -88,14 +123,12 @@ class PostListView (ListView):
 | 
				
			|||||||
        return title
 | 
					        return title
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PostDetailView (DetailView):
 | 
					class PostDetailView (DetailView, PostBaseView):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Detail view for posts and children
 | 
					    Detail view for posts and children
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    template_name = 'cms/detail.html'
 | 
					    template_name = 'cms/detail.html'
 | 
				
			||||||
    website = None
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    embed = False
 | 
					 | 
				
			||||||
    sections = []
 | 
					    sections = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__ (self, sections = None, *args, **kwargs):
 | 
					    def __init__ (self, sections = None, *args, **kwargs):
 | 
				
			||||||
@ -116,6 +149,7 @@ class PostDetailView (DetailView):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def get_context_data (self, **kwargs):
 | 
					    def get_context_data (self, **kwargs):
 | 
				
			||||||
        context = super().get_context_data(**kwargs)
 | 
					        context = super().get_context_data(**kwargs)
 | 
				
			||||||
 | 
					        context.update(self.get_base_context())
 | 
				
			||||||
        context.update({
 | 
					        context.update({
 | 
				
			||||||
            'sections': [
 | 
					            'sections': [
 | 
				
			||||||
                section.get(self.request, object = self.object)
 | 
					                section.get(self.request, object = self.object)
 | 
				
			||||||
@ -158,39 +192,44 @@ class ViewSet:
 | 
				
			|||||||
                      [ routes.DetailRoute.as_url(self.model, self.detail_view ) ]
 | 
					                      [ routes.DetailRoute.as_url(self.model, self.detail_view ) ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Menu (DetailView):
 | 
					class Menu (View):
 | 
				
			||||||
    template_name = 'cms/menu.html'
 | 
					    template_name = 'cms/menu.html'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name = ''
 | 
					    name = ''
 | 
				
			||||||
    enabled = True
 | 
					    enabled = True
 | 
				
			||||||
    classes = ''
 | 
					    classes = ''
 | 
				
			||||||
    position = ''   # top, left, bottom, right
 | 
					    position = ''   # top, left, bottom, right, header, footer
 | 
				
			||||||
    sections = None
 | 
					    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):
 | 
					    def get_context_data (self, **kwargs):
 | 
				
			||||||
        context = super().get_context_data(**kwargs)
 | 
					        return {
 | 
				
			||||||
        context.update({
 | 
					 | 
				
			||||||
            'name': self.name,
 | 
					            'name': self.name,
 | 
				
			||||||
            'classes': self.classes,
 | 
					            'classes': self.classes,
 | 
				
			||||||
            'position': self.position,
 | 
					            'position': self.position,
 | 
				
			||||||
            'sections': [
 | 
					            'sections': [
 | 
				
			||||||
                section.get(self.request, object = self.object)
 | 
					                section.get(self.request, object = None)
 | 
				
			||||||
                    for section in self.sections
 | 
					                    for section in self.sections
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
        })
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get (self, **kwargs):
 | 
					    def get (self, request, **kwargs):
 | 
				
			||||||
 | 
					        self.request = request
 | 
				
			||||||
        context = self.get_context_data(**kwargs)
 | 
					        context = self.get_context_data(**kwargs)
 | 
				
			||||||
        return render_to_string(self.template_name, context)
 | 
					        return render_to_string(self.template_name, context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Section (DetailView):
 | 
					class Section (View):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Base class for sections. Sections are view that can be used in detail view
 | 
					    Base class for sections. Sections are view that can be used in detail view
 | 
				
			||||||
    in order to have extra content about a post.
 | 
					    in order to have extra content about a post.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    template_name = 'cms/section.html'
 | 
					    template_name = 'cms/section.html'
 | 
				
			||||||
    require_object = False
 | 
					    require_object = False
 | 
				
			||||||
 | 
					    object = None
 | 
				
			||||||
    classes = ''
 | 
					    classes = ''
 | 
				
			||||||
    title = ''
 | 
					    title = ''
 | 
				
			||||||
    content = ''
 | 
					    content = ''
 | 
				
			||||||
@ -198,18 +237,18 @@ class Section (DetailView):
 | 
				
			|||||||
    bottom = ''
 | 
					    bottom = ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_context_data (self, **kwargs):
 | 
					    def get_context_data (self, **kwargs):
 | 
				
			||||||
        context = super().get_context_data(**kwargs)
 | 
					        context = {
 | 
				
			||||||
        context.update({
 | 
					 | 
				
			||||||
            'title': self.title,
 | 
					            'title': self.title,
 | 
				
			||||||
            'header': self.header,
 | 
					            'header': self.header,
 | 
				
			||||||
            'content': self.content,
 | 
					            'content': self.content,
 | 
				
			||||||
            'bottom': self.bottom,
 | 
					            'bottom': self.bottom,
 | 
				
			||||||
            'classes': self.classes,
 | 
					            'classes': self.classes,
 | 
				
			||||||
        })
 | 
					        }
 | 
				
			||||||
        return context
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get (self, request, **kwargs):
 | 
					    def get (self, request, **kwargs):
 | 
				
			||||||
        self.object = kwargs.get('object') or self.object
 | 
					        self.object = kwargs.get('object') or self.object
 | 
				
			||||||
 | 
					        self.request = request
 | 
				
			||||||
        context = self.get_context_data(**kwargs)
 | 
					        context = self.get_context_data(**kwargs)
 | 
				
			||||||
        return render_to_string(self.template_name, context)
 | 
					        return render_to_string(self.template_name, context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -240,7 +279,7 @@ class ListSection (Section):
 | 
				
			|||||||
    def get_context_data (self, **kwargs):
 | 
					    def get_context_data (self, **kwargs):
 | 
				
			||||||
        context = super().get_context_data(**kwargs)
 | 
					        context = super().get_context_data(**kwargs)
 | 
				
			||||||
        context.update({
 | 
					        context.update({
 | 
				
			||||||
            'classes': context.classes + ' section_list',
 | 
					            'classes': context.get('classes') + ' section_list',
 | 
				
			||||||
            'icon_size': self.icon_size,
 | 
					            'icon_size': self.icon_size,
 | 
				
			||||||
            'object_list': self.get_object_list(),
 | 
					            'object_list': self.get_object_list(),
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,7 @@ import cms.routes as routes
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class Website:
 | 
					class Website:
 | 
				
			||||||
    name = ''
 | 
					    name = ''
 | 
				
			||||||
 | 
					    domain = ''
 | 
				
			||||||
    logo = None
 | 
					    logo = None
 | 
				
			||||||
    menus = None
 | 
					    menus = None
 | 
				
			||||||
    router = None
 | 
					    router = None
 | 
				
			||||||
@ -10,13 +11,28 @@ class Website:
 | 
				
			|||||||
        self.__dict__.update(kwargs)
 | 
					        self.__dict__.update(kwargs)
 | 
				
			||||||
        if not self.router:
 | 
					        if not self.router:
 | 
				
			||||||
            self.router = routes.Router()
 | 
					            self.router = routes.Router()
 | 
				
			||||||
        if not self.sets:
 | 
					 | 
				
			||||||
            self.sets = []
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def register_set (self, view_set):
 | 
					    def register_set (self, view_set):
 | 
				
			||||||
        view_set = view_set(website = self)
 | 
					        view_set = view_set(website = self)
 | 
				
			||||||
        self.router.register_set(view_set)
 | 
					        self.router.register_set(view_set)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_menu (self, position):
 | 
				
			||||||
 | 
					        for menu in self.menus:
 | 
				
			||||||
 | 
					            if menu.enabled and menu.position == position:
 | 
				
			||||||
 | 
					                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
 | 
					    @property
 | 
				
			||||||
    def urls (self):
 | 
					    def urls (self):
 | 
				
			||||||
        return self.router.get_urlpatterns()
 | 
					        return self.router.get_urlpatterns()
 | 
				
			||||||
 | 
				
			|||||||
@ -4,8 +4,9 @@ from website.models import *
 | 
				
			|||||||
from website.views import *
 | 
					from website.views import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from cms.models import Article
 | 
					from cms.models import Article
 | 
				
			||||||
from cms.views import ViewSet, Menu
 | 
					from cms.views import ViewSet, Menu, Section
 | 
				
			||||||
from cms.routes import *
 | 
					from cms.routes import *
 | 
				
			||||||
 | 
					from cms.website import Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ProgramSet (ViewSet):
 | 
					class ProgramSet (ViewSet):
 | 
				
			||||||
    model = Program
 | 
					    model = Program
 | 
				
			||||||
@ -44,10 +45,12 @@ website = Website(
 | 
				
			|||||||
    menus = [
 | 
					    menus = [
 | 
				
			||||||
        Menu(
 | 
					        Menu(
 | 
				
			||||||
            position = 'top',
 | 
					            position = 'top',
 | 
				
			||||||
            sections = []
 | 
					            sections = [
 | 
				
			||||||
 | 
					                Section(content = "Radio Campus le SITE")
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
})
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
website.register_set(ProgramSet)
 | 
					website.register_set(ProgramSet)
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user