diff --git a/edxval/migrations/0001_initial.py b/edxval/migrations/0001_initial.py index 07e515cd..5c0c9157 100644 --- a/edxval/migrations/0001_initial.py +++ b/edxval/migrations/0001_initial.py @@ -36,7 +36,7 @@ class Migration(migrations.Migration): name='Profile', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('profile_name', models.CharField(unique=True, max_length=50, validators=[django.core.validators.RegexValidator(regex=b'^[a-zA-Z0-9\\-_]*$', message=b'profile_name has invalid characters', code=b'invalid profile_name')])), + ('profile_name', models.CharField(unique=True, max_length=50, validators=[django.core.validators.RegexValidator(regex=u'^[a-zA-Z0-9\\-_]*$', message=u'profile_name has invalid characters', code=u'invalid profile_name')])), ], ), migrations.CreateModel( @@ -45,9 +45,9 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('created', models.DateTimeField(auto_now_add=True)), ('modified', models.DateTimeField(auto_now=True)), - ('fmt', models.CharField(db_index=True, max_length=20, choices=[(b'srt', b'SubRip'), (b'sjson', b'SRT JSON')])), + ('fmt', models.CharField(db_index=True, max_length=20, choices=[(u'srt', u'SubRip'), (u'sjson', u'SRT JSON')])), ('language', models.CharField(max_length=8, db_index=True)), - ('content', models.TextField(default=b'')), + ('content', models.TextField(default=u'')), ], ), migrations.CreateModel( @@ -55,7 +55,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('created', models.DateTimeField(auto_now_add=True)), - ('edx_video_id', models.CharField(unique=True, max_length=100, validators=[django.core.validators.RegexValidator(regex=b'^[a-zA-Z0-9\\-_]*$', message=b'edx_video_id has invalid characters', code=b'invalid edx_video_id')])), + ('edx_video_id', models.CharField(unique=True, max_length=100, validators=[django.core.validators.RegexValidator(regex=u'^[a-zA-Z0-9\\-_]*$', message=u'edx_video_id has invalid characters', code=u'invalid edx_video_id')])), ('client_video_id', models.CharField(db_index=True, max_length=255, blank=True)), ('duration', models.FloatField(validators=[django.core.validators.MinValueValidator(0)])), ('status', models.CharField(max_length=255, db_index=True)), diff --git a/edxval/migrations/0003_coursevideo_is_hidden.py b/edxval/migrations/0003_coursevideo_is_hidden.py index 2f757b00..45a6be02 100644 --- a/edxval/migrations/0003_coursevideo_is_hidden.py +++ b/edxval/migrations/0003_coursevideo_is_hidden.py @@ -15,6 +15,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='coursevideo', name='is_hidden', - field=models.BooleanField(default=False, help_text=b'Hide video for course.'), + field=models.BooleanField(default=False, help_text=u'Hide video for course.'), ), ] diff --git a/edxval/migrations/0006_auto_20171009_0725.py b/edxval/migrations/0006_auto_20171009_0725.py index df534640..e4145080 100644 --- a/edxval/migrations/0006_auto_20171009_0725.py +++ b/edxval/migrations/0006_auto_20171009_0725.py @@ -21,13 +21,13 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, verbose_name='created', editable=False)), ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, verbose_name='modified', editable=False)), - ('course_id', models.CharField(unique=True, max_length=255, verbose_name=b'Course ID')), - ('provider', models.CharField(max_length=20, verbose_name=b'Provider', choices=[(b'Custom', b'Custom'), (b'3PlayMedia', b'3PlayMedia'), (b'Cielo24', b'Cielo24')])), - ('cielo24_fidelity', models.CharField(blank=True, max_length=20, null=True, verbose_name=b'Cielo24 Fidelity', choices=[(b'MECHANICAL', b'Mechanical, 75% Accuracy'), (b'PREMIUM', b'Premium, 95% Accuracy'), (b'PROFESSIONAL', b'Professional, 99% Accuracy')])), - ('cielo24_turnaround', models.CharField(blank=True, max_length=20, null=True, verbose_name=b'Cielo24 Turnaround', choices=[(b'STANDARD', b'Standard, 48h'), (b'PRIORITY', b'Priority, 24h')])), - ('three_play_turnaround', models.CharField(blank=True, max_length=20, null=True, verbose_name=b'3PlayMedia Turnaround', choices=[(b'extended_service', b'10-Day/Extended'), (b'default', b'4-Day/Default'), (b'expedited_service', b'2-Day/Expedited'), (b'rush_service', b'24 hour/Rush'), (b'same_day_service', b'Same Day')])), - ('preferred_languages', edxval.models.ListField(default=[], verbose_name=b'Preferred Languages', max_items=50, blank=True)), - ('video_source_language', models.CharField(help_text=b'This specifies the speech language of a Video.', max_length=50, null=True, verbose_name=b'Video Source Language', blank=True)), + ('course_id', models.CharField(unique=True, max_length=255, verbose_name=u'Course ID')), + ('provider', models.CharField(max_length=20, verbose_name=u'Provider', choices=[(u'Custom', u'Custom'), (u'3PlayMedia', u'3PlayMedia'), (u'Cielo24', u'Cielo24')])), + ('cielo24_fidelity', models.CharField(blank=True, max_length=20, null=True, verbose_name=u'Cielo24 Fidelity', choices=[(u'MECHANICAL', u'Mechanical, 75% Accuracy'), (u'PREMIUM', u'Premium, 95% Accuracy'), (u'PROFESSIONAL', u'Professional, 99% Accuracy')])), + ('cielo24_turnaround', models.CharField(blank=True, max_length=20, null=True, verbose_name=u'Cielo24 Turnaround', choices=[(u'STANDARD', u'Standard, 48h'), (u'PRIORITY', u'Priority, 24h')])), + ('three_play_turnaround', models.CharField(blank=True, max_length=20, null=True, verbose_name=u'3PlayMedia Turnaround', choices=[(u'extended_service', u'10-Day/Extended'), (u'default', u'4-Day/Default'), (u'expedited_service', u'2-Day/Expedited'), (u'rush_service', u'24 hour/Rush'), (u'same_day_service', u'Same Day')])), + ('preferred_languages', edxval.models.ListField(default=[], verbose_name=u'Preferred Languages', max_items=50, blank=True)), + ('video_source_language', models.CharField(help_text=u'This specifies the speech language of a Video.', max_length=50, null=True, verbose_name=u'Video Source Language', blank=True)), ], options={ 'abstract': False, @@ -39,11 +39,11 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, verbose_name='created', editable=False)), ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, verbose_name='modified', editable=False)), - ('video_id', models.CharField(help_text=b'It can be an edx_video_id or an external video id', max_length=255)), + ('video_id', models.CharField(help_text=u'It can be an edx_video_id or an external video id', max_length=255)), ('transcript', edxval.models.CustomizableFileField(null=True, blank=True)), ('language_code', models.CharField(max_length=50, db_index=True)), - ('provider', models.CharField(default=b'Custom', max_length=30, choices=[(b'Custom', b'Custom'), (b'3PlayMedia', b'3PlayMedia'), (b'Cielo24', b'Cielo24')])), - ('file_format', models.CharField(db_index=True, max_length=20, choices=[(b'srt', b'SubRip'), (b'sjson', b'SRT JSON')])), + ('provider', models.CharField(default=u'Custom', max_length=30, choices=[(u'Custom', u'Custom'), (u'3PlayMedia', u'3PlayMedia'), (u'Cielo24', u'Cielo24')])), + ('file_format', models.CharField(db_index=True, max_length=20, choices=[(u'srt', u'SubRip'), (u'sjson', u'SRT JSON')])), ], ), migrations.AlterUniqueTogether( diff --git a/edxval/migrations/0007_transcript_credentials_state.py b/edxval/migrations/0007_transcript_credentials_state.py index 62ff589b..bd8dc854 100644 --- a/edxval/migrations/0007_transcript_credentials_state.py +++ b/edxval/migrations/0007_transcript_credentials_state.py @@ -21,9 +21,9 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')), ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')), - ('org', models.CharField(max_length=32, verbose_name=b'Course Organization')), - ('provider', models.CharField(choices=[(b'Custom', b'Custom'), (b'3PlayMedia', b'3PlayMedia'), (b'Cielo24', b'Cielo24')], max_length=20, verbose_name=b'Transcript Provider')), - ('exists', models.BooleanField(default=False, help_text=b'Transcript credentials state')), + ('org', models.CharField(max_length=32, verbose_name=u'Course Organization')), + ('provider', models.CharField(choices=[(u'Custom', u'Custom'), (u'3PlayMedia', u'3PlayMedia'), (u'Cielo24', u'Cielo24')], max_length=20, verbose_name=u'Transcript Provider')), + ('exists', models.BooleanField(default=False, help_text=u'Transcript credentials state')), ], ), migrations.AlterUniqueTogether( diff --git a/edxval/migrations/0009_auto_20171127_0406.py b/edxval/migrations/0009_auto_20171127_0406.py index 8920088d..1b00d18e 100644 --- a/edxval/migrations/0009_auto_20171127_0406.py +++ b/edxval/migrations/0009_auto_20171127_0406.py @@ -16,6 +16,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='transcriptpreference', name='three_play_turnaround', - field=models.CharField(blank=True, choices=[(b'extended', b'10-Day/Extended'), (b'standard', b'4-Day/Standard'), (b'expedited', b'2-Day/Expedited'), (b'rush', b'24 hour/Rush'), (b'same_day', b'Same Day'), (b'two_hour', b'2 Hour')], max_length=20, null=True, verbose_name=b'3PlayMedia Turnaround'), + field=models.CharField(blank=True, choices=[(u'extended', u'10-Day/Extended'), (u'standard', u'4-Day/Standard'), (u'expedited', u'2-Day/Expedited'), (u'rush', u'24 hour/Rush'), (u'same_day', u'Same Day'), (u'two_hour', u'2 Hour')], max_length=20, null=True, verbose_name=u'3PlayMedia Turnaround'), ), ] diff --git a/edxval/models.py b/edxval/models.py index 5cdd1ba3..0f377540 100644 --- a/edxval/models.py +++ b/edxval/models.py @@ -33,7 +33,7 @@ logger = logging.getLogger(__name__) # pylint: disable=C0103 -URL_REGEX = r'^[a-zA-Z0-9\-_]*$' +URL_REGEX = u'^[a-zA-Z0-9\\-_]*$' LIST_MAX_ITEMS = 3 EXTERNAL_VIDEO_STATUS = 'external' @@ -79,8 +79,8 @@ class Profile(models.Model): validators=[ RegexValidator( regex=URL_REGEX, - message='profile_name has invalid characters', - code='invalid profile_name' + message=u'profile_name has invalid characters', + code=u'invalid profile_name' ), ] ) @@ -107,8 +107,8 @@ class Video(models.Model): validators=[ RegexValidator( regex=URL_REGEX, - message='edx_video_id has invalid characters', - code='invalid edx_video_id' + message=u'edx_video_id has invalid characters', + code=u'invalid edx_video_id' ), ] ) @@ -159,7 +159,7 @@ class CourseVideo(models.Model, ModelFactoryWithValidation): """ course_id = models.CharField(max_length=255) video = models.ForeignKey(Video, related_name='courses', on_delete = models.CASCADE) - is_hidden = models.BooleanField(default=False, help_text='Hide video for course.') + is_hidden = models.BooleanField(default=False, help_text=u'Hide video for course.') class Meta: # pylint: disable=C1001 """ @@ -367,9 +367,9 @@ def image_url(self): class TranscriptProviderType(object): - CUSTOM = 'Custom' - THREE_PLAY_MEDIA = '3PlayMedia' - CIELO24 = 'Cielo24' + CUSTOM = u'Custom' + THREE_PLAY_MEDIA = u'3PlayMedia' + CIELO24 = u'Cielo24' CHOICES = ( (CUSTOM, CUSTOM), @@ -411,7 +411,7 @@ class VideoTranscript(TimeStampedModel): """ Transcript for a video """ - video = models.ForeignKey(Video, related_name='video_transcripts', null=True, + video = models.ForeignKey(Video, related_name=u'video_transcripts', null=True, on_delete = models.CASCADE) transcript = CustomizableFileField() language_code = models.CharField(max_length=50, db_index=True) @@ -544,11 +544,11 @@ class Cielo24Turnaround(object): """ Cielo24 turnarounds. """ - STANDARD = 'STANDARD' - PRIORITY = 'PRIORITY' + STANDARD = u'STANDARD' + PRIORITY = u'PRIORITY' CHOICES = ( - (STANDARD, 'Standard, 48h'), - (PRIORITY, 'Priority, 24h'), + (STANDARD, u'Standard, 48h'), + (PRIORITY, u'Priority, 24h'), ) @@ -556,13 +556,13 @@ class Cielo24Fidelity(object): """ Cielo24 fidelity. """ - MECHANICAL = 'MECHANICAL' - PREMIUM = 'PREMIUM' - PROFESSIONAL = 'PROFESSIONAL' + MECHANICAL = u'MECHANICAL' + PREMIUM = u'PREMIUM' + PROFESSIONAL = u'PROFESSIONAL' CHOICES = ( - (MECHANICAL, 'Mechanical, 75% Accuracy'), - (PREMIUM, 'Premium, 95% Accuracy'), - (PROFESSIONAL, 'Professional, 99% Accuracy'), + (MECHANICAL, u'Mechanical, 75% Accuracy'), + (PREMIUM, u'Premium, 95% Accuracy'), + (PROFESSIONAL, u'Professional, 99% Accuracy'), ) @@ -570,20 +570,20 @@ class ThreePlayTurnaround(object): """ 3PlayMedia turnarounds. """ - EXTENDED = 'extended' - STANDARD = 'standard' - EXPEDITED= 'expedited' - RUSH = 'rush' - SAME_DAY= 'same_day' - TWO_HOUR = 'two_hour' + EXTENDED = u'extended' + STANDARD = u'standard' + EXPEDITED= u'expedited' + RUSH = u'rush' + SAME_DAY= u'same_day' + TWO_HOUR = u'two_hour' CHOICES = ( - (EXTENDED, '10-Day/Extended'), - (STANDARD, '4-Day/Standard'), - (EXPEDITED, '2-Day/Expedited'), - (RUSH, '24 hour/Rush'), - (SAME_DAY, 'Same Day'), - (TWO_HOUR, '2 Hour'), + (EXTENDED, u'10-Day/Extended'), + (STANDARD, u'4-Day/Standard'), + (EXPEDITED, u'2-Day/Expedited'), + (RUSH, u'24 hour/Rush'), + (SAME_DAY, u'Same Day'), + (TWO_HOUR, u'2 Hour'), ) @@ -591,40 +591,40 @@ class TranscriptPreference(TimeStampedModel): """ Third Party Transcript Preferences for a Course """ - course_id = models.CharField(verbose_name='Course ID', max_length=255, unique=True) + course_id = models.CharField(verbose_name=u'Course ID', max_length=255, unique=True) provider = models.CharField( - verbose_name='Provider', + verbose_name=u'Provider', max_length=20, choices=TranscriptProviderType.CHOICES, ) cielo24_fidelity = models.CharField( - verbose_name='Cielo24 Fidelity', + verbose_name=u'Cielo24 Fidelity', max_length=20, choices=Cielo24Fidelity.CHOICES, null=True, blank=True, ) cielo24_turnaround = models.CharField( - verbose_name='Cielo24 Turnaround', + verbose_name=u'Cielo24 Turnaround', max_length=20, choices=Cielo24Turnaround.CHOICES, null=True, blank=True, ) three_play_turnaround = models.CharField( - verbose_name='3PlayMedia Turnaround', + verbose_name=u'3PlayMedia Turnaround', max_length=20, choices=ThreePlayTurnaround.CHOICES, null=True, blank=True, ) - preferred_languages = ListField(verbose_name='Preferred Languages', max_items=50, default=[], blank=True) + preferred_languages = ListField(verbose_name=u'Preferred Languages', max_items=50, default=[], blank=True) video_source_language = models.CharField( - verbose_name='Video Source Language', + verbose_name=u'Video Source Language', max_length=50, null=True, blank=True, - help_text='This specifies the speech language of a Video.' + help_text=u'This specifies the speech language of a Video.' ) def __unicode__(self): @@ -638,13 +638,13 @@ class ThirdPartyTranscriptCredentialsState(TimeStampedModel): class Meta: unique_together = ('org', 'provider') - org = models.CharField(verbose_name='Course Organization', max_length=32) + org = models.CharField(verbose_name=u'Course Organization', max_length=32) provider = models.CharField( - verbose_name='Transcript Provider', + verbose_name=u'Transcript Provider', max_length=20, choices=TranscriptProviderType.CHOICES, ) - exists = models.BooleanField(default=False, help_text='Transcript credentials state') + exists = models.BooleanField(default=False, help_text=u'Transcript credentials state') @classmethod def update_or_create(cls, org, provider, exists): diff --git a/edxval/tests/test_serializers.py b/edxval/tests/test_serializers.py index 286c2bba..686183e6 100644 --- a/edxval/tests/test_serializers.py +++ b/edxval/tests/test_serializers.py @@ -98,7 +98,7 @@ def test_invalid_course_id(self): ) self.assertFalse(serializer.is_valid()) self.assertEqual( - str(serializer.errors['courses']['course_id'][0]), + str(serializer.errors['courses'][0]), "Ensure this value has at most 255 characters (it has 300)." ) diff --git a/requirements/base.in b/requirements/base.in index 7b13cf0e..94eecc93 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -4,7 +4,7 @@ boto Django>=1.11,<2 django-model-utils edx-django-oauth2-provider -djangorestframework==3.9.4 +djangorestframework==3.7.7 edx-drf-extensions -e git+https://github.com/edx/django-rest-framework-oauth.git@0a43e8525f1e3048efe4bc70c03de308a277197c#egg=djangorestframework-oauth==1.1.1 django-storages diff --git a/requirements/dev.txt b/requirements/dev.txt index d4242c23..66124c09 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -24,14 +24,14 @@ coveralls==1.8.2 cryptography==2.8 # via pyopenssl, urllib3 ddt==1.2.1 diff-cover==2.4.0 -distlib==0.2.9.post0 # via caniusepython3 +distlib==0.3.0 # via caniusepython3 django-model-utils==3.2.0 django-nose==1.4.6 django-storages==1.7.2 django-waffle==0.17.0 # via edx-django-utils, edx-drf-extensions django==1.11.25 djangorestframework-jwt==1.11.0 # via edx-drf-extensions -djangorestframework==3.9.4 +djangorestframework==3.7.7 docopt==0.6.2 # via coveralls edx-django-oauth2-provider==1.3.5 edx-django-utils==2.0.1 # via edx-drf-extensions @@ -45,13 +45,13 @@ funcsigs==1.0.2 # via mock future==0.18.1 # via backports.os, pyjwkest futures==3.3.0 ; python_version <= "3" idna==2.8 # via requests, urllib3 -importlib-metadata==0.23 # via pluggy, tox -inflect==2.1.0 # via jinja2-pluralize +importlib-metadata==0.23 # via inflect, pluggy, tox +inflect==3.0.1 # via jinja2-pluralize ipaddress==1.0.23 # via cryptography, urllib3 isort==4.3.21 jinja2-pluralize==0.3.0 # via diff-cover jinja2==2.10.3 # via diff-cover, jinja2-pluralize -lazy-object-proxy==1.4.2 # via astroid +lazy-object-proxy==1.4.3 # via astroid lxml==4.4.1 markupsafe==1.1.1 # via jinja2 mccabe==0.6.1 # via pylint @@ -103,4 +103,4 @@ wrapt==1.11.2 # via astroid zipp==0.6.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -# setuptools==41.4.0 # via caniusepython3, fs +# setuptools==41.6.0 # via caniusepython3, fs diff --git a/requirements/quality.txt b/requirements/quality.txt index 2da65780..872ea31d 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -19,14 +19,14 @@ click==7.0 # via click-log, edx-lint configparser==4.0.2 # via pydocstyle, pylint coverage==4.5.4 ddt==1.2.1 -distlib==0.2.9.post0 # via caniusepython3 +distlib==0.3.0 # via caniusepython3 django-model-utils==3.2.0 django-nose==1.4.6 django-storages==1.7.2 django-waffle==0.17.0 # via edx-django-utils, edx-drf-extensions django==1.11.25 djangorestframework-jwt==1.11.0 # via edx-drf-extensions -djangorestframework==3.9.4 +djangorestframework==3.7.7 edx-django-oauth2-provider==1.3.5 edx-django-utils==2.0.1 # via edx-drf-extensions edx-drf-extensions==2.4.2 @@ -39,7 +39,7 @@ future==0.18.1 # via backports.os, pyjwkest futures==3.3.0 ; python_version <= "3" idna==2.8 # via requests isort==4.3.21 -lazy-object-proxy==1.4.2 # via astroid +lazy-object-proxy==1.4.3 # via astroid lxml==4.4.1 mccabe==0.6.1 # via pylint mock==3.0.5 @@ -76,4 +76,4 @@ urllib3==1.25.6 # via requests wrapt==1.11.2 # via astroid # The following packages are considered to be unsafe in a requirements file: -# setuptools==41.4.0 # via caniusepython3, fs +# setuptools==41.6.0 # via caniusepython3, fs diff --git a/requirements/test.txt b/requirements/test.txt index 845a41a9..6a552250 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -17,7 +17,7 @@ django-nose==1.4.6 django-storages==1.7.2 django-waffle==0.17.0 # via edx-django-utils, edx-drf-extensions djangorestframework-jwt==1.11.0 # via edx-drf-extensions -djangorestframework==3.9.4 +djangorestframework==3.7.7 edx-django-oauth2-provider==1.3.5 edx-django-utils==2.0.1 # via edx-drf-extensions edx-drf-extensions==2.4.2 @@ -51,4 +51,4 @@ typing==3.7.4.1 # via fs urllib3==1.25.6 # via requests # The following packages are considered to be unsafe in a requirements file: -# setuptools==41.4.0 # via fs +# setuptools==41.6.0 # via fs diff --git a/setup.py b/setup.py index d9a9d4cf..8cc7755c 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ def load_requirements(*requirements_paths): return list(requirements) -VERSION = '1.1.29' +VERSION = '1.1.30' if sys.argv[-1] == 'tag': print("Tagging the version on github:")