make userorgtag deletable
This commit is contained in:
@@ -8,6 +8,7 @@ from django.db.models.signals import post_delete, post_save, pre_delete, pre_sav
|
||||
from django.dispatch import receiver
|
||||
from model_utils.models import TimeStampedModel
|
||||
from opaque_keys.edx.django.models import CourseKeyField
|
||||
from openedx.core.djangolib.model_mixins import DeletableByUserValue
|
||||
|
||||
# Currently, the "student" app is responsible for
|
||||
# accounts, profiles, enrollments, and the student dashboard.
|
||||
@@ -121,7 +122,7 @@ class UserCourseTag(models.Model):
|
||||
unique_together = ("user", "course_id", "key")
|
||||
|
||||
|
||||
class UserOrgTag(TimeStampedModel):
|
||||
class UserOrgTag(TimeStampedModel, DeletableByUserValue): # pylint: disable=model-missing-unicode
|
||||
"""
|
||||
Per-Organization user tags.
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ from xmodule.modulestore.tests.factories import CourseFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
|
||||
from ..tests.factories import UserPreferenceFactory, UserCourseTagFactory, UserOrgTagFactory
|
||||
from ..models import UserPreference
|
||||
from ..models import UserPreference, UserOrgTag
|
||||
from ..preferences.api import set_user_preference
|
||||
|
||||
|
||||
@@ -77,6 +77,30 @@ class UserPreferenceModelTest(ModuleStoreTestCase):
|
||||
self.assertEquals(tag.value, "barfoo")
|
||||
self.assertNotEqual(original_modified, tag.modified)
|
||||
|
||||
def test_retire_user_org_tags_by_user_value(self):
|
||||
"""Create org specific user tags and confirm all properties are set """
|
||||
user = UserFactory.create()
|
||||
course = CourseFactory.create()
|
||||
UserOrgTagFactory.create(user=user, org=course.id.org, key="testkey", value="foobar")
|
||||
UserOrgTagFactory.create(user=user, org=course.id.org + "x", key="testkey", value="foobar")
|
||||
self.assertEqual(len(UserOrgTag.objects.filter(user_id=user.id)), 2)
|
||||
# Delete the tags by user value. Ensure the rows no longer exist.
|
||||
UserOrgTag.delete_by_user_value(user.id, "user_id")
|
||||
|
||||
self.assertEqual(len(UserOrgTag.objects.filter(user_id=user.id)), 0)
|
||||
|
||||
def test_retire_user_org_tags_only_deletes_user(self):
|
||||
"""Create org specific user tags and confirm all properties are set """
|
||||
user = UserFactory.create()
|
||||
other_user = UserFactory.create()
|
||||
course = CourseFactory.create()
|
||||
UserOrgTagFactory.create(user=user, org=course.id.org, key="testkey", value="foobar")
|
||||
UserOrgTagFactory.create(user=other_user, org=course.id.org, key="testkey", value="foobar")
|
||||
# Delete the tags by user value. Ensure the other user's row is still present.
|
||||
UserOrgTag.delete_by_user_value(user.id, "user_id")
|
||||
|
||||
self.assertEqual(len(UserOrgTag.objects.filter(user_id=other_user.id)), 1)
|
||||
|
||||
def test_get_value(self):
|
||||
"""Verifies the behavior of get_value."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user