From d78c2711070a093720716e2c2fc9532baae2e21c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 1 Oct 2020 12:48:55 -0700 Subject: [PATCH] Adds required permissions and groups --- init_db.py | 76 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 15 deletions(-) diff --git a/init_db.py b/init_db.py index 8f51473a..ef11f8c5 100644 --- a/init_db.py +++ b/init_db.py @@ -1,24 +1,60 @@ ''' starter data ''' +from django.contrib.auth.models import Group, Permission +from django.contrib.contenttypes.models import ContentType + from bookwyrm.models import Connector, User from bookwyrm.settings import DOMAIN -User.objects.create_user('mouse', 'mouse.reeve@gmail.com', 'password123') -User.objects.create_user( - 'rat', 'rat@rat.com', 'ratword', - manually_approves_followers=True -) -User.objects.get(id=1).followers.add(User.objects.get(id=2)) +groups = ['admin', 'moderator', 'editor'] +for group in groups: + Group.objects.create(name=group) + +permissions = [{ + 'codename': 'edit_instance_settings', + 'name': 'change the instance info', + 'groups': ['admin',] + }, { + 'codename': 'set_user_group', + 'name': 'change what group a user is in', + 'groups': ['admin', 'moderator'] + }, { + 'codename': 'control_federation', + 'name': 'control who to federate with', + 'groups': ['admin', 'moderator'] + }, { + 'codename': 'create_invites', + 'name': 'issue invitations to join', + 'groups': ['admin', 'moderator'] + }, { + 'codename': 'moderate_user', + 'name': 'deactivate or silence a user', + 'groups': ['admin', 'moderator'] + }, { + 'codename': 'moderate_post', + 'name': 'delete other users\' posts', + 'groups': ['admin', 'moderator'] + }, { + 'codename': 'edit_book', + 'name': 'edit book info', + 'groups': ['admin', 'moderator', 'editor'] + }] + +content_type = ContentType.objects.get_for_model(User) +for permission in permissions: + permission_obj = Permission.objects.create( + codename=permission['codename'], + name=permission['name'], + content_type=content_type, + ) + # add the permission to the appropriate groups + for group_name in permission['groups']: + Group.objects.get(name=group_name).permissions.add(permission_obj) + +# while the groups and permissions shouldn't be changed because the code +# depends on them, what permissions go with what groups should be editable + -Connector.objects.create( - identifier='openlibrary.org', - name='OpenLibrary', - connector_file='openlibrary', - base_url='https://openlibrary.org', - books_url='https://openlibrary.org', - covers_url='https://covers.openlibrary.org', - search_url='https://openlibrary.org/search?q=', -) Connector.objects.create( identifier=DOMAIN, @@ -31,3 +67,13 @@ Connector.objects.create( search_url='https://%s/search?q=' % DOMAIN, priority=1, ) + +Connector.objects.create( + identifier='openlibrary.org', + name='OpenLibrary', + connector_file='openlibrary', + base_url='https://openlibrary.org', + books_url='https://openlibrary.org', + covers_url='https://covers.openlibrary.org', + search_url='https://openlibrary.org/search?q=', +)