La Geek Attitude

Hadopi Killer évolue et devient Adopy

Posté par Kévin G. le Jeudi, décembre 17th, 2009

MàJ : chose promise, chose dûe, un installateur Windows de Adopy est désormais disponible sur mon portfolio Alors que je vous présentais en octobre dernier mon dernier petit protégé (né de mon amour avec Python) Hadopi Killer, je n’ai cessé de travailler à son amélioration depuis cette date (enfin, j’ai peut-être un peu flemmardé de [...]

Lire la suite ...

[Free the Music] Télécharger les musiques de Jiwa

Posté par Kévin G. le Vendredi, août 7th, 2009

Vous connaissez certainement Jiwa.fr, un des concurrents de Deezer dont le slogan est « Free the Music ». Mais savez-vous également qu’il est un des rares à vraiment agir selon son slogan, et à libérer la musique ? Savez-vous que contrairement à Deezer, Jiwa met à disposition de ses bien aimés utilisateurs l’intégralité de sa bibliothèque ? [...]

Lire la suite ...

Tutoriel :: Tout sur Adobe AIR

Posté par Kévin G. le Mardi, juillet 1st, 2008

Il y a pas mal de temps déjà, je vous parlais d’une technologie que je trouvais marrante et relativement pratique : Adobe AIR. J’avais alors écrit un rapide billet pour vous présenter AIR, et vous expliquer comment l’installer, et je finissais par vous dire qu’une suite à ce tutoriel sur AIR arriverait. Et bien nous [...]

Lire la suite ...

Réécrire et adapter le decorator « login_required » de Django

Posté par Kévin G. le Mercredi, mars 11th, 2009

Hey la compagnie !

django-logo-negative-smallPour mon dernier site web (coming soon …), j’ai décidé d’étendre mes connaissances en Python au développement web, et plus particulièrement à Django. Je ne m’étenderai pas sur ce choix, ce dernier n’étant fondé que sur des conseils d’utilisateurs de django (ceci dit je ne regrette pas du tout de les avoir écoutés =D).

Parmi les « raccourcis » que met en place django, on retrouve le decorator « login_required » qui permet de restreindre l’accès à une vue aux utilisateurs authentifiés et de rediriger les autres vers la page de connexion. Sur le papier, c’était exactement ce qu’il me fallait. Mais en pratique, j’avais quelques améliorations à apporter =p

En effet, j’utilise dans tout le reste du site une fonction de redirection maison qui fait transiter le visiteur via une page dédiée à l’affichage d’un message explicitant la redirection (ex : « Vous devez être connecté pour voir cette page », « Connexion réussie », etc.). Mon but est donc de retrouver le même comportement avec le decorator de django, comportement qui est d’après mes recherches impossible d’obtenir …

Soit, je vais coder moi-même un decorator répondant à mes besoins :cool:

#-*- encoding:utf-8 -*-

from django.shortcuts import render_to_response

def if_logged_in(f, message='Vous devez être connecté pour pouvoir voir cette page.'):
    """ Décorator pour refuser l'accès à une page aux users non connectés """

    def wrap(request, *args, **kwargs):
        if not request.user.is_authenticated():
            return redirection(request, '/connexion/', message)
        return f(request, *args, **kwargs)

    wrap.__doc__ = f.__doc__
    wrap.__name__ = f.__name__

    return wrap

def redirection(request, REDIR_URL, REDIR_MESSAGE='Erreur !', REDIR_TIME=4):
    """
    Fonction permettant de rediriger un user
    les variables locales à la fonction pourront être utilisées dans le template
    """

    return render_to_response('redirection.html', locals())

Pour ce qui est de l’utilisation, elle est identique à celle de n’importe quel decorator, y compris « login_required » ;)
Enjoy !

Posté dans : WebDev' .
Tags : , ,

2 réactions à “Réécrire et adapter le decorator « login_required » de Django”

  1. scientifix94 dit:

    C’est NouWéo ?

  2. Kévin G. dit:

    Ou pas.

Réagir :