diff --git a/journals/models.py b/journals/models.py index 69542a2f256784b5735a71572c78ba31b03e6311..d7c4ca685c0ff51a8ac6196e1c155c6b05e056bd 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 29e7c8ccec3a9989ba22107b0dfc3eee3faa4efe..0c57c906b26e55f5399acf9bc5358f8e0acf2389 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 1216016bb286921491619df520d61e59202c890c..1dcd0754265a3983ea98e334c0612e7e9ec63f54 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 182ed707d22fa148a97fc77774f5e08f60ad1669..7144644b068d1e17d7ca9149e71193158270c253 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 28905f64fab2399295eb9f7ebfef39de9338aa9b..26f7d492a97ca4e55b9ff7c041fd00c6f6371d70 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 107e98f1de5f1f19ee579004699d42bbcbbb802a..fc0385b061d413f62f01ab261cf136d374499853 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 ###############