Commit 6db1f6a6 by Diana Huang

Add new column to CourseMode table for currencies

parent 4946fbcd
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding field 'CourseMode.currency'
db.add_column('course_modes_coursemode', 'currency',
self.gf('django.db.models.fields.CharField')(default='usd', max_length=8),
keep_default=False)
def backwards(self, orm):
# Deleting field 'CourseMode.currency'
db.delete_column('course_modes_coursemode', 'currency')
models = {
'course_modes.coursemode': {
'Meta': {'object_name': 'CourseMode'},
'course_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
'currency': ('django.db.models.fields.CharField', [], {'default': "'usd'", 'max_length': '8'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'min_price': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'mode_display_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'mode_slug': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'suggested_prices': ('django.db.models.fields.CommaSeparatedIntegerField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
}
}
complete_apps = ['course_modes']
\ No newline at end of file
...@@ -5,7 +5,7 @@ from django.db import models ...@@ -5,7 +5,7 @@ from django.db import models
from collections import namedtuple from collections import namedtuple
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
Mode = namedtuple('Mode', ['slug', 'name', 'min_price', 'suggested_prices']) Mode = namedtuple('Mode', ['slug', 'name', 'min_price', 'suggested_prices', 'currency'])
class CourseMode(models.Model): class CourseMode(models.Model):
...@@ -29,7 +29,10 @@ class CourseMode(models.Model): ...@@ -29,7 +29,10 @@ class CourseMode(models.Model):
# the suggested prices for this mode # the suggested prices for this mode
suggested_prices = models.CommaSeparatedIntegerField(max_length=255, blank=True, default='') suggested_prices = models.CommaSeparatedIntegerField(max_length=255, blank=True, default='')
DEFAULT_MODE = Mode('honor', _('Honor Code Certificate'), 0, '') # the currency these prices are in, using lower case ISO currency codes
currency = models.CharField(default="usd", max_length=8)
DEFAULT_MODE = Mode('honor', _('Honor Code Certificate'), 0, '', 'usd')
@classmethod @classmethod
def modes_for_course(cls, course_id): def modes_for_course(cls, course_id):
...@@ -39,7 +42,7 @@ class CourseMode(models.Model): ...@@ -39,7 +42,7 @@ class CourseMode(models.Model):
If no modes have been set in the table, returns the default mode If no modes have been set in the table, returns the default mode
""" """
found_course_modes = cls.objects.filter(course_id=course_id) found_course_modes = cls.objects.filter(course_id=course_id)
modes = ([Mode(mode.mode_slug, mode.mode_display_name, mode.min_price, mode.suggested_prices) modes = ([Mode(mode.mode_slug, mode.mode_display_name, mode.min_price, mode.suggested_prices, mode.currency)
for mode in found_course_modes]) for mode in found_course_modes])
if not modes: if not modes:
modes = [cls.DEFAULT_MODE] modes = [cls.DEFAULT_MODE]
......
...@@ -18,7 +18,7 @@ class CourseModeModelTest(TestCase): ...@@ -18,7 +18,7 @@ class CourseModeModelTest(TestCase):
self.course_id = 'TestCourse' self.course_id = 'TestCourse'
CourseMode.objects.all().delete() CourseMode.objects.all().delete()
def create_mode(self, mode_slug, mode_name, min_price=0, suggested_prices=''): def create_mode(self, mode_slug, mode_name, min_price=0, suggested_prices='', currency='usd'):
""" """
Create a new course mode Create a new course mode
""" """
...@@ -27,7 +27,8 @@ class CourseModeModelTest(TestCase): ...@@ -27,7 +27,8 @@ class CourseModeModelTest(TestCase):
mode_display_name=mode_name, mode_display_name=mode_name,
mode_slug=mode_slug, mode_slug=mode_slug,
min_price=min_price, min_price=min_price,
suggested_prices=suggested_prices suggested_prices=suggested_prices,
currency=currency
) )
def test_modes_for_course_empty(self): def test_modes_for_course_empty(self):
...@@ -45,14 +46,14 @@ class CourseModeModelTest(TestCase): ...@@ -45,14 +46,14 @@ class CourseModeModelTest(TestCase):
self.create_mode('verified', 'Verified Certificate') self.create_mode('verified', 'Verified Certificate')
modes = CourseMode.modes_for_course(self.course_id) modes = CourseMode.modes_for_course(self.course_id)
self.assertEqual([Mode(u'verified', u'Verified Certificate', 0, '')], modes) self.assertEqual([Mode(u'verified', u'Verified Certificate', 0, '', 'usd')], modes)
def test_modes_for_course_multiple(self): def test_modes_for_course_multiple(self):
""" """
Finding the modes when there's multiple modes Finding the modes when there's multiple modes
""" """
mode1 = Mode(u'honor', u'Honor Code Certificate', 0, '') mode1 = Mode(u'honor', u'Honor Code Certificate', 0, '', 'usd')
mode2 = Mode(u'verified', u'Verified Certificate', 0, '') mode2 = Mode(u'verified', u'Verified Certificate', 0, '', 'usd')
set_modes = [mode1, mode2] set_modes = [mode1, mode2]
for mode in set_modes: for mode in set_modes:
self.create_mode(mode.slug, mode.name, mode.min_price, mode.suggested_prices) self.create_mode(mode.slug, mode.name, mode.min_price, mode.suggested_prices)
......
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