Commit 75c3e54d by Awais Qureshi Committed by GitHub

Merge pull request #400 from edx/awais786/ECOM-5950-admin-with-groups

Implement the super admin for publisher app using django groups.
parents 74ebfff8 dc3a7ab6
# Name of the administrative group for the Publisher app
ADMIN_GROUP_NAME = 'Publisher Admins'
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from course_discovery.apps.publisher.constants import ADMIN_GROUP_NAME
def create_admin_group(apps, schema_editor):
Group = apps.get_model('auth', 'Group')
Group.objects.get_or_create(name=ADMIN_GROUP_NAME)
def remove_admin_group(apps, schema_editor):
Group = apps.get_model('auth', 'Group')
Group.objects.filter(name=ADMIN_GROUP_NAME).delete()
class Migration(migrations.Migration):
dependencies = [
('publisher', '0013_create_enable_email_notifications_switch'),
('auth', '0006_require_contenttypes_0002'),
]
operations = [
migrations.RunPython(create_admin_group, remove_admin_group)
]
""" Tests publisher.utils""" """ Tests publisher.utils"""
from django.contrib.auth.models import Group
from django.test import TestCase from django.test import TestCase
from course_discovery.apps.core.tests.factories import UserFactory from course_discovery.apps.core.tests.factories import UserFactory
from course_discovery.apps.publisher.constants import ADMIN_GROUP_NAME
from course_discovery.apps.publisher.tests import factories from course_discovery.apps.publisher.tests import factories
from course_discovery.apps.publisher.utils import is_email_notification_enabled from course_discovery.apps.publisher.utils import is_email_notification_enabled, is_publisher_admin
class PublisherUtilsTests(TestCase): class PublisherUtilsTests(TestCase):
...@@ -33,7 +34,18 @@ class PublisherUtilsTests(TestCase): ...@@ -33,7 +34,18 @@ class PublisherUtilsTests(TestCase):
# Disabled email notification # Disabled email notification
user_attribute.enable_email_notification = False user_attribute.enable_email_notification = False
user_attribute.save() # pylint: disable=no-member user_attribute.save() # pylint: disable=no-member
# Verify that email notifications are disabled for the user # Verify that email notifications are disabled for the user
self.assertEqual(is_email_notification_enabled(self.user), False) self.assertEqual(is_email_notification_enabled(self.user), False)
def test_is_publisher_admin(self):
""" Verify the function returns a boolean indicating if the user
is a member of the administrative group.
"""
self.assertFalse(self.user.groups.filter(name=ADMIN_GROUP_NAME).exists())
self.assertFalse(is_publisher_admin(self.user))
admin_group = Group.objects.get(name=ADMIN_GROUP_NAME)
self.user.groups.add(admin_group)
self.assertTrue(is_publisher_admin(self.user))
""" Publisher Utils.""" """ Publisher Utils."""
from course_discovery.apps.publisher.constants import ADMIN_GROUP_NAME
def is_email_notification_enabled(user): def is_email_notification_enabled(user):
...@@ -14,3 +15,15 @@ def is_email_notification_enabled(user): ...@@ -14,3 +15,15 @@ def is_email_notification_enabled(user):
return user.attributes.enable_email_notification return user.attributes.enable_email_notification
return True return True
def is_publisher_admin(user):
""" Returns True if the user is a Publisher administrator.
Arguments:
user (:obj:`User`): User whose permissions should be checked.
Returns:
bool: True, if user is an administrator; otherwise, False.
"""
return user.groups.filter(name=ADMIN_GROUP_NAME).exists()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment