Commit b3652029 by Waheed Ahmed

Changed Partner Coordinator to Project Coordinator.

ECOM-7236
parent f38572c6
......@@ -130,7 +130,7 @@ class CourseRoleAssignmentViewTests(TestCase):
@ddt.data(
PublisherUserRole.PartnerManager,
PublisherUserRole.PartnerCoordinator,
PublisherUserRole.ProjectCoordinator,
PublisherUserRole.MarketingReviewer,
PublisherUserRole.Publisher
)
......@@ -221,7 +221,7 @@ class UpdateCourseKeyViewTests(TestCase):
)
factories.CourseUserRoleFactory(
role=PublisherUserRole.PartnerCoordinator,
role=PublisherUserRole.ProjectCoordinator,
course=self.course_run.course,
user=self.user
)
......@@ -651,7 +651,7 @@ class ChangeCourseRunStateViewTests(TestCase):
self.run_state.save()
self._assign_role(course, PublisherUserRole.CourseTeam, self.user)
self._assign_role(course, PublisherUserRole.PartnerCoordinator, UserFactory())
self._assign_role(course, PublisherUserRole.ProjectCoordinator, UserFactory())
self._assign_role(course, PublisherUserRole.Publisher, UserFactory())
......@@ -671,4 +671,4 @@ class ChangeCourseRunStateViewTests(TestCase):
self.assertEqual(self.run_state.owner_role, PublisherUserRole.Publisher)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual([course.publisher.email, course.partner_coordinator.email], mail.outbox[0].bcc)
self.assertEqual([course.publisher.email, course.project_coordinator.email], mail.outbox[0].bcc)
......@@ -4,7 +4,8 @@ from djchoices import ChoiceItem, DjangoChoices
class PublisherUserRole(DjangoChoices):
PartnerManager = ChoiceItem('partner_manager', _('Partner Manager'))
PartnerCoordinator = ChoiceItem('partner_coordinator', _('Partner Coordinator'))
# TODO: ECOM-7289 - Change choice value to `project_coordinator` and create a data migration.
ProjectCoordinator = ChoiceItem('partner_coordinator', _('Project Coordinator'))
MarketingReviewer = ChoiceItem('marketing_reviewer', _('Marketing Reviewer'))
Publisher = ChoiceItem('publisher', _('Publisher'))
CourseTeam = ChoiceItem('course_team', _('Course Team'))
......
......@@ -2,6 +2,9 @@
ADMIN_GROUP_NAME = 'Publisher Admins'
INTERNAL_USER_GROUP_NAME = 'Internal Users'
PARTNER_MANAGER_GROUP_NAME = 'Partner Managers'
PARTNER_COORDINATOR_GROUP_NAME = 'Partner Coordinators'
PROJECT_COORDINATOR_GROUP_NAME = 'Project Coordinators'
REVIEWER_GROUP_NAME = 'Marketing Reviewers'
PUBLISHER_GROUP_NAME = 'Publishers'
# Being used in old migration `0019_create_user_groups`.
PARTNER_COORDINATOR_GROUP_NAME = 'Partner Coordinators'
......@@ -69,7 +69,7 @@ def send_email_for_studio_instance_created(course_run, updated_text=_('created')
course_user_roles = course_run.course.course_user_roles.all()
course_team = course_user_roles.filter(role=PublisherUserRole.CourseTeam).first()
partner_coordinator = course_user_roles.filter(role=PublisherUserRole.PartnerCoordinator).first()
project_coordinator = course_user_roles.filter(role=PublisherUserRole.ProjectCoordinator).first()
context = {
'updated_text': updated_text,
......@@ -80,8 +80,8 @@ def send_email_for_studio_instance_created(course_run, updated_text=_('created')
'course_name': course_run.course.title,
'from_address': from_address,
'course_team_name': course_team.user.full_name if course_team else '',
'partner_coordinator_name': partner_coordinator.user.full_name if partner_coordinator else '',
'contact_us_email': partner_coordinator.user.email if partner_coordinator else ''
'project_coordinator_name': project_coordinator.user.full_name if project_coordinator else '',
'contact_us_email': project_coordinator.user.email if project_coordinator else ''
}
txt_template_path = 'publisher/email/studio_instance_created.txt'
......@@ -116,19 +116,19 @@ def send_email_for_course_creation(course, course_run):
course_user_roles = course_run.course.course_user_roles.all()
course_team = course_user_roles.filter(role=PublisherUserRole.CourseTeam).first()
partner_coordinator = course_user_roles.filter(role=PublisherUserRole.PartnerCoordinator).first()
project_coordinator = course_user_roles.filter(role=PublisherUserRole.ProjectCoordinator).first()
context = {
'course_title': course_run.course.title,
'date': course_run.created.strftime("%B %d, %Y"),
'time': course_run.created.strftime("%H:%M:%S"),
'course_team_name': course_team.user.full_name if course_team else '',
'partner_coordinator_name': partner_coordinator.user.full_name if partner_coordinator else '',
'project_coordinator_name': project_coordinator.user.full_name if project_coordinator else '',
'dashboard_url': 'https://{host}{path}'.format(
host=Site.objects.get_current().domain.strip('/'), path=reverse('publisher:publisher_dashboard')
),
'from_address': from_address,
'contact_us_email': partner_coordinator.user.email if partner_coordinator else ''
'contact_us_email': project_coordinator.user.email if project_coordinator else ''
}
template = get_template(txt_template)
......@@ -203,14 +203,14 @@ def send_course_workflow_email(course, user, subject, txt_template, html_templat
recipient_user = course.course_team_admin
if is_email_notification_enabled(recipient_user):
partner_coordinator = course.partner_coordinator
project_coordinator = course.project_coordinator
to_addresses = [recipient_user.email]
from_address = settings.PUBLISHER_FROM_EMAIL
context = {
'recipient_name': recipient_user.full_name or recipient_user.username if recipient_user else '',
'sender_name': user.full_name or user.username,
'course_name': course_name if course_name else course.title,
'contact_us_email': partner_coordinator.email if partner_coordinator else '',
'contact_us_email': project_coordinator.email if project_coordinator else '',
'page_url': 'https://{host}{path}'.format(
host=Site.objects.get_current().domain.strip('/'), path=page_path
)
......@@ -295,7 +295,7 @@ def send_email_to_publisher(course_run, user):
try:
if is_email_notification_enabled(recipient_user):
partner_coordinator = course_run.course.partner_coordinator
project_coordinator = course_run.course.project_coordinator
to_addresses = [recipient_user.email]
from_address = settings.PUBLISHER_FROM_EMAIL
page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': course_run.id})
......@@ -303,7 +303,7 @@ def send_email_to_publisher(course_run, user):
'recipient_name': recipient_user.full_name or recipient_user.username if recipient_user else '',
'sender_name': user.full_name or user.username,
'course_name': run_name,
'contact_us_email': partner_coordinator.email if partner_coordinator else '',
'contact_us_email': project_coordinator.email if project_coordinator else '',
'page_url': 'https://{host}{path}'.format(
host=Site.objects.get_current().domain.strip('/'), path=page_path
)
......@@ -323,7 +323,7 @@ def send_email_to_publisher(course_run, user):
def send_email_preview_accepted(course_run):
""" Send email for preview approved to publisher and partner coordinator.
""" Send email for preview approved to publisher and project coordinator.
Arguments:
course_run (Object): CourseRun object
......@@ -340,15 +340,15 @@ def send_email_preview_accepted(course_run):
try:
if is_email_notification_enabled(publisher_user):
partner_coordinator = course_run.course.partner_coordinator
project_coordinator = course_run.course.project_coordinator
to_addresses = [publisher_user.email]
if is_email_notification_enabled(partner_coordinator):
to_addresses.append(partner_coordinator.email)
if is_email_notification_enabled(project_coordinator):
to_addresses.append(project_coordinator.email)
from_address = settings.PUBLISHER_FROM_EMAIL
page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': course_run.id})
context = {
'course_name': run_name,
'contact_us_email': partner_coordinator.email if partner_coordinator else '',
'contact_us_email': project_coordinator.email if project_coordinator else '',
'page_url': 'https://{host}{path}'.format(
host=Site.objects.get_current().domain.strip('/'), path=page_path
)
......
# -*- coding: utf-8 -*-
# Generated by Django 1.9.12 on 2017-02-23 07:23
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('publisher', '0037_auto_20170221_1150'),
]
operations = [
migrations.AlterField(
model_name='courserunstate',
name='approved_by_role',
field=models.CharField(blank=True, choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, null=True),
),
migrations.AlterField(
model_name='courserunstate',
name='owner_role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63),
),
migrations.AlterField(
model_name='coursestate',
name='approved_by_role',
field=models.CharField(blank=True, choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, null=True),
),
migrations.AlterField(
model_name='coursestate',
name='owner_role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63),
),
migrations.AlterField(
model_name='courseuserrole',
name='role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, verbose_name='Course Role'),
),
migrations.AlterField(
model_name='historicalcourserunstate',
name='approved_by_role',
field=models.CharField(blank=True, choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, null=True),
),
migrations.AlterField(
model_name='historicalcourserunstate',
name='owner_role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63),
),
migrations.AlterField(
model_name='historicalcoursestate',
name='approved_by_role',
field=models.CharField(blank=True, choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, null=True),
),
migrations.AlterField(
model_name='historicalcoursestate',
name='owner_role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63),
),
migrations.AlterField(
model_name='historicalcourseuserrole',
name='role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, verbose_name='Course Role'),
),
migrations.AlterField(
model_name='historicalorganizationuserrole',
name='role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, verbose_name='Organization Role'),
),
migrations.AlterField(
model_name='organizationuserrole',
name='role',
field=models.CharField(choices=[('partner_manager', 'Partner Manager'), ('partner_coordinator', 'Project Coordinator'), ('marketing_reviewer', 'Marketing Reviewer'), ('publisher', 'Publisher'), ('course_team', 'Course Team')], max_length=63, verbose_name='Organization Role'),
),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
from course_discovery.apps.publisher.constants import PARTNER_COORDINATOR_GROUP_NAME, PROJECT_COORDINATOR_GROUP_NAME
def rename_group_to_project_coordinator(apps, schema_editor):
Group = apps.get_model('auth', 'Group')
pc_group = Group.objects.get(name=PARTNER_COORDINATOR_GROUP_NAME)
pc_group.name = PROJECT_COORDINATOR_GROUP_NAME
pc_group.save()
def rename_group_to_partner_coordinator(apps, schema_editor):
Group = apps.get_model('auth', 'Group')
pc_group = Group.objects.get(name=PROJECT_COORDINATOR_GROUP_NAME)
pc_group.name = PARTNER_COORDINATOR_GROUP_NAME
pc_group.save()
class Migration(migrations.Migration):
dependencies = [
('publisher', '0038_auto_20170223_0723'),
]
operations = [
migrations.RunPython(rename_group_to_project_coordinator, rename_group_to_partner_coordinator)
]
......@@ -171,9 +171,9 @@ class Course(TimeStampedModel, ChangedByMixin):
return None
@property
def partner_coordinator(self):
def project_coordinator(self):
try:
return self.course_user_roles.get(role=PublisherUserRole.PartnerCoordinator).user
return self.course_user_roles.get(role=PublisherUserRole.ProjectCoordinator).user
except CourseUserRole.DoesNotExist:
return None
......
......@@ -45,7 +45,7 @@ class StateChangeEmailTests(TestCase):
# add user in course-user-role table
factories.CourseUserRoleFactory(
course=cls.course, role=PublisherUserRole.PartnerCoordinator, user=cls.user
course=cls.course, role=PublisherUserRole.ProjectCoordinator, user=cls.user
)
factories.CourseUserRoleFactory(
course=cls.course, role=PublisherUserRole.MarketingReviewer, user=cls.user_2
......@@ -144,7 +144,7 @@ class StudioInstanceCreatedEmailTests(TestCase):
# add user in course-user-role table
factories.CourseUserRoleFactory(
course=self.course_run.course, role=PublisherUserRole.PartnerCoordinator, user=self.user
course=self.course_run.course, role=PublisherUserRole.ProjectCoordinator, user=self.user
)
self.course_team = UserFactory()
......@@ -212,7 +212,7 @@ class CourseCreatedEmailTests(TestCase):
# add user in course-user-role table
factories.CourseUserRoleFactory(
course=self.course_run.course, role=PublisherUserRole.PartnerCoordinator, user=self.user
course=self.course_run.course, role=PublisherUserRole.ProjectCoordinator, user=self.user
)
self.course_team = UserFactory()
......@@ -493,7 +493,7 @@ class CourseRunPreviewEmailTests(TestCase):
course=self.course, role=PublisherUserRole.Publisher, user=UserFactory()
)
factories.CourseUserRoleFactory(
course=self.course, role=PublisherUserRole.PartnerCoordinator, user=UserFactory()
course=self.course, role=PublisherUserRole.ProjectCoordinator, user=UserFactory()
)
toggle_switch('enable_publisher_email_notifications', True)
......@@ -511,7 +511,7 @@ class CourseRunPreviewEmailTests(TestCase):
run_name=run_name
)
self.assertEqual(len(mail.outbox), 1)
self.assertEqual([self.course.publisher.email, self.course.partner_coordinator.email], mail.outbox[0].bcc)
self.assertEqual([self.course.publisher.email, self.course.project_coordinator.email], mail.outbox[0].bcc)
self.assertEqual(str(mail.outbox[0].subject), subject)
body = mail.outbox[0].body.strip()
page_path = reverse('publisher:publisher_course_run_detail', kwargs={'pk': self.run_state.course_run.id})
......
......@@ -168,7 +168,7 @@ class CourseTests(TestCase):
# add user in course-user-role table
factories.CourseUserRoleFactory(
course=self.course, role=PublisherUserRole.PartnerCoordinator, user=self.user1
course=self.course, role=PublisherUserRole.ProjectCoordinator, user=self.user1
)
factories.CourseUserRoleFactory(
......@@ -240,15 +240,15 @@ class CourseTests(TestCase):
self.assertIn('abc', self.course.keywords_data)
self.assertIn('def', self.course.keywords_data)
def test_partner_coordinator(self):
""" Verify that the partner_coordinator property returns user if exist. """
self.assertIsNone(self.course2.partner_coordinator)
def test_project_coordinator(self):
""" Verify that the project_coordinator property returns user if exist. """
self.assertIsNone(self.course2.project_coordinator)
factories.CourseUserRoleFactory(
course=self.course2, user=self.user1, role=PublisherUserRole.PartnerCoordinator
course=self.course2, user=self.user1, role=PublisherUserRole.ProjectCoordinator
)
self.assertEqual(self.user1, self.course2.partner_coordinator)
self.assertEqual(self.user1, self.course2.project_coordinator)
def test_assign_roles(self):
"""
......@@ -259,7 +259,7 @@ class CourseTests(TestCase):
# create default roles for organization
factories.OrganizationUserRoleFactory(
role=PublisherUserRole.PartnerCoordinator, organization=self.org_extension_2.organization
role=PublisherUserRole.ProjectCoordinator, organization=self.org_extension_2.organization
)
factories.OrganizationUserRoleFactory(
role=PublisherUserRole.MarketingReviewer, organization=self.org_extension_2.organization
......@@ -387,7 +387,7 @@ class OrganizationUserRoleTests(TestCase):
def setUp(self):
super(OrganizationUserRoleTests, self).setUp()
self.org_user_role = factories.OrganizationUserRoleFactory(role=PublisherUserRole.PartnerCoordinator)
self.org_user_role = factories.OrganizationUserRoleFactory(role=PublisherUserRole.ProjectCoordinator)
def test_str(self):
"""Verify that a OrganizationUserRole is properly converted to a str."""
......@@ -414,7 +414,7 @@ class CourseUserRoleTests(TestCase):
def setUp(self):
super(CourseUserRoleTests, self).setUp()
self.course_user_role = factories.CourseUserRoleFactory(role=PublisherUserRole.PartnerCoordinator)
self.course_user_role = factories.CourseUserRoleFactory(role=PublisherUserRole.ProjectCoordinator)
self.course = factories.CourseFactory()
self.user = UserFactory()
self.marketing_reviewer_role = PublisherUserRole.MarketingReviewer
......
......@@ -8,7 +8,7 @@ from mock import Mock
from course_discovery.apps.core.tests.factories import UserFactory
from course_discovery.apps.publisher.constants import (
ADMIN_GROUP_NAME, INTERNAL_USER_GROUP_NAME, PARTNER_COORDINATOR_GROUP_NAME, REVIEWER_GROUP_NAME
ADMIN_GROUP_NAME, INTERNAL_USER_GROUP_NAME, PROJECT_COORDINATOR_GROUP_NAME, REVIEWER_GROUP_NAME
)
from course_discovery.apps.publisher.mixins import (
check_course_organization_permission, check_roles_access, publisher_user_required
......@@ -16,7 +16,7 @@ from course_discovery.apps.publisher.mixins import (
from course_discovery.apps.publisher.models import OrganizationExtension
from course_discovery.apps.publisher.tests import factories
from course_discovery.apps.publisher.utils import (
get_internal_users, is_email_notification_enabled, is_internal_user, is_partner_coordinator_user,
get_internal_users, is_email_notification_enabled, is_internal_user, is_project_coordinator_user,
is_publisher_admin, is_publisher_user, make_bread_crumbs
)
......@@ -87,15 +87,15 @@ class PublisherUtilsTests(TestCase):
self.user.groups.add(internal_user_group)
self.assertEqual(get_internal_users(), [self.user])
def test_is_partner_coordinator_user(self):
def test_is_project_coordinator_user(self):
""" Verify the function returns a boolean indicating if the user
is a member of the partner coordinator group.
is a member of the project coordinator group.
"""
self.assertFalse(is_partner_coordinator_user(self.user))
self.assertFalse(is_project_coordinator_user(self.user))
partner_coordinator_group = Group.objects.get(name=PARTNER_COORDINATOR_GROUP_NAME)
self.user.groups.add(partner_coordinator_group)
self.assertTrue(is_partner_coordinator_user(self.user))
project_coordinator_group = Group.objects.get(name=PROJECT_COORDINATOR_GROUP_NAME)
self.user.groups.add(project_coordinator_group)
self.assertTrue(is_project_coordinator_user(self.user))
def test_check_roles_access_with_admin(self):
""" Verify the function returns a boolean indicating if the user
......
......@@ -24,7 +24,7 @@ from course_discovery.apps.course_metadata.tests.factories import OrganizationFa
from course_discovery.apps.ietf_language_tags.models import LanguageTag
from course_discovery.apps.publisher.choices import CourseRunStateChoices, CourseStateChoices, PublisherUserRole
from course_discovery.apps.publisher.constants import (ADMIN_GROUP_NAME, INTERNAL_USER_GROUP_NAME,
PARTNER_COORDINATOR_GROUP_NAME, REVIEWER_GROUP_NAME)
PROJECT_COORDINATOR_GROUP_NAME, REVIEWER_GROUP_NAME)
from course_discovery.apps.publisher.models import Course, CourseRun, CourseState, OrganizationExtension, Seat
from course_discovery.apps.publisher.tests import factories
from course_discovery.apps.publisher.tests.utils import create_non_staff_user_and_login
......@@ -64,7 +64,7 @@ class CreateCourseViewTests(TestCase):
# creating default organizations roles
factories.OrganizationUserRoleFactory(
role=PublisherUserRole.PartnerCoordinator, organization=self.organization_extension.organization
role=PublisherUserRole.ProjectCoordinator, organization=self.organization_extension.organization
)
factories.OrganizationUserRoleFactory(
role=PublisherUserRole.MarketingReviewer, organization=self.organization_extension.organization
......@@ -1208,21 +1208,21 @@ class DashboardTests(TestCase):
super(DashboardTests, self).setUp()
self.group_internal = Group.objects.get(name=INTERNAL_USER_GROUP_NAME)
self.group_partner_coordinator = Group.objects.get(name=PARTNER_COORDINATOR_GROUP_NAME)
self.group_project_coordinator = Group.objects.get(name=PROJECT_COORDINATOR_GROUP_NAME)
self.group_reviewer = Group.objects.get(name=REVIEWER_GROUP_NAME)
self.user1 = UserFactory()
self.user2 = UserFactory()
self.user1.groups.add(self.group_internal)
self.user1.groups.add(self.group_partner_coordinator)
self.user1.groups.add(self.group_project_coordinator)
self.user1.groups.add(self.group_reviewer)
self.user2.groups.add(self.group_internal)
self.client.login(username=self.user1.username, password=USER_PASSWORD)
self.page_url = reverse('publisher:publisher_dashboard')
pc = PublisherUserRole.PartnerCoordinator
pc = PublisherUserRole.ProjectCoordinator
# user1 courses data set ( 2 studio-request, 1 published, 1 in preview ready, 1 in progress )
self.course_run_1 = self._create_course_assign_role(CourseRunStateChoices.Draft, self.user1, pc)
......@@ -1320,7 +1320,7 @@ class DashboardTests(TestCase):
def test_studio_request_course_runs_without_pc_group(self):
""" Verify that PC user can see only those courses on which he is assigned as PC role. """
self.user1.groups.remove(self.group_partner_coordinator)
self.user1.groups.remove(self.group_project_coordinator)
response = self.assert_dashboard_response(studio_count=0, published_count=1, progress_count=2, preview_count=1)
self._assert_tabs_with_roles(response)
......@@ -1363,7 +1363,7 @@ class DashboardTests(TestCase):
# assign user course role
factories.CourseUserRoleFactory(
course=self.course_run_3.course, user=internal_user, role=PublisherUserRole.PartnerCoordinator
course=self.course_run_3.course, user=internal_user, role=PublisherUserRole.ProjectCoordinator
)
# Verify that user can see 1 published course run
......@@ -2032,7 +2032,7 @@ class CourseRunEditViewTests(TestCase):
# creating default organizations roles
factories.OrganizationUserRoleFactory(
role=PublisherUserRole.PartnerCoordinator, organization=self.organization_extension.organization
role=PublisherUserRole.ProjectCoordinator, organization=self.organization_extension.organization
)
factories.OrganizationUserRoleFactory(
role=PublisherUserRole.MarketingReviewer, organization=self.organization_extension.organization
......
""" Publisher Utils."""
from course_discovery.apps.core.models import User
from course_discovery.apps.publisher.constants import (
ADMIN_GROUP_NAME, INTERNAL_USER_GROUP_NAME, PARTNER_COORDINATOR_GROUP_NAME
ADMIN_GROUP_NAME, INTERNAL_USER_GROUP_NAME, PROJECT_COORDINATOR_GROUP_NAME
)
......@@ -54,8 +54,8 @@ def get_internal_users():
return list(User.objects.filter(groups__name=INTERNAL_USER_GROUP_NAME))
def is_partner_coordinator_user(user):
""" Returns True if the user is an partner coordinator user.
def is_project_coordinator_user(user):
""" Returns True if the user is an project coordinator user.
Arguments:
user (:obj:`User`): User whose permissions should be checked.
......@@ -63,7 +63,7 @@ def is_partner_coordinator_user(user):
Returns:
bool: True, if user is an PC user; otherwise, False.
"""
return user.groups.filter(name=PARTNER_COORDINATOR_GROUP_NAME).exists()
return user.groups.filter(name=PROJECT_COORDINATOR_GROUP_NAME).exists()
def is_publisher_user(user):
......
......@@ -24,7 +24,7 @@ from course_discovery.apps.publisher.choices import CourseRunStateChoices, Cours
from course_discovery.apps.publisher.forms import CustomCourseForm, CustomCourseRunForm, CustomSeatForm, SeatForm
from course_discovery.apps.publisher.models import (Course, CourseRun, CourseRunState, CourseState, CourseUserRole,
OrganizationExtension, Seat, UserAttributes)
from course_discovery.apps.publisher.utils import (get_internal_users, is_internal_user, is_partner_coordinator_user,
from course_discovery.apps.publisher.utils import (get_internal_users, is_internal_user, is_project_coordinator_user,
is_publisher_admin, make_bread_crumbs)
from course_discovery.apps.publisher.wrappers import CourseRunWrapper
......@@ -35,7 +35,7 @@ SEATS_HIDDEN_FIELDS = ['price', 'currency', 'upgrade_deadline', 'credit_provider
ROLE_WIDGET_HEADINGS = {
PublisherUserRole.PartnerManager: _('PARTNER MANAGER'),
PublisherUserRole.PartnerCoordinator: _('PARTNER COORDINATOR'),
PublisherUserRole.ProjectCoordinator: _('PROJECT COORDINATOR'),
PublisherUserRole.MarketingReviewer: _('MARKETING'),
PublisherUserRole.Publisher: _('PUBLISHER'),
PublisherUserRole.CourseTeam: _('COURSE TEAM')
......@@ -82,12 +82,12 @@ class Dashboard(mixins.LoginRequiredMixin, ListView):
unpublished_course_runs = course_runs.exclude(course_run_state__name=CourseRunStateChoices.Published)
# Studio requests needs to check depending upon the user role with course
# Also user should be part of partner coordinator group.
# Also user should be part of project coordinator group.
if is_publisher_admin(self.request.user):
studio_request_courses = unpublished_course_runs.filter(lms_course_id__isnull=True)
elif is_partner_coordinator_user(self.request.user):
elif is_project_coordinator_user(self.request.user):
studio_request_courses = unpublished_course_runs.filter(lms_course_id__isnull=True).filter(
course__course_user_roles__role=PublisherUserRole.PartnerCoordinator
course__course_user_roles__role=PublisherUserRole.ProjectCoordinator
)
else:
studio_request_courses = []
......
......@@ -41,15 +41,15 @@ class CommentsEmailTests(TestCase):
# add user in course-user-role table
factories.CourseUserRoleFactory(
course=self.course, role=PublisherUserRole.PartnerCoordinator, user=self.user
course=self.course, role=PublisherUserRole.ProjectCoordinator, user=self.user
)
factories.CourseUserRoleFactory(
course=self.course, role=PublisherUserRole.PartnerCoordinator, user=self.user_2
course=self.course, role=PublisherUserRole.ProjectCoordinator, user=self.user_2
)
factories.CourseUserRoleFactory(
course=self.course, role=PublisherUserRole.PartnerCoordinator, user=self.user_3
course=self.course, role=PublisherUserRole.ProjectCoordinator, user=self.user_3
)
UserAttributeFactory(user=self.user, enable_email_notification=True)
......@@ -148,7 +148,7 @@ class CommentsEmailTests(TestCase):
course=self.course, role=PublisherUserRole.MarketingReviewer, user=user_4
)
factories.CourseUserRoleFactory(
course=self.course, role=PublisherUserRole.PartnerCoordinator, user=user_5
course=self.course, role=PublisherUserRole.ProjectCoordinator, user=user_5
)
self.create_comment(content_object=self.course_run)
self.assertEqual(len(mail.outbox), 1)
......
......@@ -21,7 +21,7 @@
{% trans "Institution" %}
</th>
<th role="button">
{% trans "Partner Coordinator" %}
{% trans "Project Coordinator" %}
</th>
<th role="button">
{% trans "Runs" %}
......@@ -45,7 +45,7 @@
{% if course.organizations.first %}{{ course.organizations.first.name }}{% endif %}
</td>
<td>
{{ course.partner_coordinator.full_name }}
{{ course.project_coordinator.full_name }}
</td>
<td>
{{ course.publisher_course_runs.count }}
......
......@@ -3,9 +3,9 @@
{% block body %}
<!-- Message Body -->
<p>
{# Translators: partner_coordinator_name is a member name. #}
{# Translators: project_coordinator_name is a member name. #}
{% blocktrans trimmed %}
Dear {{ partner_coordinator_name }},
Dear {{ project_coordinator_name }},
{% endblocktrans %}
<p>
<p>
......
{% load i18n %}
{% trans "Dear" %} {{ partner_coordinator_name }},
{% trans "Dear" %} {{ project_coordinator_name }},
{% blocktrans trimmed %}
{{ course_team_name }} created the {{ course_title }} : {{ dashboard_url }} course in Publisher on {{ date }} at {{ time }}.
......
......@@ -42,7 +42,7 @@
{% comment %}Translators: It's closing of mail.{% endcomment %}
{% trans "Thanks," %}<br>
{{ partner_coordinator_name }}
{{ project_coordinator_name }}
{% blocktrans trimmed %}
......
......@@ -9,7 +9,7 @@
{% endblocktrans %}
{% trans "Thanks," %}
{{ partner_coordinator_name }}
{{ project_coordinator_name }}
{% blocktrans trimmed %}
Note: This email address is unable to receive replies. For questions or comments, contact {{ contact_us_email }}.
......
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