Commit bed830c0 by Awais

Adding UserAttribute table

Adding migration.
parent 0dca3588
from django.contrib import admin
from course_discovery.apps.publisher.models import Course, CourseRun, Seat, State
from course_discovery.apps.publisher.models import Course, CourseRun, Seat, State, UserAttributes
admin.site.register(Course)
admin.site.register(CourseRun)
admin.site.register(Seat)
admin.site.register(State)
admin.site.register(UserAttributes)
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import django_extensions.db.fields
from django.conf import settings
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('publisher', '0010_auto_20161006_1151'),
]
operations = [
migrations.CreateModel(
name='UserAttributes',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)),
('created', django_extensions.db.fields.CreationDateTimeField(verbose_name='created', auto_now_add=True)),
('modified', django_extensions.db.fields.ModificationDateTimeField(auto_now=True, verbose_name='modified')),
('enable_email_notification', models.BooleanField(default=True)),
('user', models.OneToOneField(to=settings.AUTH_USER_MODEL, related_name='attributes')),
],
options={
'verbose_name_plural': 'UserAttributes',
},
),
]
......@@ -321,3 +321,17 @@ def create_workflow_state(course_run):
state = State()
state.save()
course_run.state = state
class UserAttributes(TimeStampedModel):
""" Record additional metadata about a user. """
user = models.OneToOneField(User, related_name='attributes')
enable_email_notification = models.BooleanField(default=True)
def __str__(self):
return '{user}: {email_notification}'.format(
user=self.user, email_notification=self.enable_email_notification
)
class Meta:
verbose_name_plural = 'UserAttributes'
......@@ -11,7 +11,7 @@ from course_discovery.apps.core.tests.factories import UserFactory
from course_discovery.apps.course_metadata.choices import CourseRunPacing
from course_discovery.apps.course_metadata.tests import factories
from course_discovery.apps.ietf_language_tags.models import LanguageTag
from course_discovery.apps.publisher.models import Course, CourseRun, Seat, State
from course_discovery.apps.publisher.models import Course, CourseRun, Seat, State, UserAttributes
class StateFactory(factory.DjangoModelFactory):
......@@ -77,3 +77,10 @@ class GroupFactory(factory.DjangoModelFactory):
class Meta:
model = Group
class UserAttributeFactory(factory.DjangoModelFactory):
user = factory.SubFactory(UserFactory)
class Meta:
model = UserAttributes
......@@ -129,3 +129,22 @@ class StateTests(TestCase):
str(self.state),
self.state.get_name_display()
)
class UserAttributeTests(TestCase):
""" Tests for the publisher `UserAttribute` model. """
def setUp(self):
super(UserAttributeTests, self).setUp()
self.user_attr = factories.UserAttributeFactory()
def test_str(self):
""" Verify casting an instance to a string returns a string containing the user name and
current enable status. """
self.assertEqual(
str(self.user_attr),
'{user}: {enable_email_notification}'.format(
user=self.user_attr.user,
enable_email_notification=self.user_attr.enable_email_notification
)
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment