Commit d1012a77 by Jesse Zoldak Committed by GitHub

Merge pull request #14425 from edx/revert-14200-jmbowman/async_course_import

Revert "PLAT-1104 Import courses asynchronously"
parents 94b78ecb 83a451dc
"""
Storage backend for course import and export.
"""
from __future__ import absolute_import
from django.conf import settings
from django.core.files.storage import get_storage_class
from storages.backends.s3boto import S3BotoStorage
from storages.utils import setting
class ImportExportS3Storage(S3BotoStorage): # pylint: disable=abstract-method
"""
S3 backend for course import and export OLX files.
"""
def __init__(self):
bucket = setting('COURSE_IMPORT_EXPORT_BUCKET', settings.AWS_STORAGE_BUCKET_NAME)
super(ImportExportS3Storage, self).__init__(bucket=bucket, querystring_auth=True)
# pylint: disable=invalid-name
course_import_export_storage = get_storage_class(settings.COURSE_IMPORT_EXPORT_STORAGE)()
...@@ -184,7 +184,7 @@ class ImportTestCase(CourseTestCase): ...@@ -184,7 +184,7 @@ class ImportTestCase(CourseTestCase):
"name": self.bad_tar, "name": self.bad_tar,
"course-data": [btar] "course-data": [btar]
}) })
self.assertEquals(resp.status_code, 200) self.assertEquals(resp.status_code, 415)
# Check that `import_status` returns the appropriate stage (i.e., the # Check that `import_status` returns the appropriate stage (i.e., the
# stage at which import failed). # stage at which import failed).
resp_status = self.client.get( resp_status = self.client.get(
...@@ -336,16 +336,8 @@ class ImportTestCase(CourseTestCase): ...@@ -336,16 +336,8 @@ class ImportTestCase(CourseTestCase):
with open(tarpath) as tar: with open(tarpath) as tar:
args = {"name": tarpath, "course-data": [tar]} args = {"name": tarpath, "course-data": [tar]}
resp = self.client.post(self.url, args) resp = self.client.post(self.url, args)
self.assertEquals(resp.status_code, 200) self.assertEquals(resp.status_code, 400)
resp = self.client.get( self.assertIn("SuspiciousFileOperation", resp.content)
reverse_course_url(
'import_status_handler',
self.course.id,
kwargs={'filename': os.path.split(tarpath)[1]}
)
)
status = json.loads(resp.content)["ImportStatus"]
self.assertEqual(status, -1)
try_tar(self._fifo_tar()) try_tar(self._fifo_tar())
try_tar(self._symlink_tar()) try_tar(self._symlink_tar())
......
...@@ -296,17 +296,10 @@ AWS_SECRET_ACCESS_KEY = AUTH_TOKENS["AWS_SECRET_ACCESS_KEY"] ...@@ -296,17 +296,10 @@ AWS_SECRET_ACCESS_KEY = AUTH_TOKENS["AWS_SECRET_ACCESS_KEY"]
if AWS_SECRET_ACCESS_KEY == "": if AWS_SECRET_ACCESS_KEY == "":
AWS_SECRET_ACCESS_KEY = None AWS_SECRET_ACCESS_KEY = None
AWS_STORAGE_BUCKET_NAME = AUTH_TOKENS.get('AWS_STORAGE_BUCKET_NAME', 'edxuploads')
# Disabling querystring auth instructs Boto to exclude the querystring parameters (e.g. signature, access key) it # Disabling querystring auth instructs Boto to exclude the querystring parameters (e.g. signature, access key) it
# normally appends to every returned URL. # normally appends to every returned URL.
AWS_QUERYSTRING_AUTH = AUTH_TOKENS.get('AWS_QUERYSTRING_AUTH', True) AWS_QUERYSTRING_AUTH = AUTH_TOKENS.get('AWS_QUERYSTRING_AUTH', True)
AWS_DEFAULT_ACL = 'private'
AWS_BUCKET_ACL = AWS_DEFAULT_ACL
AWS_QUERYSTRING_EXPIRE = 7 * 24 * 60 * 60 # 7 days
AWS_S3_CUSTOM_DOMAIN = AUTH_TOKENS.get('AWS_S3_CUSTOM_DOMAIN', 'edxuploads.s3.amazonaws.com')
if AUTH_TOKENS.get('DEFAULT_FILE_STORAGE'): if AUTH_TOKENS.get('DEFAULT_FILE_STORAGE'):
DEFAULT_FILE_STORAGE = AUTH_TOKENS.get('DEFAULT_FILE_STORAGE') DEFAULT_FILE_STORAGE = AUTH_TOKENS.get('DEFAULT_FILE_STORAGE')
elif AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY: elif AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY:
...@@ -314,13 +307,6 @@ elif AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY: ...@@ -314,13 +307,6 @@ elif AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY:
else: else:
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
COURSE_IMPORT_EXPORT_BUCKET = ENV_TOKENS.get('COURSE_IMPORT_EXPORT_BUCKET', '')
if COURSE_IMPORT_EXPORT_BUCKET:
COURSE_IMPORT_EXPORT_STORAGE = 'contentstore.storage.ImportExportS3Storage'
else:
COURSE_IMPORT_EXPORT_STORAGE = DEFAULT_FILE_STORAGE
DATABASES = AUTH_TOKENS['DATABASES'] DATABASES = AUTH_TOKENS['DATABASES']
# The normal database user does not have enough permissions to run migrations. # The normal database user does not have enough permissions to run migrations.
......
...@@ -548,8 +548,6 @@ LOCALE_PATHS = (REPO_ROOT + '/conf/locale',) # edx-platform/conf/locale/ ...@@ -548,8 +548,6 @@ LOCALE_PATHS = (REPO_ROOT + '/conf/locale',) # edx-platform/conf/locale/
# Messages # Messages
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
COURSE_IMPORT_EXPORT_STORAGE = 'django.core.files.storage.FileSystemStorage'
##### EMBARGO ##### ##### EMBARGO #####
EMBARGO_SITE_REDIRECT_URL = None EMBARGO_SITE_REDIRECT_URL = None
......
...@@ -2182,9 +2182,6 @@ CSRF_COOKIE_SECURE = False ...@@ -2182,9 +2182,6 @@ CSRF_COOKIE_SECURE = False
REST_FRAMEWORK = { REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'openedx.core.lib.api.paginators.DefaultPagination', 'DEFAULT_PAGINATION_CLASS': 'openedx.core.lib.api.paginators.DefaultPagination',
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'PAGE_SIZE': 10, 'PAGE_SIZE': 10,
'URL_FORMAT_OVERRIDE': None, 'URL_FORMAT_OVERRIDE': None,
'DEFAULT_THROTTLE_RATES': { 'DEFAULT_THROTTLE_RATES': {
......
...@@ -141,7 +141,7 @@ class TestPaverServerTasks(PaverTestCase): ...@@ -141,7 +141,7 @@ class TestPaverServerTasks(PaverTestCase):
""" """
Test the "celery" task. Test the "celery" task.
""" """
settings = options.get("settings", "devstack_with_worker") settings = options.get("settings", "dev_with_worker")
call_task("pavelib.servers.celery", options=options) call_task("pavelib.servers.celery", options=options)
self.assertEquals(self.task_messages, [EXPECTED_CELERY_COMMAND.format(settings=settings)]) self.assertEquals(self.task_messages, [EXPECTED_CELERY_COMMAND.format(settings=settings)])
...@@ -292,7 +292,7 @@ class TestPaverServerTasks(PaverTestCase): ...@@ -292,7 +292,7 @@ class TestPaverServerTasks(PaverTestCase):
port=8001, port=8001,
) )
) )
expected_messages.append(EXPECTED_CELERY_COMMAND.format(settings="devstack_with_worker")) expected_messages.append(EXPECTED_CELERY_COMMAND.format(settings="dev_with_worker"))
self.assertEquals(self.task_messages, expected_messages) self.assertEquals(self.task_messages, expected_messages)
def expected_sass_commands(self, system=None, asset_settings=u"test_static_optimized"): def expected_sass_commands(self, system=None, asset_settings=u"test_static_optimized"):
......
...@@ -157,7 +157,7 @@ def celery(options): ...@@ -157,7 +157,7 @@ def celery(options):
""" """
Runs Celery workers. Runs Celery workers.
""" """
settings = getattr(options, 'settings', 'devstack_with_worker') settings = getattr(options, 'settings', 'dev_with_worker')
run_process(django_cmd('lms', settings, 'celery', 'worker', '--beat', '--loglevel=INFO', '--pythonpath=.')) run_process(django_cmd('lms', settings, 'celery', 'worker', '--beat', '--loglevel=INFO', '--pythonpath=.'))
...@@ -187,7 +187,7 @@ def run_all_servers(options): ...@@ -187,7 +187,7 @@ def run_all_servers(options):
""" """
settings = getattr(options, 'settings', DEFAULT_SETTINGS) settings = getattr(options, 'settings', DEFAULT_SETTINGS)
asset_settings = getattr(options, 'asset_settings', settings) asset_settings = getattr(options, 'asset_settings', settings)
worker_settings = getattr(options, 'worker_settings', 'devstack_with_worker') worker_settings = getattr(options, 'worker_settings', 'dev_with_worker')
fast = getattr(options, 'fast', False) fast = getattr(options, 'fast', False)
optimized = getattr(options, 'optimized', False) optimized = getattr(options, 'optimized', False)
......
...@@ -34,7 +34,7 @@ django-simple-history==1.6.3 ...@@ -34,7 +34,7 @@ django-simple-history==1.6.3
django-statici18n==1.1.5 django-statici18n==1.1.5
django-storages==1.4.1 django-storages==1.4.1
django-method-override==0.1.0 django-method-override==0.1.0
django-user-tasks==0.1.4 django-user-tasks==0.1.2
# We need a fix to DRF 3.2.x, for now use it from our own cherry-picked repo # We need a fix to DRF 3.2.x, for now use it from our own cherry-picked repo
#djangorestframework>=3.1,<3.2 #djangorestframework>=3.1,<3.2
git+https://github.com/edx/django-rest-framework.git@3c72cb5ee5baebc4328947371195eae2077197b0#egg=djangorestframework==3.2.3 git+https://github.com/edx/django-rest-framework.git@3c72cb5ee5baebc4328947371195eae2077197b0#egg=djangorestframework==3.2.3
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment