Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
e06df4ba
Commit
e06df4ba
authored
Aug 18, 2016
by
Simon Chen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ECOM-5264 Make sure the banner image is stored at the correct path in S3
parent
16e6f8c7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
52 additions
and
3 deletions
+52
-3
course_discovery/apps/course_metadata/models.py
+2
-2
course_discovery/apps/course_metadata/tests/test_models.py
+1
-1
course_discovery/apps/course_metadata/tests/test_utils.py
+31
-0
course_discovery/apps/course_metadata/utils.py
+18
-0
No files found.
course_discovery/apps/course_metadata/models.py
View file @
e06df4ba
...
@@ -15,13 +15,13 @@ from haystack.query import SearchQuerySet
...
@@ -15,13 +15,13 @@ from haystack.query import SearchQuerySet
from
simple_history.models
import
HistoricalRecords
from
simple_history.models
import
HistoricalRecords
from
sortedm2m.fields
import
SortedManyToManyField
from
sortedm2m.fields
import
SortedManyToManyField
from
stdimage.models
import
StdImageField
from
stdimage.models
import
StdImageField
from
stdimage.utils
import
UploadToAutoSlugClassNameDir
from
taggit.managers
import
TaggableManager
from
taggit.managers
import
TaggableManager
from
course_discovery.apps.core.models
import
Currency
,
Partner
from
course_discovery.apps.core.models
import
Currency
,
Partner
from
course_discovery.apps.course_metadata.query
import
CourseQuerySet
from
course_discovery.apps.course_metadata.query
import
CourseQuerySet
from
course_discovery.apps.course_metadata.utils
import
clean_query
from
course_discovery.apps.course_metadata.utils
import
clean_query
from
course_discovery.apps.ietf_language_tags.models
import
LanguageTag
from
course_discovery.apps.ietf_language_tags.models
import
LanguageTag
from
course_discovery.apps.course_metadata.utils
import
UploadToFieldNamePath
logger
=
logging
.
getLogger
(
__name__
)
logger
=
logging
.
getLogger
(
__name__
)
...
@@ -587,7 +587,7 @@ class Program(TimeStampedModel):
...
@@ -587,7 +587,7 @@ class Program(TimeStampedModel):
max_hours_effort_per_week
=
models
.
PositiveSmallIntegerField
(
null
=
True
,
blank
=
True
)
max_hours_effort_per_week
=
models
.
PositiveSmallIntegerField
(
null
=
True
,
blank
=
True
)
authoring_organizations
=
SortedManyToManyField
(
Organization
,
blank
=
True
,
related_name
=
'authored_programs'
)
authoring_organizations
=
SortedManyToManyField
(
Organization
,
blank
=
True
,
related_name
=
'authored_programs'
)
banner_image
=
StdImageField
(
banner_image
=
StdImageField
(
upload_to
=
UploadTo
AutoSlugClassNameDir
(
path
=
'/media/programs/banner_images'
,
populate_from
=
'uuid
'
),
upload_to
=
UploadTo
FieldNamePath
(
populate_from
=
'uuid'
,
path
=
'media/programs/banner_images
'
),
blank
=
True
,
blank
=
True
,
null
=
True
,
null
=
True
,
variations
=
{
variations
=
{
...
...
course_discovery/apps/course_metadata/tests/test_models.py
View file @
e06df4ba
...
@@ -362,7 +362,7 @@ class ProgramTests(TestCase):
...
@@ -362,7 +362,7 @@ class ProgramTests(TestCase):
def
test_banner_image
(
self
):
def
test_banner_image
(
self
):
self
.
program
.
banner_image
=
make_image_file
(
'test_banner.jpg'
)
self
.
program
.
banner_image
=
make_image_file
(
'test_banner.jpg'
)
self
.
program
.
save
()
self
.
program
.
save
()
image_url_prefix
=
'{}
program
/'
.
format
(
settings
.
MEDIA_URL
)
image_url_prefix
=
'{}
media/programs/banner_images
/'
.
format
(
settings
.
MEDIA_URL
)
self
.
assertIn
(
image_url_prefix
,
self
.
program
.
banner_image
.
url
)
self
.
assertIn
(
image_url_prefix
,
self
.
program
.
banner_image
.
url
)
for
size_key
in
self
.
program
.
banner_image
.
field
.
variations
:
for
size_key
in
self
.
program
.
banner_image
.
field
.
variations
:
# Get different sizes specs from the model field
# Get different sizes specs from the model field
...
...
course_discovery/apps/course_metadata/tests/test_utils.py
0 → 100644
View file @
e06df4ba
import
os
import
ddt
from
django.test
import
TestCase
from
course_discovery.apps.course_metadata.tests.factories
import
ProgramFactory
from
course_discovery.apps.course_metadata
import
utils
@ddt.ddt
class
UploadToFieldNamePathTests
(
TestCase
):
"""
Test the utiltity object 'UploadtoFieldNamePath'
"""
def
setUp
(
self
):
super
(
UploadToFieldNamePathTests
,
self
)
.
setUp
()
self
.
program
=
ProgramFactory
()
@ddt.data
(
(
'/media/program'
,
'uuid'
,
'.jpeg'
),
(
'/media/program'
,
'title'
,
'.jpeg'
),
(
'/media'
,
'uuid'
,
'.jpeg'
),
(
'/media'
,
'title'
,
'.txt'
),
(
''
,
'title'
,
''
),
)
@ddt.unpack
def
test_upload_to
(
self
,
path
,
field
,
ext
):
upload_to
=
utils
.
UploadToFieldNamePath
(
populate_from
=
field
,
path
=
path
)
upload_path
=
upload_to
(
self
.
program
,
'name'
+
ext
)
expected
=
os
.
path
.
join
(
path
,
str
(
getattr
(
self
.
program
,
field
))
+
ext
)
self
.
assertEqual
(
upload_path
,
expected
)
course_discovery/apps/course_metadata/utils.py
View file @
e06df4ba
from
stdimage.utils
import
UploadTo
RESERVED_ELASTICSEARCH_QUERY_OPERATORS
=
(
'AND'
,
'OR'
,
'NOT'
,
'TO'
,)
RESERVED_ELASTICSEARCH_QUERY_OPERATORS
=
(
'AND'
,
'OR'
,
'NOT'
,
'TO'
,)
...
@@ -24,3 +26,19 @@ def clean_query(query):
...
@@ -24,3 +26,19 @@ def clean_query(query):
query
=
query
.
replace
(
old
,
new
)
query
=
query
.
replace
(
old
,
new
)
return
query
return
query
class
UploadToFieldNamePath
(
UploadTo
):
"""
This is a utility to create file path for uploads based on instance field value
"""
def
__init__
(
self
,
populate_from
,
**
kwargs
):
self
.
populate_from
=
populate_from
super
(
UploadToFieldNamePath
,
self
)
.
__init__
(
populate_from
,
**
kwargs
)
def
__call__
(
self
,
instance
,
filename
):
field_value
=
getattr
(
instance
,
self
.
populate_from
)
self
.
kwargs
.
update
({
'name'
:
field_value
})
return
super
(
UploadToFieldNamePath
,
self
)
.
__call__
(
instance
,
filename
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment