view sat_website/views.py @ 34:9d553570cc61

add adhesion_form.html and thank_you.html
author souliane <souliane@mailoo.org>
date Tue, 27 Jan 2015 08:20:30 +0100
parents 73c6333fd124
children d2c45f4ba57e
line wrap: on
line source

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
SàT website: Salut à Toi's presentation website
Copyright (C) 2012  Jérôme Poisson (goffi@goffi.org)

This file is part of SàT website.

SàT website is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Foobar is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
"""
from django.http import Http404
from django.shortcuts import render_to_response
from django.core.context_processors import csrf
from django.utils.translation import ugettext_lazy as _
from django.template import RequestContext
from collections import OrderedDict
import screenshots, social_contract, utils, forms

CATEGORIES = OrderedDict([('frontends', (_(u"Presentation"),
                                OrderedDict([("features", _(u"Features")),
                                             ("frontends", _(u"Frontends")),
                                             ("screenshots", _(u"Screenshots & Videos")),
                                             ]))),
                          ('principles', (_(u"Technical area"),
                                OrderedDict([("principles", _(u"Principles")),
                                             ("specifications", _(u"Specifications")),
                                             ("screenshots_tech", _(u"Screenshots & Videos")),
                                             ("downloads", _(u"Downloads")),
                                             ("developers", _(u"Developers corner")),
                                             ]))),
                          ('community', (_(u"Community"),
                                OrderedDict([("community", _(u"Get in touch")),
                                             ("association", _(u"Association")),
                                             ("links", _(u"Links")),
                                             ]))),
                          ])

CATEGORIES_RIGHT = OrderedDict([("adhesion", _(u"Adhesion")),
                                ("social_contract", _(u"Social contract")),
                                ])

CATEGORIES_HIDDEN = ('adhesion_form', 'thank_you')


def overview(request):
    return render_to_response('sat_website/overview.html')

def generic_cat(request, category):
    context = RequestContext(request, {
               "available_languages": ['fr', 'en'],
               "categories": CATEGORIES,
               "categories_right": CATEGORIES_RIGHT,
               "category": category,
               "libervia_demo_url": utils.get_libervia_demo_url(),
               "subscription_amounts": utils.get_asso_subscr_amounts(),
               })

    context.update(csrf(request))

    if not category or category == "overview":
        context.update(utils.get_asso_finance_status())
        return render_to_response('sat_website/overview.html', context)
    elif category == "screenshots":
        context["screenshots"] = screenshots.screenshots
    elif category == "screenshots_tech":
        context["screenshots"] = screenshots.screenshots_tech
    elif category == "social_contract":
        context["SOCIAL_CONTRACT"] = social_contract.get_social_contract()
    elif category == "downloads":
        latest_dl_path, latest_version = utils.get_latest_sat()
        context["latest_dl_path"] = latest_dl_path
        context["latest_version"] = latest_version
    elif category == "adhesion":
        context.update(utils.get_asso_finance_status())
    elif category == "adhesion_form":
        if request.method == 'POST':
            form = forms.RegistrationForm(request.POST)
            if form.is_valid():
                category = 'thank_you'
        else:
            form = forms.RegistrationForm(initial={'subscription_amount': 10,
                                                   'payment_method': 'card'})
        context['form'] = form

    def all_keys(cats):
        subcats = [value[1].keys() for value in cats.values() if isinstance(value, tuple)]
        return sum(subcats, cats.keys())

    if category in all_keys(CATEGORIES) or category in all_keys(CATEGORIES_RIGHT) or category in CATEGORIES_HIDDEN:
        return render_to_response('sat_website/%s.html' % (category,), context)
    else:
        raise Http404