Mercurial > sat_legacy_website
diff sat_website/views/category.py @ 150:b101828faa0e
split views.py in sub-modules
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 17 Oct 2017 22:16:20 +0200 |
parents | sat_website/views.py@b1c16cd53b62 |
children | d9adc73fcd12 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sat_website/views/category.py Tue Oct 17 22:16:20 2017 +0200 @@ -0,0 +1,127 @@ +# -*- 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 SàT website. If not, see <http://www.gnu.org/licenses/>. +""" + +from collections import OrderedDict + +from django.http import Http404 +from django.views.generic.base import View +from django.shortcuts import render_to_response +from django.template.context_processors import csrf +from django.utils.translation import ugettext_lazy as _ + +from sat_website import utils, media, social_contract, forms + + +CATEGORIES = OrderedDict([('frontends', (_(u"Presentation"), + OrderedDict([("features", _(u"Features")), + ("frontends", _(u"Frontends")), + ("media", _(u"Screenshots & Videos")), + ("news", _(u"News")), + ]))), + ('principles', (_(u"Technical area"), + OrderedDict([("principles", _(u"Principles")), + ("specifications", _(u"Specifications")), + ("downloads", _(u"Downloads")), + ("developers", _(u"Developers corner")), + ]))), + ('community', (_(u"Community"), + OrderedDict([("community", _(u"Get in touch")), + ("association", _(u"Association")), + ("links", _(u"Links")), + ("press", _(u"Press")), + ("faq", _(u"FAQ")), + ]))), + ]) + +CATEGORIES_RIGHT = OrderedDict([("membership", _(u"Membership")), + ("social_contract", _(u"Social contract")), + ]) + +CATEGORIES_ALIASES = {"adhesion": "membership", + "adhesion_form": "membership_form", + "screenshots": "media", + } + +CATEGORIES_HIDDEN = ('membership_form', 'thank_you') + +PROJECTS_INFOS = {'sat': _(u'contains the backend, Primitivus and Jp'), + 'sat_media': _(u'Images and other media needed to launch SàT'), + 'urwid_satext': _(u'console display library needed by Primitivus'), + 'sat_pubsub': _(u'PubSub server component needed for SàT experimental blogging features'), + 'libervia': _(u'Libervia frontend (web server and client)'), + } + + +class CategoryView(View): + + @staticmethod + def all_keys(cats): + subcats = [value[1].keys() for value in cats.values() if isinstance(value, tuple)] + return sum(subcats, cats.keys()) + + def get(self, request, category): + if category in CATEGORIES_ALIASES: + category = CATEGORIES_ALIASES[category] + + context = { + "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)) + context.update(utils.get_asso_finance_status()) + + if not category or category == "overview": + context.update(utils.get_asso_finance_status()) + return render_to_response('sat_website/overview.html', context) + elif category == "media": + context["media"] = media.media + context["media_tech"] = media.media_tech + elif category == "social_contract": + context["SOCIAL_CONTRACT"] = social_contract.get_social_contract() + elif category == "downloads": + context["projects_infos"] = utils.get_projects_infos(PROJECTS_INFOS) + elif category in ("association", "membership"): + context.update(utils.get_asso_urls()) + elif category == "membership_form": + if request.method == 'POST': + form = forms.RegistrationForm(request.POST) + form.process_submitted_data() + if form.is_valid(): + category = 'thank_you' + else: + form = forms.RegistrationForm(initial={'subscription_amount': 10, + 'mailing': True}) + context['form'] = form + context.update(utils.get_asso_urls()) + + if ( + category in self.all_keys(CATEGORIES) or + category in self.all_keys(CATEGORIES_RIGHT) or + category in CATEGORIES_HIDDEN + ): + return render_to_response('sat_website/%s.html' % (category,), context) + else: + raise Http404