Statistics
| Branch: | Tag: | Revision:

root / cloudcmsblog / views.py @ 06c456e2

History | View | Annotate | Download (3.1 kB)

1 52271184 Kostas Papadimitriou
# Copyright 2012 GRNET S.A. All rights reserved.
2 52271184 Kostas Papadimitriou
#
3 52271184 Kostas Papadimitriou
# Redistribution and use in source and binary forms, with or
4 52271184 Kostas Papadimitriou
# without modification, are permitted provided that the following
5 52271184 Kostas Papadimitriou
# conditions are met:
6 52271184 Kostas Papadimitriou
#
7 52271184 Kostas Papadimitriou
#   1. Redistributions of source code must retain the above
8 52271184 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
9 52271184 Kostas Papadimitriou
#      disclaimer.
10 52271184 Kostas Papadimitriou
#
11 52271184 Kostas Papadimitriou
#   2. Redistributions in binary form must reproduce the above
12 52271184 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
13 52271184 Kostas Papadimitriou
#      disclaimer in the documentation and/or other materials
14 52271184 Kostas Papadimitriou
#      provided with the distribution.
15 52271184 Kostas Papadimitriou
#
16 52271184 Kostas Papadimitriou
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 52271184 Kostas Papadimitriou
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 52271184 Kostas Papadimitriou
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 52271184 Kostas Papadimitriou
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 52271184 Kostas Papadimitriou
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 52271184 Kostas Papadimitriou
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 52271184 Kostas Papadimitriou
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 52271184 Kostas Papadimitriou
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 52271184 Kostas Papadimitriou
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 52271184 Kostas Papadimitriou
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 52271184 Kostas Papadimitriou
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 52271184 Kostas Papadimitriou
# POSSIBILITY OF SUCH DAMAGE.
28 52271184 Kostas Papadimitriou
#
29 52271184 Kostas Papadimitriou
# The views and conclusions contained in the software and
30 52271184 Kostas Papadimitriou
# documentation are those of the authors and should not be
31 52271184 Kostas Papadimitriou
# interpreted as representing official policies, either expressed
32 52271184 Kostas Papadimitriou
# or implied, of GRNET S.A.
33 52271184 Kostas Papadimitriou
34 52271184 Kostas Papadimitriou
35 c1468bcc Kostas Papadimitriou
from django.conf import settings
36 c1468bcc Kostas Papadimitriou
from django.views.generic.simple import direct_to_template
37 c1468bcc Kostas Papadimitriou
from django.http import HttpResponseRedirect, Http404
38 bd9ce789 Kostas Papadimitriou
from django.shortcuts import get_object_or_404
39 c1468bcc Kostas Papadimitriou
40 c1468bcc Kostas Papadimitriou
from cloudcms.models import Application
41 06c456e2 Kostas Papadimitriou
from cloudcmsblog.models import Entry, Category, CategoryTranslation, get_blog_page
42 c1468bcc Kostas Papadimitriou
43 c1468bcc Kostas Papadimitriou
def index(request):
44 c1468bcc Kostas Papadimitriou
    """
45 c1468bcc Kostas Papadimitriou
    Redirecto to first category found entries archive
46 c1468bcc Kostas Papadimitriou
    """
47 c1468bcc Kostas Papadimitriou
    categories = Category.objects.filter(display_on_menu=True)
48 c1468bcc Kostas Papadimitriou
    if categories.exists() == 0:
49 c1468bcc Kostas Papadimitriou
        raise Http404
50 06c456e2 Kostas Papadimitriou
    
51 06c456e2 Kostas Papadimitriou
    app_page_url = get_blog_page().get_navigation_url()
52 06c456e2 Kostas Papadimitriou
    try:
53 06c456e2 Kostas Papadimitriou
        default_category_url = categories[0].get_absolute_url()
54 06c456e2 Kostas Papadimitriou
    except IndexError:
55 06c456e2 Kostas Papadimitriou
        raise Http404
56 c1468bcc Kostas Papadimitriou
57 06c456e2 Kostas Papadimitriou
    return HttpResponseRedirect("%s%s" % (app_page_url.rstrip("/"), default_category_url))
58 c1468bcc Kostas Papadimitriou
59 bd9ce789 Kostas Papadimitriou
60 c1468bcc Kostas Papadimitriou
def archive(request, category):
61 c1468bcc Kostas Papadimitriou
    """
62 c1468bcc Kostas Papadimitriou
    Display entries list
63 c1468bcc Kostas Papadimitriou
    """
64 c1468bcc Kostas Papadimitriou
    app = Application.current()
65 bd9ce789 Kostas Papadimitriou
    category = get_object_or_404(Category, translations__slug=category)
66 c1468bcc Kostas Papadimitriou
    entries = category.blogentries.all()
67 c1468bcc Kostas Papadimitriou
    return direct_to_template(request,
68 c1468bcc Kostas Papadimitriou
            "cloudcmsblog/archive.html", {'entries': entries,
69 c1468bcc Kostas Papadimitriou
                'ENTRIES_PER_PAGE': getattr(settings,
70 c1468bcc Kostas Papadimitriou
                    'CLOUDCMSBLOG_ENTRIES_PER_PAGE', 2)})
71 c1468bcc Kostas Papadimitriou
72 bd9ce789 Kostas Papadimitriou
73 c1468bcc Kostas Papadimitriou
def detail(request, year, month, day, slug):
74 c1468bcc Kostas Papadimitriou
    """
75 c1468bcc Kostas Papadimitriou
    Display detailed blog entry.
76 c1468bcc Kostas Papadimitriou
    """
77 bd9ce789 Kostas Papadimitriou
    entry = get_object_or_404(Entry, published_on__year=year,
78 c1468bcc Kostas Papadimitriou
            published_on__month=month, published_on__day=day,
79 c1468bcc Kostas Papadimitriou
            slug=slug, is_active=True)
80 c1468bcc Kostas Papadimitriou
    return direct_to_template(request,
81 c1468bcc Kostas Papadimitriou
            "cloudcmsblog/detail.html", {'entry': entry})