DJANGO PERMISSION

Salut 😉

Aujourd’hui  je vais   parler  de l’utilisation des  permissions  dans une application django

.Pour illustrer j’utiliserai quelques codes sources  d’une application que j’ai développé  récemment  (supervisors)  et qui se trouve dans mon compte github .

simple   exemples .

* la saisie d’un superviseur  nécessite une authentification

    
@login_required
def  edit_sup(req ,pk , tpl_name ="supervisor/edit.html"):
    """ Edit supervisor of village"""
    context ={}
    sup =get_object_or_404 (Supervisor , id =pk)
    if req.method =="POST":
    form =  SupervisorForm(req.POST, instance = sup)
    if form.is_valid ():
         form.save ()
         context ['statut']=_('Edit success')
   else :
         context["error"] = form.errors
   else:
         form =SupervisorForm(instance = sup)

   context['form'] = form
   context['sup']  = sup
   context['title']= _("Edit supervisor title")
   return render_to_response  (tpl_name , context)

Ce bout de code ne sera exécuté tant que l’utilisateur n’est pas authentifié . A chaque tentative échouée  DJANGO renverra a nouveau vers la page d’authentification .

La deuxième façon fréquente  d’utiliser les permissions sous django est  d’exiger un certains type de permission  de l’utilisateur pour faire un traitement .Par exemple

dans le code qui suit je veux que l’utilisateur qui exécute l’export dispose  de  la permission   (can_export)

*  Code

@permission_required ("permission.can_export")
def export_sup(req):
   """ export  villages or supervisors  data """
   try:
   ass_dict  = []
   for sup in  Supervisor.objects.all():
       keys  = sup.data_count.keys()
       ass_dict.append (sup.data_count)
       # Exporting suppervisor data
       return export_dict(list(keys), ass_dict)
 except Exception  ,e:
      print  "Error export data "
      print  e
      return HttpResponse (
      """
      Exception when reporting data , please
      please contact  :dia.aliounes@gmail.com
      """)

Ne soyez pas surpris  de voir( permission.can_export )   au lieu  de (permission)  .Sachez que sous django les permissions doivent être liées  à des models de données .Naturellement  un model peut juste contenir des permissions ce que j’ai fais  .

* models.py

 class Permission(models.Model):
 """
 This model  does nothing It exist only to handle permissions
 for users using Web UI interface
 """
 class Meta:
     permissions = (
     ("can_export" , "can  export"),
     ("can_edit" , "can  edit"),    
     ("can_see" , "can  see"),
 )

Voila c’est  tout  , a plus   😉

Publicités

0 Responses to “DJANGO PERMISSION”



  1. Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s





%d blogueurs aiment cette page :