SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit bd85dfe0 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Make documentation available by permission only.

New Group defined: Developers.

New Permission: can_view_docs_scipost (necessary to view the /docs/).

Need to run the add_groups_and_permissions management command.
parent 81d0b5ce
No related branches found
No related tags found
No related merge requests found
...@@ -90,6 +90,9 @@ HAYSTACK_CONNECTIONS = { ...@@ -90,6 +90,9 @@ HAYSTACK_CONNECTIONS = {
} }
SPHINXDOC_BASE_TEMPLATE = 'scipost/base.html' SPHINXDOC_BASE_TEMPLATE = 'scipost/base.html'
SPHINXDOC_PROTECTED_PROJECTS = {
'scipost': ['scipost.can_view_docs_scipost'],
}
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge' CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'
CAPTCHA_LETTER_ROTATION = (-15, 15) CAPTCHA_LETTER_ROTATION = (-15, 15)
......
...@@ -7,19 +7,19 @@ from scipost.models import Contributor ...@@ -7,19 +7,19 @@ from scipost.models import Contributor
class Command(BaseCommand): class Command(BaseCommand):
help = 'Defines groups and permissions' help = 'Defines groups and permissions'
def add_arguments(self, parser): def add_arguments(self, parser):
"""Append arguments optionally for setup of Contributor roles.""" """Append arguments optionally for setup of Contributor roles."""
parser.add_argument('-u', '--setup-user', metavar='<username>', type=str, required=False, parser.add_argument('-u', '--setup-user', metavar='<username>', type=str, required=False,
help='Username to make registered contributor') help='Username to make registered contributor')
parser.add_argument('-a', '--make-admin', required=False, action='store_true', parser.add_argument('-a', '--make-admin', required=False, action='store_true',
help='Grant admin permissions to user (superuser only)') help='Grant admin permissions to user (superuser only)')
parser.add_argument('-t', '--make-tester', required=False, action='store_true', parser.add_argument('-t', '--make-tester', required=False, action='store_true',
help='Grant test permissions to user') help='Grant test permissions to user')
def handle(self, *args, **options): def handle(self, *args, **options):
"""Append all user Groups and setup a Contributor roles to user.""" """Append all user Groups and setup a Contributor roles to user."""
# Create Groups # Create Groups
SciPostAdmin, created = Group.objects.get_or_create(name='SciPost Administrators') SciPostAdmin, created = Group.objects.get_or_create(name='SciPost Administrators')
AdvisoryBoard, created = Group.objects.get_or_create(name='Advisory Board') AdvisoryBoard, created = Group.objects.get_or_create(name='Advisory Board')
...@@ -27,6 +27,7 @@ class Command(BaseCommand): ...@@ -27,6 +27,7 @@ class Command(BaseCommand):
EditorialCollege, created = Group.objects.get_or_create(name='Editorial College') EditorialCollege, created = Group.objects.get_or_create(name='Editorial College')
VettingEditors, created = Group.objects.get_or_create(name='Vetting Editors') VettingEditors, created = Group.objects.get_or_create(name='Vetting Editors')
RegisteredContributors, created = Group.objects.get_or_create(name='Registered Contributors') RegisteredContributors, created = Group.objects.get_or_create(name='Registered Contributors')
Developers, created = Group.objects.get_or_create(name='Developers')
Testers, created = Group.objects.get_or_create(name='Testers') Testers, created = Group.objects.get_or_create(name='Testers')
Ambassadors, created = Group.objects.get_or_create(name='Ambassadors') Ambassadors, created = Group.objects.get_or_create(name='Ambassadors')
JuniorAmbassadors, created = Group.objects.get_or_create(name='Junior Ambassadors') JuniorAmbassadors, created = Group.objects.get_or_create(name='Junior Ambassadors')
...@@ -150,6 +151,13 @@ class Command(BaseCommand): ...@@ -150,6 +151,13 @@ class Command(BaseCommand):
name='Can publish accepted submission', name='Can publish accepted submission',
content_type=content_type) content_type=content_type)
# Documentation
can_view_docs_scipost, created = Permission.objects.get_or_create(
codename='can_view_docs_scipost',
name='Can view docs: scipost',
content_type=content_type)
# Assign permissions to groups # Assign permissions to groups
SciPostAdmin.permissions.add( SciPostAdmin.permissions.add(
can_manage_registration_invitations, can_manage_registration_invitations,
...@@ -195,6 +203,9 @@ class Command(BaseCommand): ...@@ -195,6 +203,9 @@ class Command(BaseCommand):
can_request_thesislinks, can_request_thesislinks,
can_referee, can_referee,
) )
Developers.permissions.add(
can_view_docs_scipost,
)
Ambassadors.permissions.add( Ambassadors.permissions.add(
can_manage_registration_invitations, can_manage_registration_invitations,
) )
...@@ -203,7 +214,7 @@ class Command(BaseCommand): ...@@ -203,7 +214,7 @@ class Command(BaseCommand):
) )
self.stdout.write(self.style.SUCCESS('Successfully created groups and permissions.')) self.stdout.write(self.style.SUCCESS('Successfully created groups and permissions.'))
if options['setup_user']: if options['setup_user']:
# Username is given, check options # Username is given, check options
try: try:
...@@ -222,8 +233,8 @@ class Command(BaseCommand): ...@@ -222,8 +233,8 @@ class Command(BaseCommand):
elif options['make_admin']: elif options['make_admin']:
# Make admin failed, user not a superuser # Make admin failed, user not a superuser
self.stdout.write(self.style.WARNING('User %s is not a superuser.' % user)) self.stdout.write(self.style.WARNING('User %s is not a superuser.' % user))
if options['make_tester']: if options['make_tester']:
# Setup test contributor # Setup test contributor
user.groups.add(Testers) user.groups.add(Testers)
self.stdout.write(self.style.SUCCESS('Successfully made %s tester.' % user)) self.stdout.write(self.style.SUCCESS('Successfully made %s tester.' % user))
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment