Merge pull request #16106 from edx/bmedx/raw_sql_dates_PLAT-1531
Update raw sql that uses datetimes to be Django 1.9 compatible
This commit is contained in:
@@ -51,7 +51,7 @@ def check_database():
|
|||||||
"""
|
"""
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
try:
|
try:
|
||||||
cursor.execute("SELECT CURRENT_DATE")
|
cursor.execute("SELECT 1")
|
||||||
cursor.fetchone()
|
cursor.fetchone()
|
||||||
return 'sql', True, u'OK'
|
return 'sql', True, u'OK'
|
||||||
except DatabaseError as fail:
|
except DatabaseError as fail:
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import optparse
|
|||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import connections
|
from django.db import connections
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from opaque_keys.edx.keys import CourseKey
|
from opaque_keys.edx.keys import CourseKey
|
||||||
from xmodule.modulestore.django import modulestore
|
from xmodule.modulestore.django import modulestore
|
||||||
@@ -255,6 +256,17 @@ class Command(BaseCommand):
|
|||||||
row_count = 0
|
row_count = 0
|
||||||
for row in self._iterate_results(cursor):
|
for row in self._iterate_results(cursor):
|
||||||
user_id, username, email, full_name, course_id, is_opted_in, pref_set_datetime = row
|
user_id, username, email, full_name, course_id, is_opted_in, pref_set_datetime = row
|
||||||
|
|
||||||
|
if pref_set_datetime:
|
||||||
|
# TODO: Remove Django 1.11 upgrade shim
|
||||||
|
# SHIM: pref_set_datetime.tzinfo should always be None here after the 1.11 upgrade
|
||||||
|
# As of Django 1.9 datetimes returned from raw sql queries are no longer coerced to being tz aware
|
||||||
|
# so we correct for that here.
|
||||||
|
if pref_set_datetime.tzinfo is None or pref_set_datetime.tzinfo.utcoffset(pref_set_datetime) is None:
|
||||||
|
pref_set_datetime = timezone.make_aware(pref_set_datetime, timezone.utc)
|
||||||
|
else:
|
||||||
|
pref_set_datetime = self.DEFAULT_DATETIME_STR
|
||||||
|
|
||||||
writer.writerow({
|
writer.writerow({
|
||||||
"user_id": user_id,
|
"user_id": user_id,
|
||||||
"username": username.encode('utf-8'),
|
"username": username.encode('utf-8'),
|
||||||
@@ -264,7 +276,7 @@ class Command(BaseCommand):
|
|||||||
"full_name": full_name.encode('utf-8') if full_name else '',
|
"full_name": full_name.encode('utf-8') if full_name else '',
|
||||||
"course_id": course_id.encode('utf-8'),
|
"course_id": course_id.encode('utf-8'),
|
||||||
"is_opted_in_for_email": is_opted_in if is_opted_in else "True",
|
"is_opted_in_for_email": is_opted_in if is_opted_in else "True",
|
||||||
"preference_set_datetime": pref_set_datetime if pref_set_datetime else self.DEFAULT_DATETIME_STR,
|
"preference_set_datetime": pref_set_datetime,
|
||||||
})
|
})
|
||||||
row_count += 1
|
row_count += 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user