make userorgtag deletable

This commit is contained in:
Sanford Student
2018-04-20 15:53:04 -04:00
parent e8201c60f4
commit e5a0efbe7b
2 changed files with 27 additions and 2 deletions

View File

@@ -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.

View File

@@ -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."""