From f5a83d5d6c8b4f8028c7558a0fc1dd3c7a463d6a Mon Sep 17 00:00:00 2001 From: John Eskew Date: Mon, 4 Dec 2017 13:52:15 -0500 Subject: [PATCH 1/2] Fix URLs that generate warnings in Django 1.10. --- cms/urls.py | 2 +- lms/djangoapps/edxnotes/urls.py | 8 ++++---- lms/djangoapps/teams/urls.py | 2 +- lms/urls.py | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cms/urls.py b/cms/urls.py index aa4077cd1f..f0514f7aee 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -46,7 +46,7 @@ urlpatterns = [ # noop to squelch ajax errors url(r'^event$', contentstore.views.event, name='event'), url(r'^xmodule/', include('pipeline_js.urls')), - url(r'^heartbeat$', include('openedx.core.djangoapps.heartbeat.urls')), + url(r'^heartbeat', include('openedx.core.djangoapps.heartbeat.urls')), url(r'^user_api/', include('openedx.core.djangoapps.user_api.legacy_urls')), url(r'^i18n/', include('django.conf.urls.i18n')), diff --git a/lms/djangoapps/edxnotes/urls.py b/lms/djangoapps/edxnotes/urls.py index 95c81ade09..4dab2e5882 100644 --- a/lms/djangoapps/edxnotes/urls.py +++ b/lms/djangoapps/edxnotes/urls.py @@ -7,8 +7,8 @@ from edxnotes import views # Additionally, we include login URLs for the browseable API. urlpatterns = [ - url(r"^/$", views.edxnotes, name="edxnotes"), - url(r"^/notes/$", views.notes, name="notes"), - url(r"^/token/$", views.get_token, name="get_token"), - url(r"^/visibility/$", views.edxnotes_visibility, name="edxnotes_visibility"), + url(r"^$", views.edxnotes, name="edxnotes"), + url(r"^notes/$", views.notes, name="notes"), + url(r"^token/$", views.get_token, name="get_token"), + url(r"^visibility/$", views.edxnotes_visibility, name="edxnotes_visibility"), ] diff --git a/lms/djangoapps/teams/urls.py b/lms/djangoapps/teams/urls.py index 10d414a2f9..f358f4ca84 100644 --- a/lms/djangoapps/teams/urls.py +++ b/lms/djangoapps/teams/urls.py @@ -8,5 +8,5 @@ from django.contrib.auth.decorators import login_required from .views import TeamsDashboardView urlpatterns = [ - url(r"^/$", login_required(TeamsDashboardView.as_view()), name="teams_dashboard") + url(r"^$", login_required(TeamsDashboardView.as_view()), name="teams_dashboard") ] diff --git a/lms/urls.py b/lms/urls.py index ef364b76a0..ac0624ee1b 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -72,7 +72,7 @@ urlpatterns = [ # Static template view endpoints like blog, faq, etc. url(r'', include('static_template_view.urls')), - url(r'^heartbeat$', include('openedx.core.djangoapps.heartbeat.urls')), + url(r'^heartbeat', include('openedx.core.djangoapps.heartbeat.urls')), # Note: these are older versions of the User API that will eventually be # subsumed by api/user listed below. @@ -634,7 +634,7 @@ urlpatterns += [ # Student Notes url( - r'^courses/{}/edxnotes'.format( + r'^courses/{}/edxnotes/'.format( settings.COURSE_ID_PATTERN, ), include('edxnotes.urls'), @@ -686,7 +686,7 @@ if settings.FEATURES['ENABLE_TEAMS']: include('lms.djangoapps.teams.api_urls') ), url( - r'^courses/{}/teams'.format( + r'^courses/{}/teams/'.format( settings.COURSE_ID_PATTERN, ), include('lms.djangoapps.teams.urls'), From d4667691fbd88458563af3206779d109546d1dca Mon Sep 17 00:00:00 2001 From: John Eskew Date: Mon, 4 Dec 2017 18:14:45 -0500 Subject: [PATCH 2/2] Convert final field from CommaSeparatedIntegerField to CharField. --- ..._archived_suggested_prices_to_charfield.py | 21 +++++++++++++++++++ common/djangoapps/course_modes/models.py | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 common/djangoapps/course_modes/migrations/0010_archived_suggested_prices_to_charfield.py diff --git a/common/djangoapps/course_modes/migrations/0010_archived_suggested_prices_to_charfield.py b/common/djangoapps/course_modes/migrations/0010_archived_suggested_prices_to_charfield.py new file mode 100644 index 0000000000..b307d06472 --- /dev/null +++ b/common/djangoapps/course_modes/migrations/0010_archived_suggested_prices_to_charfield.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import re +import django.core.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('course_modes', '0009_suggested_prices_to_charfield'), + ] + + operations = [ + migrations.AlterField( + model_name='coursemodesarchive', + name='suggested_prices', + field=models.CharField(default=b'', max_length=255, blank=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\d,]+\\Z'), 'Enter only digits separated by commas.', 'invalid')]), + ), + ] diff --git a/common/djangoapps/course_modes/models.py b/common/djangoapps/course_modes/models.py index 1f74070e05..3105f1c050 100644 --- a/common/djangoapps/course_modes/models.py +++ b/common/djangoapps/course_modes/models.py @@ -810,7 +810,8 @@ class CourseModesArchive(models.Model): min_price = models.IntegerField(default=0) # the suggested prices for this mode - suggested_prices = models.CommaSeparatedIntegerField(max_length=255, blank=True, default='') + suggested_prices = models.CharField(max_length=255, blank=True, default='', + validators=[validate_comma_separated_integer_list]) # the currency these prices are in, using lower case ISO currency codes currency = models.CharField(default="usd", max_length=8)