Skip to content
This repository has been archived by the owner on Feb 27, 2024. It is now read-only.

Commit

Permalink
Merge pull request #10 from edx-solutions/aamishbaloch/YONK-868
Browse files Browse the repository at this point in the history
YONK-868: Course can have a single language only
  • Loading branch information
aamishbaloch committed Jan 31, 2018
2 parents cc5b911 + 806e90b commit b3b9a4a
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 69 deletions.
18 changes: 18 additions & 0 deletions course_metadata/migrations/0003_remove_coursesetting_languages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('course_metadata', '0002_auto_20180105_0836'),
]

operations = [
migrations.RemoveField(
model_name='coursesetting',
name='languages',
),
]
13 changes: 1 addition & 12 deletions course_metadata/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"""
Models for course_metadata app
"""
import ast
from django.db import models

from model_utils.models import TimeStampedModel
Expand Down Expand Up @@ -49,14 +48,4 @@ class CourseSetting(TimeStampedModel):
"""
This model have custom course settings.
"""
id = CourseKeyField(primary_key=True, max_length=255)
languages = models.TextField(
blank=True,
help_text="A comma-separated list of language codes to release to the public."
)

@property
def languages_list(self):
if not self.languages:
return []
return ast.literal_eval(self.languages)
id = CourseKeyField(primary_key=True, max_length=255)
19 changes: 0 additions & 19 deletions course_metadata/serializers.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,10 @@
import ast

from rest_framework import serializers
from openedx.core.lib.api.serializers import CourseKeyField
from course_metadata.models import CourseSetting


class StringListField(serializers.ListField):
child = serializers.CharField(max_length=255)

def to_representation(self, data):
"""
Parse a string into a python list. Converts empty string to empty list.
If data is already a list then no operation is performed on that data.
"""
if not data:
return []

if isinstance(data, basestring):
data = ast.literal_eval(data)
return data


class CourseSettingSerializer(serializers.ModelSerializer):
id = CourseKeyField(required=False)
languages = StringListField()

class Meta:
model = CourseSetting
38 changes: 2 additions & 36 deletions course_metadata/tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,44 +91,10 @@ def setUp(self):

self.course = CourseFactory.create()
self.course_settings_uri = reverse('additional-course-settings', kwargs={'course_id': unicode(self.course.id)})
self.languages = ["it", "de-at", "es", "pt-br"]

def test_course_settings_get_with_no_initial_language(self):
def test_course_settings_get(self):
"""
Test for getting settings with no initial language
Test for getting settings
"""
response = self.do_get(self.course_settings_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['languages'], [])

def test_course_settings_languages(self):
"""
Test for setting/getting course languages from course settings
"""
data = {"languages": self.languages}
response = self.do_put(self.course_settings_uri, data)
self.assertEqual(response.status_code, 200)

response = self.do_get(self.course_settings_uri)
self.assertEqual(response.status_code, 200)
for language in response.data['languages']:
self.assertIn(language, self.languages)

def test_course_settings_update_languages(self):
"""
Test for updating course languages in course settings
"""
data = {"languages": self.languages}
response = self.do_put(self.course_settings_uri, data)

self.assertEqual(response.status_code, 200)
for language in response.data['languages']:
self.assertIn(language, self.languages)

updated_languages = ["it", "de-at", "es"]
data = {"languages": updated_languages}
response = self.do_put(self.course_settings_uri, data)

self.assertEqual(response.status_code, 200)
for language in response.data['languages']:
self.assertIn(language, self.languages)
1 change: 0 additions & 1 deletion course_metadata/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ class CourseSettingView(SecureRetrieveUpdateAPIView):
**POST**
-id: course id
-langauges: A comma-separated list of language codes. Example: ['it', 'de-at', 'es', 'pt-br']
**Response Values**
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

setup(
name='course-edx-platform-extensions',
version='1.0.7',
version='1.0.8',
description='Course metadata management extension for edX platform',
long_description=open('README.rst').read(),
author='edX',
Expand Down

0 comments on commit b3b9a4a

Please sign in to comment.