Skip to content

Commit 2d4da85

Browse files
authored
fix: removing enterprise-specific code from edx-platform (#180)
* fix: removing retirement code * fix: removing zoneInfo import * fix: quality fixes
1 parent 163f366 commit 2d4da85

2 files changed

Lines changed: 15 additions & 132 deletions

File tree

openedx/core/djangoapps/user_api/accounts/tests/test_retirement_views.py

Lines changed: 15 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,14 @@
88

99
import ddt
1010
import pytz
11-
from consent.models import DataSharingConsent
1211
from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user
1312
from django.contrib.sites.models import Site
14-
from django.conf import settings
1513
from django.core import mail
1614
from django.core.cache import cache
1715
from django.db import connection
1816
from django.test import TestCase
1917
from django.test.utils import CaptureQueriesContext
2018
from django.urls import reverse
21-
from enterprise.models import (
22-
EnterpriseCourseEnrollment,
23-
EnterpriseCustomer,
24-
EnterpriseCustomerUser,
25-
PendingEnterpriseCustomerUser
26-
)
2719
from opaque_keys.edx.keys import CourseKey
2820
from rest_framework import status
2921
from social_django.models import UserSocialAuth
@@ -67,7 +59,6 @@
6759
)
6860
from openedx.core.djangoapps.external_user_ids.models import ExternalIdType
6961
from openedx.core.djangoapps.oauth_dispatch.jwt import create_jwt_for_user
70-
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
7162
from openedx.core.djangoapps.user_api.accounts.views import AccountRetirementPartnerReportView
7263
from openedx.core.djangoapps.user_api.models import (
7364
RetirementState,
@@ -89,12 +80,6 @@
8980
setup_retirement_states
9081
)
9182

92-
# This is a temporary import path while we transition from integrated_channels to channel_integrations
93-
if getattr(settings, 'ENABLE_LEGACY_INTEGRATED_CHANNELS', True):
94-
from integrated_channels.sap_success_factors.models import SapSuccessFactorsLearnerDataTransmissionAudit
95-
else:
96-
from channel_integrations.sap_success_factors.models import SapSuccessFactorsLearnerDataTransmissionAudit
97-
9883

9984
def build_jwt_headers(user):
10085
"""
@@ -1396,33 +1381,6 @@ def setUp(self):
13961381
self.cache_key = UserProfile.country_cache_key_name(self.test_user.id)
13971382
cache.set(self.cache_key, 'Timor-leste')
13981383

1399-
# Enterprise model setup
1400-
self.course_id = 'course-v1:edX+DemoX.1+2T2017'
1401-
self.enterprise_customer = EnterpriseCustomer.objects.create(
1402-
name='test_enterprise_customer',
1403-
site=SiteFactory.create()
1404-
)
1405-
self.enterprise_user = EnterpriseCustomerUser.objects.create(
1406-
enterprise_customer=self.enterprise_customer,
1407-
user_id=self.test_user.id,
1408-
)
1409-
self.enterprise_enrollment = EnterpriseCourseEnrollment.objects.create(
1410-
enterprise_customer_user=self.enterprise_user,
1411-
course_id=self.course_id
1412-
)
1413-
self.pending_enterprise_user = PendingEnterpriseCustomerUser.objects.create(
1414-
enterprise_customer_id=self.enterprise_user.enterprise_customer_id,
1415-
user_email=self.test_user.email
1416-
)
1417-
self.sapsf_audit = SapSuccessFactorsLearnerDataTransmissionAudit.objects.create(
1418-
sapsf_user_id=self.test_user.id,
1419-
enterprise_course_enrollment_id=self.enterprise_enrollment.id,
1420-
)
1421-
self.consent = DataSharingConsent.objects.create(
1422-
username=self.test_user.username,
1423-
enterprise_customer=self.enterprise_customer,
1424-
)
1425-
14261384
# Entitlement model setup
14271385
self.entitlement = CourseEntitlementFactory.create(user=self.test_user)
14281386
self.entitlement_support_detail = CourseEntitlementSupportDetail.objects.create(
@@ -1455,46 +1413,13 @@ def setUp(self):
14551413
self.headers['content_type'] = "application/json"
14561414
self.url = reverse('accounts_retire')
14571415

1458-
def _data_sharing_consent_assertions(self):
1459-
"""
1460-
Helper method for asserting that ``DataSharingConsent`` objects are retired.
1461-
"""
1462-
self.consent.refresh_from_db()
1463-
assert self.retired_username == self.consent.username
1464-
test_users_data_sharing_consent = DataSharingConsent.objects.filter(
1465-
username=self.original_username
1466-
)
1467-
assert not test_users_data_sharing_consent.exists()
1468-
14691416
def _entitlement_support_detail_assertions(self):
14701417
"""
14711418
Helper method for asserting that ``CourseEntitleSupportDetail`` objects are retired.
14721419
"""
14731420
self.entitlement_support_detail.refresh_from_db()
14741421
assert '' == self.entitlement_support_detail.comments
14751422

1476-
def _pending_enterprise_customer_user_assertions(self):
1477-
"""
1478-
Helper method for asserting that ``PendingEnterpriseCustomerUser`` objects are retired.
1479-
"""
1480-
self.pending_enterprise_user.refresh_from_db()
1481-
assert self.retired_email == self.pending_enterprise_user.user_email
1482-
pending_enterprise_users = PendingEnterpriseCustomerUser.objects.filter(
1483-
user_email=self.original_email
1484-
)
1485-
assert not pending_enterprise_users.exists()
1486-
1487-
def _sapsf_audit_assertions(self):
1488-
"""
1489-
Helper method for asserting that ``SapSuccessFactorsLearnerDataTransmissionAudit`` objects are retired.
1490-
"""
1491-
self.sapsf_audit.refresh_from_db()
1492-
assert '' == self.sapsf_audit.sapsf_user_id
1493-
audits_for_original_user_id = SapSuccessFactorsLearnerDataTransmissionAudit.objects.filter(
1494-
sapsf_user_id=self.test_user.id,
1495-
)
1496-
assert not audits_for_original_user_id.exists()
1497-
14981423
def post_and_assert_status(self, data, expected_status=status.HTTP_204_NO_CONTENT):
14991424
"""
15001425
Helper function for making a request to the retire subscriptions endpoint, and asserting the status.
@@ -1570,9 +1495,6 @@ def test_retire_user(self, mock_remove_profile_images, mock_get_profile_image_na
15701495

15711496
assert cache.get(self.cache_key) is None
15721497

1573-
self._data_sharing_consent_assertions()
1574-
self._sapsf_audit_assertions()
1575-
self._pending_enterprise_customer_user_assertions()
15761498
self._entitlement_support_detail_assertions()
15771499

15781500
assert not PendingEmailChange.objects.filter(user=self.test_user).exists()
@@ -1587,6 +1509,21 @@ def test_retire_user_twice_idempotent(self):
15871509
fake_completed_retirement(self.test_user)
15881510
self.post_and_assert_status(data)
15891511

1512+
@mock.patch('openedx.core.djangoapps.user_api.accounts.views.USER_RETIRE_LMS_CRITICAL')
1513+
def test_retirement_sends_critical_signal_with_retirement_data(self, mock_signal):
1514+
"""
1515+
USER_RETIRE_LMS_CRITICAL is sent with retired_username and retired_email kwargs.
1516+
"""
1517+
data = {'username': self.original_username}
1518+
self.post_and_assert_status(data)
1519+
1520+
mock_signal.send.assert_called_once_with(
1521+
sender=mock_signal.send.call_args[1]['sender'],
1522+
user=mock_signal.send.call_args[1]['user'],
1523+
retired_username=self.retired_username,
1524+
retired_email=self.retired_email,
1525+
)
1526+
15901527
def test_deletes_pii_from_user_profile(self):
15911528
for model_field, value_to_assign in USER_PROFILE_PII.items():
15921529
if value_to_assign == '':
@@ -1627,18 +1564,6 @@ def test_can_delete_user_profiles_country_cache(self):
16271564
AccountRetirementView.delete_users_country_cache(self.test_user)
16281565
assert cache.get(self.cache_key) is None
16291566

1630-
def test_can_retire_users_datasharingconsent(self):
1631-
AccountRetirementView.retire_users_data_sharing_consent(self.test_user.username, self.retired_username)
1632-
self._data_sharing_consent_assertions()
1633-
1634-
def test_can_retire_users_sap_success_factors_audits(self):
1635-
AccountRetirementView.retire_sapsf_data_transmission(self.test_user)
1636-
self._sapsf_audit_assertions()
1637-
1638-
def test_can_retire_user_from_pendingenterprisecustomeruser(self):
1639-
AccountRetirementView.retire_user_from_pending_enterprise_customer_user(self.test_user, self.retired_email)
1640-
self._pending_enterprise_customer_user_assertions()
1641-
16421567
def test_course_entitlement_support_detail_comments_are_retired(self):
16431568
AccountRetirementView.retire_entitlement_support_detail(self.test_user)
16441569
self._entitlement_support_detail_assertions()

openedx/core/djangoapps/user_api/accounts/views.py

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from functools import wraps
1111

1212
import pytz
13-
from consent.models import DataSharingConsent
1413
from django.apps import apps
1514
from django.conf import settings
1615
from django.contrib.auth import authenticate, get_user_model, logout
@@ -26,7 +25,6 @@
2625
from edx_django_utils.monitoring import record_exception
2726
from edx_rest_framework_extensions.auth.jwt.authentication import JwtAuthentication
2827
from edx_rest_framework_extensions.auth.session.authentication import SessionAuthenticationAllowInactiveUser
29-
from enterprise.models import EnterpriseCourseEnrollment, EnterpriseCustomerUser, PendingEnterpriseCustomerUser
3028
from rest_framework import permissions, status
3129
from rest_framework.authentication import SessionAuthentication
3230
from rest_framework.exceptions import UnsupportedMediaType
@@ -96,15 +94,6 @@
9694
from .signals import USER_RETIRE_LMS_CRITICAL, USER_RETIRE_LMS_MISC, USER_RETIRE_MAILINGS
9795
from .utils import create_retirement_request_and_deactivate_account, username_suffix_generator
9896

99-
# This is a temporary import path while we transition from integrated_channels to channel_integrations
100-
if getattr(settings, 'ENABLE_LEGACY_INTEGRATED_CHANNELS', True):
101-
from integrated_channels.degreed.models import DegreedLearnerDataTransmissionAudit
102-
from integrated_channels.sap_success_factors.models import SapSuccessFactorsLearnerDataTransmissionAudit
103-
else:
104-
from channel_integrations.degreed2.models import Degreed2LearnerDataTransmissionAudit \
105-
as DegreedLearnerDataTransmissionAudit
106-
from channel_integrations.sap_success_factors.models import SapSuccessFactorsLearnerDataTransmissionAudit
107-
10897
log = logging.getLogger(__name__)
10998

11099
USER_PROFILE_PII = {
@@ -1203,11 +1192,6 @@ def post(self, request):
12031192
# Retire user information from any certificate records associated with the learner
12041193
self.clear_pii_from_certificate_records(user)
12051194

1206-
# Retire data from Enterprise models
1207-
self.retire_users_data_sharing_consent(username, retired_username)
1208-
self.retire_sapsf_data_transmission(user)
1209-
self.retire_degreed_data_transmission(user)
1210-
self.retire_user_from_pending_enterprise_customer_user(user, retired_email)
12111195
self.retire_entitlement_support_detail(user)
12121196

12131197
# Retire misc. models that may contain PII of this user
@@ -1263,32 +1247,6 @@ def delete_users_country_cache(user):
12631247
cache_key = UserProfile.country_cache_key_name(user.id)
12641248
cache.delete(cache_key)
12651249

1266-
@staticmethod
1267-
def retire_users_data_sharing_consent(username, retired_username):
1268-
DataSharingConsent.objects.filter(username=username).update(username=retired_username)
1269-
1270-
@staticmethod
1271-
def retire_sapsf_data_transmission(user): # lint-amnesty, pylint: disable=missing-function-docstring
1272-
for ent_user in EnterpriseCustomerUser.objects.filter(user_id=user.id):
1273-
for enrollment in EnterpriseCourseEnrollment.objects.filter(enterprise_customer_user=ent_user):
1274-
audits = SapSuccessFactorsLearnerDataTransmissionAudit.objects.filter(
1275-
enterprise_course_enrollment_id=enrollment.id
1276-
)
1277-
audits.update(sapsf_user_id="")
1278-
1279-
@staticmethod
1280-
def retire_degreed_data_transmission(user): # lint-amnesty, pylint: disable=missing-function-docstring
1281-
for ent_user in EnterpriseCustomerUser.objects.filter(user_id=user.id):
1282-
for enrollment in EnterpriseCourseEnrollment.objects.filter(enterprise_customer_user=ent_user):
1283-
audits = DegreedLearnerDataTransmissionAudit.objects.filter(
1284-
enterprise_course_enrollment_id=enrollment.id
1285-
)
1286-
audits.update(degreed_user_email="")
1287-
1288-
@staticmethod
1289-
def retire_user_from_pending_enterprise_customer_user(user, retired_email):
1290-
PendingEnterpriseCustomerUser.objects.filter(user_email=user.email).update(user_email=retired_email)
1291-
12921250
@staticmethod
12931251
def retire_entitlement_support_detail(user):
12941252
"""

0 commit comments

Comments
 (0)