diff --git a/common/djangoapps/status/migrations/0002_update_help_text.py b/common/djangoapps/status/migrations/0002_update_help_text.py index 3f5df18189..66098e2820 100644 --- a/common/djangoapps/status/migrations/0002_update_help_text.py +++ b/common/djangoapps/status/migrations/0002_update_help_text.py @@ -14,6 +14,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='globalstatusmessage', name='message', - field=models.TextField(help_text=b'
The contents of this field will be displayed as a warning banner on all views.
To override the banner message for a specific course, refer to the Course Message configuration. Course Messages will only work if the global status message is enabled, so if you only want to add a banner to specific courses without adding a global status message, you should add a global status message with empty message text.
Finally, disable the global status message by adding another empty message with "enabled" unchecked.
', null=True, blank=True), + field=models.TextField(help_text=u'The contents of this field will be displayed as a warning banner on all views.
To override the banner message for a specific course, refer to the Course Message configuration. Course Messages will only work if the global status message is enabled, so if you only want to add a banner to specific courses without adding a global status message, you should add a global status message with empty message text.
Finally, disable the global status message by adding another empty message with "enabled" unchecked.
', null=True, blank=True), ), ] diff --git a/common/djangoapps/status/models.py b/common/djangoapps/status/models.py index 0ad62f2d12..74b8db77ec 100644 --- a/common/djangoapps/status/models.py +++ b/common/djangoapps/status/models.py @@ -26,13 +26,13 @@ class GlobalStatusMessage(ConfigurationModel): message = models.TextField( blank=True, null=True, - help_text='The contents of this field will be displayed as a warning banner on all views.
' - 'To override the banner message for a specific course, refer to the Course Message configuration. ' - 'Course Messages will only work if the global status message is enabled, so if you only want to add ' - 'a banner to specific courses without adding a global status message, you should add a global status ' - 'message with empty message text.
' - 'Finally, disable the global status message by adding another empty message with "enabled" ' - 'unchecked.
') + help_text=u'The contents of this field will be displayed as a warning banner on all views.
' + u'To override the banner message for a specific course, refer to the Course Message configuration. ' + u'Course Messages will only work if the global status message is enabled, so if you only want to add ' + u'a banner to specific courses without adding a global status message, you should add a global status ' + u'message with empty message text.
' + u'Finally, disable the global status message by adding another empty message with "enabled" ' + u'unchecked.
') def full_message(self, course_key): """ Returns the full status message, including any course-specific status messages. """ diff --git a/lms/djangoapps/courseware/migrations/0007_remove_done_index.py b/lms/djangoapps/courseware/migrations/0007_remove_done_index.py index 2103d22d51..879e2d96b9 100644 --- a/lms/djangoapps/courseware/migrations/0007_remove_done_index.py +++ b/lms/djangoapps/courseware/migrations/0007_remove_done_index.py @@ -15,6 +15,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='studentmodule', name='done', - field=models.CharField(choices=[(b'na', b'NOT_APPLICABLE'), (b'f', b'FINISHED'), (b'i', b'INCOMPLETE')], default=b'na', max_length=8), + field=models.CharField(choices=[(u'na', u'NOT_APPLICABLE'), (u'f', u'FINISHED'), (u'i', u'INCOMPLETE')], default=u'na', max_length=8), ), ] diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py index 84838b61d1..f940f73ee5 100644 --- a/lms/djangoapps/courseware/models.py +++ b/lms/djangoapps/courseware/models.py @@ -112,9 +112,9 @@ class StudentModule(models.Model): grade = models.FloatField(null=True, blank=True, db_index=True) max_grade = models.FloatField(null=True, blank=True) DONE_TYPES = ( - ('na', 'NOT_APPLICABLE'), - ('f', 'FINISHED'), - ('i', 'INCOMPLETE'), + (u'na', u'NOT_APPLICABLE'), + (u'f', u'FINISHED'), + (u'i', u'INCOMPLETE'), ) done = models.CharField(max_length=8, choices=DONE_TYPES, default='na') diff --git a/openedx/core/djangoapps/credit/migrations/0001_initial.py b/openedx/core/djangoapps/credit/migrations/0001_initial.py index 168ff692d5..ab5a8084e3 100644 --- a/openedx/core/djangoapps/credit/migrations/0001_initial.py +++ b/openedx/core/djangoapps/credit/migrations/0001_initial.py @@ -48,17 +48,17 @@ 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)), - ('provider_id', models.CharField(help_text='Unique identifier for this credit provider. Only alphanumeric characters and hyphens (-) are allowed. The identifier is case-sensitive.', unique=True, max_length=255, validators=[django.core.validators.RegexValidator(regex=b'[a-z,A-Z,0-9,\\-]+', message=b'Only alphanumeric characters and hyphens (-) are allowed', code=b'invalid_provider_id')])), + ('provider_id', models.CharField(help_text='Unique identifier for this credit provider. Only alphanumeric characters and hyphens (-) are allowed. The identifier is case-sensitive.', unique=True, max_length=255, validators=[django.core.validators.RegexValidator(regex=u'[a-z,A-Z,0-9,\\-]+', message=u'Only alphanumeric characters and hyphens (-) are allowed', code=u'invalid_provider_id')])), ('active', models.BooleanField(default=True, help_text='Whether the credit provider is currently enabled.')), ('display_name', models.CharField(help_text='Name of the credit provider displayed to users', max_length=255)), ('enable_integration', models.BooleanField(default=False, help_text='When true, automatically notify the credit provider when a user requests credit. In order for this to work, a shared secret key MUST be configured for the credit provider in secure auth settings.')), - ('provider_url', models.URLField(default=b'', help_text='URL of the credit provider. If automatic integration is enabled, this will the the end-point that we POST to to notify the provider of a credit request. Otherwise, the user will be shown a link to this URL, so the user can request credit from the provider directly.')), - ('provider_status_url', models.URLField(default=b'', help_text='URL from the credit provider where the user can check the status of his or her request for credit. This is displayed to students *after* they have requested credit.')), - ('provider_description', models.TextField(default=b'', help_text='Description for the credit provider displayed to users.')), + ('provider_url', models.URLField(default=u'', help_text='URL of the credit provider. If automatic integration is enabled, this will the the end-point that we POST to to notify the provider of a credit request. Otherwise, the user will be shown a link to this URL, so the user can request credit from the provider directly.')), + ('provider_status_url', models.URLField(default=u'', help_text='URL from the credit provider where the user can check the status of his or her request for credit. This is displayed to students *after* they have requested credit.')), + ('provider_description', models.TextField(default=u'', help_text='Description for the credit provider displayed to users.')), ('fulfillment_instructions', models.TextField(help_text='Plain text or html content for displaying further steps on receipt page *after* paying for the credit to get credit for a credit course against a credit provider.', null=True, blank=True)), - ('eligibility_email_message', models.TextField(default=b'', help_text='Plain text or html content for displaying custom message inside credit eligibility email content which is sent when user has met all credit eligibility requirements.')), - ('receipt_email_message', models.TextField(default=b'', help_text='Plain text or html content for displaying custom message inside credit receipt email content which is sent *after* paying to get credit for a credit course.')), - ('thumbnail_url', models.URLField(default=b'', help_text='Thumbnail image url of the credit provider.', max_length=255)), + ('eligibility_email_message', models.TextField(default=u'', help_text='Plain text or html content for displaying custom message inside credit eligibility email content which is sent when user has met all credit eligibility requirements.')), + ('receipt_email_message', models.TextField(default=u'', help_text='Plain text or html content for displaying custom message inside credit receipt email content which is sent *after* paying to get credit for a credit course.')), + ('thumbnail_url', models.URLField(default=u'', help_text='Thumbnail image url of the credit provider.', max_length=255)), ], options={ 'abstract': False, @@ -73,7 +73,7 @@ class Migration(migrations.Migration): ('uuid', models.CharField(unique=True, max_length=32, db_index=True)), ('username', models.CharField(max_length=255, db_index=True)), ('parameters', jsonfield.fields.JSONField()), - ('status', models.CharField(default=b'pending', max_length=255, choices=[(b'pending', b'Pending'), (b'approved', b'Approved'), (b'rejected', b'Rejected')])), + ('status', models.CharField(default=u'pending', max_length=255, choices=[(u'pending', u'Pending'), (u'approved', u'Approved'), (u'rejected', u'Rejected')])), ('course', models.ForeignKey(related_name='credit_requests', to='credit.CreditCourse', on_delete=models.CASCADE)), ('provider', models.ForeignKey(related_name='credit_requests', to='credit.CreditProvider', on_delete=models.CASCADE)), ], @@ -89,7 +89,7 @@ class Migration(migrations.Migration): ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, verbose_name='modified', editable=False)), ('namespace', models.CharField(max_length=255)), ('name', models.CharField(max_length=255)), - ('display_name', models.CharField(default=b'', max_length=255)), + ('display_name', models.CharField(default=u'', max_length=255)), ('order', models.PositiveIntegerField(default=0)), ('criteria', jsonfield.fields.JSONField()), ('active', models.BooleanField(default=True)), @@ -106,7 +106,7 @@ class Migration(migrations.Migration): ('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)), ('username', models.CharField(max_length=255, db_index=True)), - ('status', models.CharField(max_length=32, choices=[(b'satisfied', b'satisfied'), (b'failed', b'failed'), (b'declined', b'declined')])), + ('status', models.CharField(max_length=32, choices=[(u'satisfied', u'satisfied'), (u'failed', u'failed'), (u'declined', u'declined')])), ('reason', jsonfield.fields.JSONField(default={})), ('requirement', models.ForeignKey(related_name='statuses', to='credit.CreditRequirement', on_delete=models.CASCADE)), ], @@ -120,7 +120,7 @@ class Migration(migrations.Migration): ('uuid', models.CharField(max_length=32, db_index=True)), ('username', models.CharField(max_length=255, db_index=True)), ('parameters', jsonfield.fields.JSONField()), - ('status', models.CharField(default=b'pending', max_length=255, choices=[(b'pending', b'Pending'), (b'approved', b'Approved'), (b'rejected', b'Rejected')])), + ('status', models.CharField(default=u'pending', max_length=255, choices=[(u'pending', u'Pending'), (u'approved', u'Approved'), (u'rejected', u'Rejected')])), ('history_id', models.AutoField(serialize=False, primary_key=True)), ('history_date', models.DateTimeField()), ('history_type', models.CharField(max_length=1, choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')])), @@ -141,7 +141,7 @@ class Migration(migrations.Migration): ('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)), ('username', models.CharField(max_length=255, db_index=True)), - ('status', models.CharField(max_length=32, choices=[(b'satisfied', b'satisfied'), (b'failed', b'failed'), (b'declined', b'declined')])), + ('status', models.CharField(max_length=32, choices=[(u'satisfied', u'satisfied'), (u'failed', u'failed'), (u'declined', u'declined')])), ('reason', jsonfield.fields.JSONField(default={})), ('history_id', models.AutoField(serialize=False, primary_key=True)), ('history_date', models.DateTimeField()), diff --git a/openedx/core/djangoapps/credit/models.py b/openedx/core/djangoapps/credit/models.py index dcd483ee23..f6cc0325ae 100644 --- a/openedx/core/djangoapps/credit/models.py +++ b/openedx/core/djangoapps/credit/models.py @@ -30,7 +30,7 @@ from opaque_keys.edx.django.models import CourseKeyField from openedx.core.lib.cache_utils import request_cached -CREDIT_PROVIDER_ID_REGEX = r"[a-z,A-Z,0-9,\-]+" +CREDIT_PROVIDER_ID_REGEX = u"[a-z,A-Z,0-9,\\-]+" log = logging.getLogger(__name__) @@ -52,8 +52,8 @@ class CreditProvider(TimeStampedModel): validators=[ RegexValidator( regex=CREDIT_PROVIDER_ID_REGEX, - message="Only alphanumeric characters and hyphens (-) are allowed", - code="invalid_provider_id", + message=u"Only alphanumeric characters and hyphens (-) are allowed", + code=u"invalid_provider_id", ) ], help_text=ugettext_lazy( @@ -84,7 +84,7 @@ class CreditProvider(TimeStampedModel): ) provider_url = models.URLField( - default="", + default=u"", help_text=ugettext_lazy( "URL of the credit provider. If automatic integration is " "enabled, this will the the end-point that we POST to " @@ -95,7 +95,7 @@ class CreditProvider(TimeStampedModel): ) provider_status_url = models.URLField( - default="", + default=u"", help_text=ugettext_lazy( "URL from the credit provider where the user can check the status " "of his or her request for credit. This is displayed to students " @@ -104,7 +104,7 @@ class CreditProvider(TimeStampedModel): ) provider_description = models.TextField( - default="", + default=u"", help_text=ugettext_lazy( "Description for the credit provider displayed to users." ) @@ -121,7 +121,7 @@ class CreditProvider(TimeStampedModel): ) eligibility_email_message = models.TextField( - default="", + default=u"", help_text=ugettext_lazy( "Plain text or html content for displaying custom message inside " "credit eligibility email content which is sent when user has met " @@ -130,7 +130,7 @@ class CreditProvider(TimeStampedModel): ) receipt_email_message = models.TextField( - default="", + default=u"", help_text=ugettext_lazy( "Plain text or html content for displaying custom message inside " "credit receipt email content which is sent *after* paying to get " @@ -139,7 +139,7 @@ class CreditProvider(TimeStampedModel): ) thumbnail_url = models.URLField( - default="", + default=u"", max_length=255, help_text=ugettext_lazy( "Thumbnail image url of the credit provider." @@ -300,7 +300,7 @@ class CreditRequirement(TimeStampedModel): course = models.ForeignKey(CreditCourse, related_name="credit_requirements", on_delete=models.CASCADE) namespace = models.CharField(max_length=255) name = models.CharField(max_length=255) - display_name = models.CharField(max_length=255, default="") + display_name = models.CharField(max_length=255, default=u"") order = models.PositiveIntegerField(default=0) criteria = JSONField() active = models.BooleanField(default=True) @@ -677,14 +677,14 @@ class CreditRequest(TimeStampedModel): provider = models.ForeignKey(CreditProvider, related_name="credit_requests", on_delete=models.CASCADE) parameters = JSONField() - REQUEST_STATUS_PENDING = "pending" - REQUEST_STATUS_APPROVED = "approved" - REQUEST_STATUS_REJECTED = "rejected" + REQUEST_STATUS_PENDING = u"pending" + REQUEST_STATUS_APPROVED = u"approved" + REQUEST_STATUS_REJECTED = u"rejected" REQUEST_STATUS_CHOICES = ( - (REQUEST_STATUS_PENDING, "Pending"), - (REQUEST_STATUS_APPROVED, "Approved"), - (REQUEST_STATUS_REJECTED, "Rejected"), + (REQUEST_STATUS_PENDING, u"Pending"), + (REQUEST_STATUS_APPROVED, u"Approved"), + (REQUEST_STATUS_REJECTED, u"Rejected"), ) status = models.CharField( max_length=255, diff --git a/openedx/core/djangoapps/user_api/migrations/0001_initial.py b/openedx/core/djangoapps/user_api/migrations/0001_initial.py index 984b22134b..a5377ddc72 100644 --- a/openedx/core/djangoapps/user_api/migrations/0001_initial.py +++ b/openedx/core/djangoapps/user_api/migrations/0001_initial.py @@ -42,7 +42,7 @@ class Migration(migrations.Migration): name='UserPreference', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('key', models.CharField(db_index=True, max_length=255, validators=[django.core.validators.RegexValidator(b'[-_a-zA-Z0-9]+')])), + ('key', models.CharField(db_index=True, max_length=255, validators=[django.core.validators.RegexValidator(u'[-_a-zA-Z0-9]+')])), ('value', models.TextField()), ('user', models.ForeignKey(related_name='preferences', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], diff --git a/openedx/core/djangoapps/user_api/models.py b/openedx/core/djangoapps/user_api/models.py index 7ae8de7d81..8deec93f68 100644 --- a/openedx/core/djangoapps/user_api/models.py +++ b/openedx/core/djangoapps/user_api/models.py @@ -45,7 +45,7 @@ class UserPreference(models.Model): .. no_pii: Stores arbitrary key/value pairs, currently none are PII. If that changes, update this annotation. """ - KEY_REGEX = r"[-_a-zA-Z0-9]+" + KEY_REGEX = u"[-_a-zA-Z0-9]+" user = models.ForeignKey(User, db_index=True, related_name="preferences", on_delete=models.CASCADE) key = models.CharField(max_length=255, db_index=True, validators=[RegexValidator(KEY_REGEX)]) value = models.TextField()