ECOM-1494 removing code from models.
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
"""
|
||||
Reverification admin
|
||||
"""
|
||||
|
||||
from ratelimitbackend import admin
|
||||
from reverification.models import MidcourseReverificationWindow
|
||||
|
||||
admin.site.register(MidcourseReverificationWindow)
|
||||
@@ -10,8 +10,10 @@ from util.validate_on_save import ValidateOnSaveMixin
|
||||
from xmodule_django.models import CourseKeyField
|
||||
|
||||
|
||||
class MidcourseReverificationWindow(ValidateOnSaveMixin, models.Model):
|
||||
class MidcourseReverificationWindow(ValidateOnSaveMixin, models.Model): # TODO (ECOM-1494): Delete this model.
|
||||
"""
|
||||
This model has been deprecated and will be removed in a future release.
|
||||
|
||||
Defines the start and end times for midcourse reverification for a particular course.
|
||||
|
||||
There can be many MidcourseReverificationWindows per course, but they cannot have
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
"""
|
||||
verify_student factories
|
||||
"""
|
||||
from reverification.models import MidcourseReverificationWindow
|
||||
from factory.django import DjangoModelFactory
|
||||
import pytz
|
||||
from datetime import timedelta, datetime
|
||||
from opaque_keys.edx.locations import SlashSeparatedCourseKey
|
||||
|
||||
|
||||
# Factories are self documenting
|
||||
# pylint: disable=missing-docstring
|
||||
class MidcourseReverificationWindowFactory(DjangoModelFactory):
|
||||
""" Creates a generic MidcourseReverificationWindow. """
|
||||
FACTORY_FOR = MidcourseReverificationWindow
|
||||
|
||||
course_id = SlashSeparatedCourseKey.from_deprecated_string(u'MITx/999/Robot_Super_Course')
|
||||
# By default this factory creates a window that is currently open
|
||||
start_date = datetime.now(pytz.UTC) - timedelta(days=100)
|
||||
end_date = datetime.now(pytz.UTC) + timedelta(days=100)
|
||||
@@ -1,71 +0,0 @@
|
||||
"""
|
||||
Tests for Reverification models
|
||||
"""
|
||||
from datetime import timedelta, datetime
|
||||
import pytz
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from reverification.models import MidcourseReverificationWindow
|
||||
from reverification.tests.factories import MidcourseReverificationWindowFactory
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
|
||||
|
||||
class TestMidcourseReverificationWindow(ModuleStoreTestCase):
|
||||
""" Tests for MidcourseReverificationWindow objects """
|
||||
|
||||
def setUp(self, **kwargs):
|
||||
super(TestMidcourseReverificationWindow, self).setUp()
|
||||
self.course_id = CourseFactory.create().id
|
||||
|
||||
def test_window_open_for_course(self):
|
||||
# Should return False if no windows exist for a course
|
||||
self.assertFalse(MidcourseReverificationWindow.window_open_for_course(self.course_id))
|
||||
|
||||
# Should return False if a window exists, but it's not in the current timeframe
|
||||
MidcourseReverificationWindowFactory(
|
||||
course_id=self.course_id,
|
||||
start_date=datetime.now(pytz.utc) - timedelta(days=10),
|
||||
end_date=datetime.now(pytz.utc) - timedelta(days=5)
|
||||
)
|
||||
self.assertFalse(MidcourseReverificationWindow.window_open_for_course(self.course_id))
|
||||
|
||||
# Should return True if a non-expired window exists
|
||||
MidcourseReverificationWindowFactory(
|
||||
course_id=self.course_id,
|
||||
start_date=datetime.now(pytz.utc) - timedelta(days=3),
|
||||
end_date=datetime.now(pytz.utc) + timedelta(days=3)
|
||||
)
|
||||
self.assertTrue(MidcourseReverificationWindow.window_open_for_course(self.course_id))
|
||||
|
||||
def test_get_window(self):
|
||||
# if no window exists, returns None
|
||||
self.assertIsNone(MidcourseReverificationWindow.get_window(self.course_id, datetime.now(pytz.utc)))
|
||||
|
||||
# we should get the expected window otherwise
|
||||
window_valid = MidcourseReverificationWindowFactory(
|
||||
course_id=self.course_id,
|
||||
start_date=datetime.now(pytz.utc) - timedelta(days=3),
|
||||
end_date=datetime.now(pytz.utc) + timedelta(days=3)
|
||||
)
|
||||
self.assertEquals(
|
||||
window_valid,
|
||||
MidcourseReverificationWindow.get_window(self.course_id, datetime.now(pytz.utc))
|
||||
)
|
||||
|
||||
def test_no_overlapping_windows(self):
|
||||
window_valid = MidcourseReverificationWindow(
|
||||
course_id=self.course_id,
|
||||
start_date=datetime.now(pytz.utc) - timedelta(days=3),
|
||||
end_date=datetime.now(pytz.utc) + timedelta(days=3)
|
||||
)
|
||||
window_valid.save()
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
window_invalid = MidcourseReverificationWindow(
|
||||
course_id=self.course_id,
|
||||
start_date=datetime.now(pytz.utc) - timedelta(days=2),
|
||||
end_date=datetime.now(pytz.utc) + timedelta(days=4)
|
||||
)
|
||||
window_invalid.save()
|
||||
@@ -7,7 +7,6 @@ from mock import patch
|
||||
from pytz import UTC
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.conf import settings
|
||||
from reverification.tests.factories import MidcourseReverificationWindowFactory
|
||||
|
||||
from student.helpers import (
|
||||
VERIFY_STATUS_NEED_TO_VERIFY,
|
||||
@@ -260,13 +259,11 @@ class TestCourseVerificationStatus(UrlResetMixin, ModuleStoreTestCase):
|
||||
mode="verified"
|
||||
)
|
||||
|
||||
window = MidcourseReverificationWindowFactory(course_id=course2.id)
|
||||
# The student has an approved verification
|
||||
attempt2 = SoftwareSecurePhotoVerification.objects.create(user=self.user)
|
||||
attempt2.mark_ready()
|
||||
attempt2.submit()
|
||||
attempt2.approve()
|
||||
attempt2.window = window
|
||||
attempt2.save()
|
||||
|
||||
# Mark the attemp2 as approved so its date will appear on dasboard.
|
||||
|
||||
@@ -217,10 +217,6 @@ def reverification_info(course_enrollment_pairs, user, statuses):
|
||||
dict["must_reverify"] = [some information]
|
||||
"""
|
||||
reverifications = defaultdict(list)
|
||||
for (course, enrollment) in course_enrollment_pairs:
|
||||
info = single_course_reverification_info(user, course, enrollment)
|
||||
if info:
|
||||
reverifications[info.status].append(info)
|
||||
|
||||
# Sort the data by the reverification_end_date
|
||||
for status in statuses:
|
||||
@@ -229,34 +225,6 @@ def reverification_info(course_enrollment_pairs, user, statuses):
|
||||
return reverifications
|
||||
|
||||
|
||||
def single_course_reverification_info(user, course, enrollment): # pylint: disable=invalid-name
|
||||
"""Returns midcourse reverification-related information for user with enrollment in course.
|
||||
|
||||
If a course has an open re-verification window, and that user has a verified enrollment in
|
||||
the course, we return a tuple with relevant information. Returns None if there is no info..
|
||||
|
||||
Args:
|
||||
user (User): the user we want to get information for
|
||||
course (Course): the course in which the student is enrolled
|
||||
enrollment (CourseEnrollment): the object representing the type of enrollment user has in course
|
||||
|
||||
Returns:
|
||||
ReverifyInfo: (course_id, course_name, course_number, date, status)
|
||||
OR, None: None if there is no re-verification info for this enrollment
|
||||
"""
|
||||
window = MidcourseReverificationWindow.get_window(course.id, datetime.datetime.now(UTC))
|
||||
|
||||
# If there's no window OR the user is not verified, we don't get reverification info
|
||||
if (not window) or (enrollment.mode != "verified"):
|
||||
return None
|
||||
return ReverifyInfo(
|
||||
course.id, course.display_name, course.number,
|
||||
window.end_date.strftime('%B %d, %Y %X %p'),
|
||||
SoftwareSecurePhotoVerification.user_status(user, window)[0],
|
||||
SoftwareSecurePhotoVerification.display_status(user, window),
|
||||
)
|
||||
|
||||
|
||||
def get_course_enrollment_pairs(user, course_org_filter, org_filter_out_set):
|
||||
"""
|
||||
Get the relevant set of (Course, CourseEnrollment) pairs to be displayed on
|
||||
|
||||
Reference in New Issue
Block a user