Mercurial > sat_legacy_website
view sat_website/views.py @ 149:b1c16cd53b62
update django to version 1.11, refactor project structure, better PEP-8 compliance
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 17 Oct 2017 04:11:21 +0200 |
parents | d0cd185f9b61 |
children |
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, HttpResponse from django.shortcuts import render_to_response from django.template.context_processors import csrf from django.utils.translation import ugettext_lazy as _ from collections import OrderedDict import media, social_contract, utils, 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)'), } def overview(request): return render_to_response('sat_website/overview.html') def generic_cat(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()) 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 def whereami(request): """Return the client IP address""" x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0] else: ip = request.META.get('REMOTE_ADDR') return HttpResponse(ip)