Commit a297c8e0 by Waheed Ahmed

Added owner_role_modified field in state models.

ECOM-7150
parent 4936ed72
...@@ -445,6 +445,8 @@ class ChangeCourseStateViewTests(TestCase): ...@@ -445,6 +445,8 @@ class ChangeCourseStateViewTests(TestCase):
course=self.course, role=PublisherUserRole.MarketingReviewer, user=marketing_user course=self.course, role=PublisherUserRole.MarketingReviewer, user=marketing_user
) )
old_owner_role_modified = self.course_state.owner_role_modified
response = self.client.patch( response = self.client.patch(
self.change_state_url, self.change_state_url,
data=json.dumps({'name': CourseStateChoices.Review}), data=json.dumps({'name': CourseStateChoices.Review}),
...@@ -457,6 +459,7 @@ class ChangeCourseStateViewTests(TestCase): ...@@ -457,6 +459,7 @@ class ChangeCourseStateViewTests(TestCase):
self.assertEqual(self.course_state.name, CourseStateChoices.Review) self.assertEqual(self.course_state.name, CourseStateChoices.Review)
self.assertEqual(self.course_state.owner_role, PublisherUserRole.MarketingReviewer) self.assertEqual(self.course_state.owner_role, PublisherUserRole.MarketingReviewer)
self.assertGreater(self.course_state.owner_role_modified, old_owner_role_modified)
self._assert_email_sent(marketing_user) self._assert_email_sent(marketing_user)
......
# -*- coding: utf-8 -*-
# Generated by Django 1.9.12 on 2017-02-16 09:46
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('publisher', '0035_publisheruser'),
]
operations = [
migrations.AddField(
model_name='courserunstate',
name='owner_role_modified',
field=models.DateTimeField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='coursestate',
name='owner_role_modified',
field=models.DateTimeField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='historicalcourserunstate',
name='owner_role_modified',
field=models.DateTimeField(blank=True, editable=False, null=True),
),
migrations.AddField(
model_name='historicalcoursestate',
name='owner_role_modified',
field=models.DateTimeField(blank=True, editable=False, null=True),
),
]
...@@ -7,6 +7,7 @@ from django.core.urlresolvers import reverse ...@@ -7,6 +7,7 @@ from django.core.urlresolvers import reverse
from django.db import models from django.db import models
from django.db.models.signals import pre_save from django.db.models.signals import pre_save
from django.dispatch import receiver from django.dispatch import receiver
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django_extensions.db.models import TimeStampedModel from django_extensions.db.models import TimeStampedModel
from django_fsm import FSMField, transition from django_fsm import FSMField, transition
...@@ -495,6 +496,7 @@ class CourseState(TimeStampedModel, ChangedByMixin): ...@@ -495,6 +496,7 @@ class CourseState(TimeStampedModel, ChangedByMixin):
approved_by_role = models.CharField(blank=True, null=True, max_length=63, choices=PublisherUserRole.choices) approved_by_role = models.CharField(blank=True, null=True, max_length=63, choices=PublisherUserRole.choices)
owner_role = models.CharField(max_length=63, choices=PublisherUserRole.choices) owner_role = models.CharField(max_length=63, choices=PublisherUserRole.choices)
course = models.OneToOneField(Course, related_name='course_state') course = models.OneToOneField(Course, related_name='course_state')
owner_role_modified = models.DateTimeField(auto_now_add=True, null=True, blank=True)
history = HistoricalRecords() history = HistoricalRecords()
...@@ -539,8 +541,11 @@ class CourseState(TimeStampedModel, ChangedByMixin): ...@@ -539,8 +541,11 @@ class CourseState(TimeStampedModel, ChangedByMixin):
user_role = self.course.course_user_roles.get(user=user) user_role = self.course.course_user_roles.get(user=user)
if user_role.role == PublisherUserRole.MarketingReviewer: if user_role.role == PublisherUserRole.MarketingReviewer:
self.owner_role = PublisherUserRole.CourseTeam self.owner_role = PublisherUserRole.CourseTeam
self.owner_role_modified = timezone.now()
elif user_role.role == PublisherUserRole.CourseTeam: elif user_role.role == PublisherUserRole.CourseTeam:
self.owner_role = PublisherUserRole.MarketingReviewer self.owner_role = PublisherUserRole.MarketingReviewer
self.owner_role_modified = timezone.now()
self.review() self.review()
if waffle.switch_is_active('enable_publisher_email_notifications'): if waffle.switch_is_active('enable_publisher_email_notifications'):
...@@ -559,6 +564,7 @@ class CourseRunState(TimeStampedModel, ChangedByMixin): ...@@ -559,6 +564,7 @@ class CourseRunState(TimeStampedModel, ChangedByMixin):
approved_by_role = models.CharField(blank=True, null=True, max_length=63, choices=PublisherUserRole.choices) approved_by_role = models.CharField(blank=True, null=True, max_length=63, choices=PublisherUserRole.choices)
owner_role = models.CharField(max_length=63, choices=PublisherUserRole.choices) owner_role = models.CharField(max_length=63, choices=PublisherUserRole.choices)
course_run = models.OneToOneField(CourseRun, related_name='course_run_state') course_run = models.OneToOneField(CourseRun, related_name='course_run_state')
owner_role_modified = models.DateTimeField(auto_now_add=True, null=True, blank=True)
history = HistoricalRecords() history = HistoricalRecords()
......
...@@ -399,7 +399,7 @@ class CourseDetailView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMixi ...@@ -399,7 +399,7 @@ class CourseDetailView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMixi
} }
if course_state.owner_role == course_role.role: if course_state.owner_role == course_role.role:
role_widget['ownership'] = timezone.now() - course_state.modified role_widget['ownership'] = timezone.now() - course_state.owner_role_modified
if user == course_role.user: if user == course_role.user:
role_widget['state_button'] = STATE_BUTTONS.get(course_state.name) role_widget['state_button'] = STATE_BUTTONS.get(course_state.name)
......
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