From 478cbfbe960c834f12fa256939709020b02e9f0e Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Tue, 29 Mar 2016 19:54:51 +0200 Subject: [PATCH] Moved permissions from Meta of Contributor to management command add_groups_and_permissions --- journals/models.py | 1 - scipost/admin.py | 4 +- .../commands/add_groups_and_permissions.py | 62 +++++++++++++++---- scipost/models.py | 11 ---- scipost/utils.py | 3 - submissions/models.py | 7 ++- 6 files changed, 57 insertions(+), 31 deletions(-) diff --git a/journals/models.py b/journals/models.py index 69542a2f2..d7c4ca685 100644 --- a/journals/models.py +++ b/journals/models.py @@ -2,7 +2,6 @@ from django.utils import timezone from django.db import models from django.contrib.auth.models import User -from .models import * SCIPOST_JOURNALS = ( diff --git a/scipost/admin.py b/scipost/admin.py index 29e7c8cce..0c57c906b 100644 --- a/scipost/admin.py +++ b/scipost/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin from django.contrib.auth.admin import UserAdmin -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Permission from scipost.models import * @@ -24,3 +24,5 @@ admin.site.register(RegistrationInvitation) admin.site.register(AuthorshipClaim) #admin.site.register(Opinion) + +admin.site.register(Permission) diff --git a/scipost/management/commands/add_groups_and_permissions.py b/scipost/management/commands/add_groups_and_permissions.py index 1216016bb..1dcd07542 100644 --- a/scipost/management/commands/add_groups_and_permissions.py +++ b/scipost/management/commands/add_groups_and_permissions.py @@ -1,33 +1,71 @@ from django.core.management.base import BaseCommand, CommandError from django.contrib.auth.models import Group, Permission +from django.contrib.contenttypes.models import ContentType + +from scipost.models import Contributor class Command(BaseCommand): help = 'Defines groups and permissions' def handle(self, *args, **options): + # Create Groups SciPostAdmin, created = Group.objects.get_or_create(name='SciPost Administrators') AdvisoryBoard, created = Group.objects.get_or_create(name='Advisory Board') EditorialCollege, created = Group.objects.get_or_create(name='Editorial College') VettingEditors, created = Group.objects.get_or_create(name='Vetting Editors') RegisteredContributors, created = Group.objects.get_or_create(name='Registered Contributors') + + # Create Permissions + content_type = ContentType.objects.get_for_model(Contributor) # Registration - can_manage_registration_invitations = Permission.objects.get(codename='can_manage_registration_invitations') - can_vet_registration_requests = Permission.objects.get(codename='can_vet_registration_requests') + can_manage_registration_invitations, created = Permission.objects.get_or_create( + codename='can_manage_registration_invitations', + name= 'Can manage registration invitations', + content_type=content_type) + can_vet_registration_requests, created = Permission.objects.get_or_create( + codename='can_vet_registration_requests', + name= 'Can vet registration requests', + content_type=content_type) # Vetting of simple objects - can_vet_commentary_requests = Permission.objects.get(codename='can_vet_commentary_requests') - can_vet_thesislink_requests = Permission.objects.get(codename='can_vet_thesislink_requests') - can_vet_authorship_claims = Permission.objects.get(codename='can_vet_authorship_claims') - can_vet_comments = Permission.objects.get(codename='can_vet_comments') + can_vet_commentary_requests, created = Permission.objects.get_or_create( + codename='can_vet_commentary_requests', + name= 'Can vet Commentary page requests', + content_type=content_type) + can_vet_thesislink_requests, created = Permission.objects.get_or_create( + codename='can_vet_thesislink_requests', + name= 'Can vet Thesis Link requests', + content_type=content_type) + can_vet_authorship_claims, created = Permission.objects.get_or_create( + codename='can_vet_authorship_claims', + name= 'Can vet Authorship claims', + content_type=content_type) + can_vet_comments, created = Permission.objects.get_or_create( + codename='can_vet_comments', + name= 'Can vet submitted Comments', + content_type=content_type) # Submission handling - can_process_incoming_submissions = Permission.objects.get(codename='can_process_incoming_submissions') - can_vet_submitted_reports = Permission.objects.get(codename='can_vet_submitted_reports') + can_process_incoming_submissions, created = Permission.objects.get_or_create( + codename='can_process_incoming_submissions', + name= 'Can process incoming Submissions', + content_type=content_type) + can_vet_submitted_reports, created = Permission.objects.get_or_create( + codename='can_vet_submitted_reports', + name='Can vet submitted Reports', + content_type=content_type) + + # Assign permissions to groups SciPostAdmin.permissions.add(can_manage_registration_invitations, can_vet_registration_requests, - can_vet_commentary_requests, can_vet_thesislink_requests, - can_vet_authorship_claims, can_vet_comments, + can_vet_commentary_requests, + can_vet_thesislink_requests, + can_vet_authorship_claims, + can_vet_comments, ) - VettingEditors.permissions.add(can_vet_commentary_requests, can_vet_thesislink_requests, - can_vet_authorship_claims, can_vet_comments, + VettingEditors.permissions.add(can_vet_commentary_requests, + can_vet_thesislink_requests, + can_vet_authorship_claims, + can_vet_comments, ) + self.stdout.write(self.style.SUCCESS('Successfully created groups and permissions')) diff --git a/scipost/models.py b/scipost/models.py index 182ed707d..7144644b0 100644 --- a/scipost/models.py +++ b/scipost/models.py @@ -56,17 +56,6 @@ class Contributor(models.Model): personalwebpage = models.URLField(verbose_name='personal web page', blank=True) vetted_by = models.OneToOneField('self', blank=True, null=True) - class Meta: - permissions = ( - ('can_manage_registration_invitations', 'Can manage registration invitations'), - ('can_vet_registration_requests', 'Can vet registration requests'), - ('can_vet_commentary_requests', 'Can vet Commentary page requests'), - ('can_vet_thesislink_requests', 'Can vet Thesis Link requests'), - ('can_vet_authorship_claims', 'Can vet Authorship claims'), - ('can_vet_comments', 'Can vet submitted comments'), - ('can_process_incoming_submissions', 'Can process incoming Submissions'), - ('can_vet_submitted_reports', 'Can vet submitted Reports'), - ) def __str__ (self): return self.user.last_name + ', ' + self.user.first_name diff --git a/scipost/utils.py b/scipost/utils.py index 28905f64f..26f7d492a 100644 --- a/scipost/utils.py +++ b/scipost/utils.py @@ -1,6 +1,3 @@ -#!/usr/bin/env python -# -*- coding: latin-1 -*- - import datetime import hashlib import random diff --git a/submissions/models.py b/submissions/models.py index 107e98f1d..fc0385b06 100644 --- a/submissions/models.py +++ b/submissions/models.py @@ -4,9 +4,10 @@ from django.contrib.auth.models import User from .models import * -from scipost.models import * -from journals.models import * - +from scipost.models import Contributor +from scipost.models import SCIPOST_DISCIPLINES +from journals.models import SCIPOST_JOURNALS_SUBMIT, SCIPOST_JOURNALS_DOMAINS, SCIPOST_JOURNALS_SPECIALIZATIONS +from journals.models import journals_submit_dict, journals_domains_dict, journals_spec_dict ############### -- GitLab