Besoin d'un coup de main !

Django, nom de groupe et superuser

a marqué ce sujet comme résolu.

Hello tout le monde !

Je suis en train de bosser sur un bout d'interface qui permettera pour un super_user de passer un membre en staff ou en super-user sans passer par l'interface admin Django (a cause d'un bug sur certain pseudo).

Voici ou j'en suis au niveau code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
@login_required
@user_passes_test(lambda u: u.is_superuser)
def upgrade_profile(request, user_pk):
    profile = get_object_or_404(Profile, user__pk=user_pk)

    if request.method == "POST":
        staff_group = Group.objects.get(name='staff')
        if request.POST.get('staff-check', False) == "isstaff":
            profile.user.groups.add(staff_group)
        else:
            profile.user.groups.remove(staff_group)

        # CE MORCEAU NE MARCHE PAS
        if request.POST.get('superuser-check', False) == "issuperuser":
            profile.user.is_superuser = True
        else:
            profile.user.is_superuser = False

        profile.save()

    return redirect(profile.get_absolute_url())

Alors qu'avons nous ici…

  • L'adhesion/suppression d'un groups semble marcher… Mais il y a confusion entre groupe "Django" et groupe "ZdS"… Un staff ZdS est-il un staff Django (ou me suis j'embrouillé sur toute la ligne par overdose de SO ?)
  • Rajouter la permission de super user ne marche pas comme ca, et je n'arrive pas à trouver comment faire…

Bref, si qqun a des lumières la dessus, qu'il partage ca fera plaisir et closera une issue bloquante !

++

+0 -0

Sur ZdS un staff est celui qui appartient a un groupe particulier. Quand je parle de groupe je parle de celui-ci.

La case a cochée Staff de django n'est pas utilisée sur ZdS. En gros, il faudrait que ton interface permette juste de rajouter quelqu'un dans un groupe et de le retirer.

Mais par contre pour faire ce traitement, l'utilisateur doit être superuser

Mais par contre pour faire ce traitement, l'utilisateur doit être superuser

cf ma ligne 2 dans le bout de code.

Donc on est d'accord, un staff ZdS n'est pas un "staff" django" (un staff django = qqun qui peut lire le contenu de l'interface d'admin django si je dis pas de betises).

Du coup, sur la version local je pense que les fixtures sont buggues car un membre staff ne recupere pas le badge dans son profil. Erreur de typo/casse entre "staff" et "STAFF"

Sinon une idee pour passer super_user ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte