Skip to content

Commit ab9a5e3

Browse files
authored
fix: removing enterprise specific code from platform (#38117)
1 parent cd733fe commit ab9a5e3

7 files changed

Lines changed: 22 additions & 126 deletions

File tree

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

Lines changed: 15 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,12 @@
88

99
import ddt
1010
from zoneinfo import ZoneInfo
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
1413
from django.core import mail
1514
from django.core.cache import cache
1615
from django.test import TestCase
1716
from django.urls import reverse
18-
from enterprise.models import (
19-
EnterpriseCourseEnrollment,
20-
EnterpriseCustomer,
21-
EnterpriseCustomerUser,
22-
PendingEnterpriseCustomerUser
23-
)
24-
from integrated_channels.sap_success_factors.models import SapSuccessFactorsLearnerDataTransmissionAudit
2517
from opaque_keys.edx.keys import CourseKey
2618
from rest_framework import status
2719
from social_django.models import UserSocialAuth
@@ -65,7 +57,6 @@
6557
)
6658
from openedx.core.djangoapps.external_user_ids.models import ExternalIdType
6759
from openedx.core.djangoapps.oauth_dispatch.jwt import create_jwt_for_user
68-
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
6960
from openedx.core.djangoapps.user_api.accounts.views import AccountRetirementPartnerReportView
7061
from openedx.core.djangoapps.user_api.models import (
7162
RetirementState,
@@ -1289,33 +1280,6 @@ def setUp(self):
12891280
self.cache_key = UserProfile.country_cache_key_name(self.test_user.id)
12901281
cache.set(self.cache_key, 'Timor-leste')
12911282

1292-
# Enterprise model setup
1293-
self.course_id = 'course-v1:edX+DemoX.1+2T2017'
1294-
self.enterprise_customer = EnterpriseCustomer.objects.create(
1295-
name='test_enterprise_customer',
1296-
site=SiteFactory.create()
1297-
)
1298-
self.enterprise_user = EnterpriseCustomerUser.objects.create(
1299-
enterprise_customer=self.enterprise_customer,
1300-
user_id=self.test_user.id,
1301-
)
1302-
self.enterprise_enrollment = EnterpriseCourseEnrollment.objects.create(
1303-
enterprise_customer_user=self.enterprise_user,
1304-
course_id=self.course_id
1305-
)
1306-
self.pending_enterprise_user = PendingEnterpriseCustomerUser.objects.create(
1307-
enterprise_customer_id=self.enterprise_user.enterprise_customer_id,
1308-
user_email=self.test_user.email
1309-
)
1310-
self.sapsf_audit = SapSuccessFactorsLearnerDataTransmissionAudit.objects.create(
1311-
sapsf_user_id=self.test_user.id,
1312-
enterprise_course_enrollment_id=self.enterprise_enrollment.id,
1313-
)
1314-
self.consent = DataSharingConsent.objects.create(
1315-
username=self.test_user.username,
1316-
enterprise_customer=self.enterprise_customer,
1317-
)
1318-
13191283
# Entitlement model setup
13201284
self.entitlement = CourseEntitlementFactory.create(user=self.test_user)
13211285
self.entitlement_support_detail = CourseEntitlementSupportDetail.objects.create(
@@ -1348,46 +1312,13 @@ def setUp(self):
13481312
self.headers['content_type'] = "application/json"
13491313
self.url = reverse('accounts_retire')
13501314

1351-
def _data_sharing_consent_assertions(self):
1352-
"""
1353-
Helper method for asserting that ``DataSharingConsent`` objects are retired.
1354-
"""
1355-
self.consent.refresh_from_db()
1356-
assert self.retired_username == self.consent.username
1357-
test_users_data_sharing_consent = DataSharingConsent.objects.filter(
1358-
username=self.original_username
1359-
)
1360-
assert not test_users_data_sharing_consent.exists()
1361-
13621315
def _entitlement_support_detail_assertions(self):
13631316
"""
13641317
Helper method for asserting that ``CourseEntitleSupportDetail`` objects are retired.
13651318
"""
13661319
self.entitlement_support_detail.refresh_from_db()
13671320
assert '' == self.entitlement_support_detail.comments
13681321

1369-
def _pending_enterprise_customer_user_assertions(self):
1370-
"""
1371-
Helper method for asserting that ``PendingEnterpriseCustomerUser`` objects are retired.
1372-
"""
1373-
self.pending_enterprise_user.refresh_from_db()
1374-
assert self.retired_email == self.pending_enterprise_user.user_email
1375-
pending_enterprise_users = PendingEnterpriseCustomerUser.objects.filter(
1376-
user_email=self.original_email
1377-
)
1378-
assert not pending_enterprise_users.exists()
1379-
1380-
def _sapsf_audit_assertions(self):
1381-
"""
1382-
Helper method for asserting that ``SapSuccessFactorsLearnerDataTransmissionAudit`` objects are retired.
1383-
"""
1384-
self.sapsf_audit.refresh_from_db()
1385-
assert '' == self.sapsf_audit.sapsf_user_id
1386-
audits_for_original_user_id = SapSuccessFactorsLearnerDataTransmissionAudit.objects.filter(
1387-
sapsf_user_id=self.test_user.id,
1388-
)
1389-
assert not audits_for_original_user_id.exists()
1390-
13911322
def post_and_assert_status(self, data, expected_status=status.HTTP_204_NO_CONTENT):
13921323
"""
13931324
Helper function for making a request to the retire subscriptions endpoint, and asserting the status.
@@ -1463,9 +1394,6 @@ def test_retire_user(self, mock_remove_profile_images, mock_get_profile_image_na
14631394

14641395
assert cache.get(self.cache_key) is None
14651396

1466-
self._data_sharing_consent_assertions()
1467-
self._sapsf_audit_assertions()
1468-
self._pending_enterprise_customer_user_assertions()
14691397
self._entitlement_support_detail_assertions()
14701398

14711399
assert not PendingEmailChange.objects.filter(user=self.test_user).exists()
@@ -1480,6 +1408,21 @@ def test_retire_user_twice_idempotent(self):
14801408
fake_completed_retirement(self.test_user)
14811409
self.post_and_assert_status(data)
14821410

1411+
@mock.patch('openedx.core.djangoapps.user_api.accounts.views.USER_RETIRE_LMS_CRITICAL')
1412+
def test_retirement_sends_critical_signal_with_retirement_data(self, mock_signal):
1413+
"""
1414+
USER_RETIRE_LMS_CRITICAL is sent with retired_username and retired_email kwargs.
1415+
"""
1416+
data = {'username': self.original_username}
1417+
self.post_and_assert_status(data)
1418+
1419+
mock_signal.send.assert_called_once_with(
1420+
sender=mock_signal.send.call_args[1]['sender'],
1421+
user=mock_signal.send.call_args[1]['user'],
1422+
retired_username=self.retired_username,
1423+
retired_email=self.retired_email,
1424+
)
1425+
14831426
def test_deletes_pii_from_user_profile(self):
14841427
for model_field, value_to_assign in USER_PROFILE_PII.items():
14851428
if value_to_assign == '':
@@ -1520,18 +1463,6 @@ def test_can_delete_user_profiles_country_cache(self):
15201463
AccountRetirementView.delete_users_country_cache(self.test_user)
15211464
assert cache.get(self.cache_key) is None
15221465

1523-
def test_can_retire_users_datasharingconsent(self):
1524-
AccountRetirementView.retire_users_data_sharing_consent(self.test_user.username, self.retired_username)
1525-
self._data_sharing_consent_assertions()
1526-
1527-
def test_can_retire_users_sap_success_factors_audits(self):
1528-
AccountRetirementView.retire_sapsf_data_transmission(self.test_user)
1529-
self._sapsf_audit_assertions()
1530-
1531-
def test_can_retire_user_from_pendingenterprisecustomeruser(self):
1532-
AccountRetirementView.retire_user_from_pending_enterprise_customer_user(self.test_user, self.retired_email)
1533-
self._pending_enterprise_customer_user_assertions()
1534-
15351466
def test_course_entitlement_support_detail_comments_are_retired(self):
15361467
AccountRetirementView.retire_entitlement_support_detail(self.test_user)
15371468
self._entitlement_support_detail_assertions()

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

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

1212
from zoneinfo import ZoneInfo
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
@@ -25,9 +24,6 @@
2524
from edx_ace.recipient import Recipient
2625
from edx_rest_framework_extensions.auth.jwt.authentication import JwtAuthentication
2726
from edx_rest_framework_extensions.auth.session.authentication import SessionAuthenticationAllowInactiveUser
28-
from enterprise.models import EnterpriseCourseEnrollment, EnterpriseCustomerUser, PendingEnterpriseCustomerUser
29-
from integrated_channels.degreed.models import DegreedLearnerDataTransmissionAudit
30-
from integrated_channels.sap_success_factors.models import SapSuccessFactorsLearnerDataTransmissionAudit
3127
from rest_framework import permissions, status
3228
from rest_framework.authentication import SessionAuthentication
3329
from rest_framework.exceptions import UnsupportedMediaType
@@ -1154,11 +1150,6 @@ def post(self, request):
11541150
# Retire user information from any certificate records associated with the learner
11551151
self.clear_pii_from_certificate_records(user)
11561152

1157-
# Retire data from Enterprise models
1158-
self.retire_users_data_sharing_consent(username, retired_username)
1159-
self.retire_sapsf_data_transmission(user)
1160-
self.retire_degreed_data_transmission(user)
1161-
self.retire_user_from_pending_enterprise_customer_user(user, retired_email)
11621153
self.retire_entitlement_support_detail(user)
11631154

11641155
# Retire misc. models that may contain PII of this user
@@ -1214,32 +1205,6 @@ def delete_users_country_cache(user):
12141205
cache_key = UserProfile.country_cache_key_name(user.id)
12151206
cache.delete(cache_key)
12161207

1217-
@staticmethod
1218-
def retire_users_data_sharing_consent(username, retired_username):
1219-
DataSharingConsent.objects.filter(username=username).update(username=retired_username)
1220-
1221-
@staticmethod
1222-
def retire_sapsf_data_transmission(user): # lint-amnesty, pylint: disable=missing-function-docstring
1223-
for ent_user in EnterpriseCustomerUser.objects.filter(user_id=user.id):
1224-
for enrollment in EnterpriseCourseEnrollment.objects.filter(enterprise_customer_user=ent_user):
1225-
audits = SapSuccessFactorsLearnerDataTransmissionAudit.objects.filter(
1226-
enterprise_course_enrollment_id=enrollment.id
1227-
)
1228-
audits.update(sapsf_user_id="")
1229-
1230-
@staticmethod
1231-
def retire_degreed_data_transmission(user): # lint-amnesty, pylint: disable=missing-function-docstring
1232-
for ent_user in EnterpriseCustomerUser.objects.filter(user_id=user.id):
1233-
for enrollment in EnterpriseCourseEnrollment.objects.filter(enterprise_customer_user=ent_user):
1234-
audits = DegreedLearnerDataTransmissionAudit.objects.filter(
1235-
enterprise_course_enrollment_id=enrollment.id
1236-
)
1237-
audits.update(degreed_user_email="")
1238-
1239-
@staticmethod
1240-
def retire_user_from_pending_enterprise_customer_user(user, retired_email):
1241-
PendingEnterpriseCustomerUser.objects.filter(user_email=user.email).update(user_email=retired_email)
1242-
12431208
@staticmethod
12441209
def retire_entitlement_support_detail(user):
12451210
"""

requirements/constraints.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ django-stubs<6
4444
# The team that owns this package will manually bump this package rather than having it pulled in automatically.
4545
# This is to allow them to better control its deployment and to do it in a process that works better
4646
# for them.
47-
edx-enterprise==6.6.7
47+
edx-enterprise==6.6.8
4848

4949
# Date: 2023-07-26
5050
# Our legacy Sass code is incompatible with anything except this ancient libsass version.
@@ -54,14 +54,14 @@ edx-enterprise==6.6.7
5454
libsass==0.10.0
5555

5656
# Date: 2024-07-16
57-
# We need to upgrade the version of elasticsearch to atleast 7.15 before we can upgrade to Numpy 2.0.0
57+
# We need to upgrade the version of elasticsearch to at least 7.15 before we can upgrade to Numpy 2.0.0
5858
# Otherwise we see a failure while running the following command:
5959
# export DJANGO_SETTINGS_MODULE=cms.envs.test; python manage.py cms check_reserved_keywords --override_file db_keyword_overrides.yml --report_path reports/reserved_keywords --report_file cms_reserved_keyword_report.csv
6060
# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35126
6161
numpy<2.0.0
6262

6363
# Date: 2023-09-18
64-
# Library is still in active development. Minor verisons (0.x, 0.x+1) may have
64+
# Library is still in active development. Minor versions (0.x, 0.x+1) may have
6565
# breaking changes which openedx-core devs want to roll out manually. New patch versions
6666
# are OK to accept automatically.
6767
# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35269

requirements/edx/base.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ edx-drf-extensions==10.6.0
478478
# enterprise-integrated-channels
479479
# openedx-authz
480480
# openedx-core
481-
edx-enterprise==6.6.7
481+
edx-enterprise==6.6.8
482482
# via
483483
# -c requirements/constraints.txt
484484
# -r requirements/edx/kernel.in

requirements/edx/development.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ edx-drf-extensions==10.6.0
758758
# enterprise-integrated-channels
759759
# openedx-authz
760760
# openedx-core
761-
edx-enterprise==6.6.7
761+
edx-enterprise==6.6.8
762762
# via
763763
# -c requirements/constraints.txt
764764
# -r requirements/edx/doc.txt

requirements/edx/doc.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ edx-drf-extensions==10.6.0
569569
# enterprise-integrated-channels
570570
# openedx-authz
571571
# openedx-core
572-
edx-enterprise==6.6.7
572+
edx-enterprise==6.6.8
573573
# via
574574
# -c requirements/constraints.txt
575575
# -r requirements/edx/base.txt

requirements/edx/testing.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ edx-drf-extensions==10.6.0
589589
# enterprise-integrated-channels
590590
# openedx-authz
591591
# openedx-core
592-
edx-enterprise==6.6.7
592+
edx-enterprise==6.6.8
593593
# via
594594
# -c requirements/constraints.txt
595595
# -r requirements/edx/base.txt

0 commit comments

Comments
 (0)