Andrija Dujak
Andrija Dujak

Reputation: 21

How do you turn a user into staff?

Using a view i want to turn a user into staff, how do i do it. using is_staff just gives me if the user is staff or not.

def createAdmin(request,member_id):
    admin_group= Group.objects.get(name='admin')
    member = get_object_or_404(Member,pk=member_id)
    user = User.objects.get(member = member)
    admin_group.user_set.add(user)
    user.staff=True
    user.save()

This is the code i use to make that user a admin but i don't know how i could give him staff status. user.staff doesn't work.

Upvotes: 1

Views: 111

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 476557

You set the is_staff field, so:

from django.shortcuts import get_object_or_404

def createAdmin(request,member_id):
    admin_group= get_object_or_404(Group, name='admin')
    member = get_object_or_404(Member,pk=member_id)
    user = get_object_or_404(User, member=member)
    admin_group.user_set.add(user)
    user.is_staff = True
    user.save()

You should do this only in case of a POST request, since a GET request is not supposed to have side effects. In order to make it a super user as well, you can set the .is_superuser:

from django.shortcuts import get_object_or_404

def createAdmin(request,member_id):
    admin_group= get_object_or_404(Group, name='admin')
    member = get_object_or_404(Member,pk=member_id)
    user = get_object_or_404(User, member=member)
    admin_group.user_set.add(user)
    user.is_staff = True
    user.is_superuser = True
    user.save()

Note: You can limit views to POST requests with the @require_POST decorator [Django-doc].

Upvotes: 2

Related Questions