2011-05-09 2 views
0

J'ai une application django où les utilisateurs devraient demander aux gestionnaires de rejoindre un groupe.url d'approbation dans django

Je dois être en mesure d'envoyer un courrier d'approbation au gestionnaire avec l'URL qui approuve utilisateur spécifique à

se joindre à un groupe spécifique.

Comment créer une telle URL et comment identifier l'utilisateur et le groupe après avoir cliqué sur cette URL?

Peut-être avez-vous un lien où je peux lire?

Merci, Arshavski Alexander.

Répondre

0

Pour un e-mail d'approbation, vous pouvez envoyer l'identifiant de l'utilisateur (que ce soit dans un état propre (id = 1 ou haché (si vous hachez prenez le temps d'ajouter un peu salt comme id = 356a192b7913b04c54574d18c28d46e6395428ab) au gestionnaire de groupe.

Puis, quand les clics du gestionnaire de groupe sur le lien, il est redirigé vers son « tableau de bord » avec l'utilisateur présélectionné pour approbation (vous voudrez peut-être à la liste toute la demande d'approbation d'un utilisateur dans cette page (pas encore approuvé))

Ensuite, le gestionnaire de groupe peut autoriser ou refuser l'accès à un utilisateur (pour un seul groupe ou plusieurs groupes)

1

Voici comment créer une clé unique pour la demande

from random import random 
from django.utils.hashcompat import sha_constructor 

invite_salt = sha_constructor(str(random())).hexdigest()[:5] 
invite_key = sha_constructor("|".join([admin_salt, email, url])).hexdigest() 

stocker ensuite ceci dans un champ sur un modèle, vous pouvez l'appeler ApprovalRequest. Ensuite, vous pouvez construire une vue comme

def approve(request, admin_key): 
    approval_request = get_object_or_404(ApprovalRequest, invite_key=admin_key) 

Le ApprovalRequest doit contenir un ForeignKey à l'utilisateur qui a initié et le groupe qu'ils voulaient se joindre afin que vous puissiez le gérer de façon appropriée à ce stade, après quoi marquer la demande d'approbation Achevée.

Pour obtenir une URL pour ce point de vue d'approuver vous pouvez utiliser inverse (« approuver », admin_key) en supposant que vous cartographié la vue comme suit urls.py

url(r"^approve/([^/]+)/", 'example.views.approve', name='approve')