mirror of https://github.com/snachodog/mybuddy.git
fix - Remove staff type from group and add is-staff arg
This commit is contained in:
parent
400ad66968
commit
b50748598b
|
@ -7,7 +7,7 @@ Example usage:
|
|||
manage.py createuser \
|
||||
--username test \
|
||||
--email test@test.test \
|
||||
--group staff
|
||||
--group read_only
|
||||
"""
|
||||
import sys
|
||||
import getpass
|
||||
|
@ -54,15 +54,22 @@ class Command(BaseCommand):
|
|||
parser.add_argument(
|
||||
"--group",
|
||||
dest="groups",
|
||||
choices=("read_only", "standard", "staff"),
|
||||
default="read_only",
|
||||
help="Specifies the group a user belongs to. Default is read_only.",
|
||||
choices=("read_only", "standard"),
|
||||
default="standard",
|
||||
help="Specifies the group a user belongs to. Default is standard.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--is-staff",
|
||||
dest="is_staff",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="Specifies the staff status for the user. Default is False.",
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
username = options.get(self.UserModel.USERNAME_FIELD)
|
||||
password = options.get("password")
|
||||
group_name = options.get("groups", "read_only")
|
||||
group_name = options.get("groups", "standard")
|
||||
|
||||
user_data = {}
|
||||
user_password = ""
|
||||
|
@ -115,10 +122,13 @@ class Command(BaseCommand):
|
|||
DEFAULT_DB_ALIAS
|
||||
).create_user(**user_data, password=user_password)
|
||||
user.email = options.get("email")
|
||||
if group_name == "staff":
|
||||
user.is_staff = True
|
||||
user.is_staff = options.get("is_staff")
|
||||
user.save()
|
||||
user.groups.add(group)
|
||||
if user.is_staff:
|
||||
user.is_superuser = True
|
||||
user.save()
|
||||
else:
|
||||
user.groups.add(group)
|
||||
|
||||
if options.get("verbosity") > 0:
|
||||
self.stdout.write(f"User {username} created successfully.")
|
||||
|
|
|
@ -25,7 +25,7 @@ class CommandsTestCase(TransactionTestCase):
|
|||
|
||||
def test_createuser(self):
|
||||
Group.objects.create(name="read_only")
|
||||
Group.objects.create(name="staff")
|
||||
Group.objects.create(name="standard")
|
||||
|
||||
call_command(
|
||||
"createuser",
|
||||
|
@ -35,14 +35,18 @@ class CommandsTestCase(TransactionTestCase):
|
|||
verbosity=0,
|
||||
)
|
||||
self.assertIsInstance(User.objects.get(username="test"), User)
|
||||
self.assertFalse(User.objects.filter(username="test", is_staff=True))
|
||||
self.assertFalse(
|
||||
User.objects.filter(username="test", is_staff=True, is_superuser=True)
|
||||
)
|
||||
call_command(
|
||||
"createuser",
|
||||
"--is-staff",
|
||||
username="testadmin",
|
||||
email="testadmin@testadmin.testadmin",
|
||||
password="test",
|
||||
group="staff",
|
||||
verbosity=0,
|
||||
)
|
||||
self.assertIsInstance(User.objects.get(username="testadmin"), User)
|
||||
self.assertTrue(User.objects.filter(username="testadmin", is_staff=True))
|
||||
self.assertTrue(
|
||||
User.objects.filter(username="testadmin", is_staff=True, is_superuser=True)
|
||||
)
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
|
||||
## Creating a User from the Command Line
|
||||
|
||||
A user's type can be:
|
||||
|
||||
- Read only (can access all data but not make new entries)
|
||||
- Standard (default, can access and make/edit any type of entry)
|
||||
- Staff (bypasses permissions, can access Database Admin area)
|
||||
|
||||
There are 2 ways you can create a user from the command line:
|
||||
|
||||
1. Passing user's password as an argument:
|
||||
|
@ -28,6 +34,8 @@ There are 2 ways you can create a user from the command line:
|
|||
python manage.py createuser --username <username> --password <password>
|
||||
```
|
||||
|
||||
This will create a user with the standard privileges.
|
||||
|
||||
2. Interactively setting user's password:
|
||||
|
||||
```shell
|
||||
|
@ -36,7 +44,13 @@ python manage.py createuser --username <username>
|
|||
|
||||
You will then be prompted to enter and confirm a password.
|
||||
|
||||
- If you want to make the user a staff, you can append the `--is-staff` argument:
|
||||
- If you want to create a user with read only privileges, pass in the `read_only` value to the `group` arg:
|
||||
|
||||
```shell
|
||||
python manage.py createuser --username <username> --password <password> --group read_only
|
||||
```
|
||||
|
||||
- If you want to create a user with the highest level of permission, you can append the `--is-staff` argument:
|
||||
|
||||
```shell
|
||||
python manage.py createuser --username <username> --is-staff
|
||||
|
|
Loading…
Reference in New Issue