Commit Graph

69 Commits

Author SHA1 Message Date
Julia Eskew
368f221f0a Initial start on annotations. 2019-02-19 11:24:21 -05:00
Usman Khalid
ca910b6f27 Collect static asset URLs from static_replace.replace_static_urls
Allows users to keep track of which static asset URLs were found in given text,
and what they were replaced from/to.
2018-09-11 11:16:33 +09:30
Jeremy Bowman
bcaec3c5bb TE-2525 nose.tools removal part 1/2 2018-08-07 08:30:12 -04:00
Jeremy Bowman
d3d6272d8f PLAT-1873 to_deprecated_string() cleanup part 1 2018-01-08 13:51:42 -05:00
bmedx
29514cc2d2 Update clear_collectstatic_cache management command to Django 1.11 spec 2017-12-04 13:05:33 -05:00
John Eskew
02f26f55ce Remove unused imports. Push model imports down into relevant methods.
Mock out the static_replace modules in the proper location.
2017-10-05 11:12:52 -04:00
Jeremy Bowman
97f5fe035b Fixes for pytest database usage 2017-09-06 13:15:34 -04:00
cahrens
6f71706b17 Remove SlashSeparatedCourseKey from tests. 2017-08-07 14:49:30 -04:00
Andy Armstrong
93235d118d Reorder imports using isort (except lms and cms) 2017-05-30 16:04:54 -04:00
Ned Batchelder
4a568476fd Remove a number of unneeded super()-delegation methods 2017-04-27 14:12:56 -04:00
Toby Lawrence
8ab62b5b99 [PERF-351] Account for settings.STATIC_URL in XBlock resource URLs when
rewriting them.

In PERF-341, we adjusted the static_replace middleware to try and
exclude static XBlock resource URLs from being interpreted as the marker
URLs used to signify course assets in course content.  Since they both
started with /static, this could, and did, cause issues where linking
directly to the assets of an XBlock within, say, one of its templates,
would lead to that link being rewritten and ultimately being incorrect.
The fix attempted to see if the link started with the prefix that all
static XBlock resource URLs start, and if so, it returned them
unmodified.

We incorrectly assumed that our testing captured all cases, and since
we're here, we know that this was wrong.  We weren't accounting for cases
when the URLs being generated had the STATIC_URL configuration value
prefixed -- https://example.com/static/xblock/.... -- and so our direct
check of seeing if such a URL started with "/static/xblock" would always
fail, leading to the erroneous rewriting and nonsensical output.

This fix checks if the link either starts with the prefix OR if it
starts with the STATIC_URL value and contains the prefix overall.  There
is a small overlap between the STATIC_URL and the prefix we check for,
so an inconsistency could arise down the line if we changed our
STATIC_URL to use a difference base directory, but our tests will at
least catch the issue now.
2016-07-12 22:33:11 -04:00
Toby Lawrence
f15533dc8f [PERF-346] Add a second version component to versioned course asset URLs
This version component reflects the "version" of the StaticContent
objects which we cache server-side.  If the layout of those objects
changes between releases, errors occur when loading them from cache.

By using a separate version value, which can be incremented on its own
after a change has been made to the StaticContent class, we can avoid
loading older cached content and in turn take advantage of these changes
faster, without needing to intervene operationally.
2016-07-10 19:20:20 -04:00
Toby Lawrence
faaa30c02d [PERF-341] Fix up to not rewrite XBlock resource URLs.
For XBlocks that used their static.public resources in the rendered
output -- for example, a link to a bundled image -- those URLs would be
treated as course assets using the '/static/' prefix trick, and thus,
rewritten.  These rewritten URLs don't work because they aren't course
assets.

When course content authors are creating their courses, we provide them
a special shorthand way of writing URLs that reference assets they have
uploaded to the course. If they uploaded a file called my-lil-pony.mp4,
and they wanted to provide a link to it when users view the course, they
would use /static/my-lil-pony.mp4. This special prefix -- /static/ --
signals to the static_replace middleware that it's a course asset and we
should write /static/my-lil-pony.mp4 to a URL that properly references
the asset based on the course ID, and things like the configured asset
CDN, etc.

Thus, the URL /static/my-lil-pony.mp4 gets turned into something like:

/assets/courseware/<md5hash>/asset-v1:edX+Demo+2016T1+type@asset+block/my-lil-pony.mp4

when viewed in the courseware.

Now, we also serve actual static assets from a prefix of /static/. This
is stuff like our JavaScript and CSS, and the JS/CSS/etc of
XBlocks/XModules. These paths look like:

/static/js/lms-main_vendor.46d6a8c02600.js

or

/static/xblock/resources/xmodule.vertical_block/public/js/vertical_student_view.43727a907769.js

Normally, these paths are caught by nginx, before they reach the LMS,
and are served straight from the filesystem. However, if you were to
have one of these paths in your course content, the static_replace
middleware would see the /static/ at the front and immediately think
it's a course asset, and would dutifully rewrite the URL to something
like:

/assets/courseware/<md5hash>/asset-v1:edX+Demo+2016T1+type@asset+block/static_xblock_resources_xmodule.vertical_block_public_js_vertical_student_view.43727a907769.js

which is not a course asset, and so it will always fail to load.

Long story short, I changed the static_replace middleware to
specifically check to see if the path being matched starts with
/static/xblock/, and if so, it keeps the original instead of rewriting
it.
2016-06-23 14:47:02 -04:00
Toby Lawrence
849ebc5f22 [PERF-325] Add versioned course asset URLs when canonicalizing asset paths. 2016-06-15 08:04:52 -04:00
John Eskew
84da6e4c1f Address DaveO's comments. 2016-04-21 11:56:23 -04:00
John Eskew
8a9845c26e Remove ModuleStoreEnum.Type.xml 2016-04-12 11:53:51 -04:00
Toby Lawrence
b03ee49a82 Fix up the excluded extensions bit.
This adds the missing admin class, and registration of it, required to
actually change the value of the excluded extensions configuration.
2016-02-05 12:14:15 -05:00
Toby Lawrence
e57d1a2006 Add leading period so we don't get partial matches on extensions. 2016-02-02 10:07:13 -05:00
Toby Lawrence
1183f6cec9 Add the ability to exclude files from URL canonicalization.
To be able to more easily deal with same-origin issues, due to some course assets being loaded in an iframe, we're adding the ability to specify file extensions that should be excluded from URL canonicalization.  The default value is simply 'html', which means we won't rewrite asset links that point to files ending in .html.  Thus, they'll be loaded from the same origin as the parent page, and voila, no SOP issues.
2016-02-01 21:44:35 -05:00
Toby Lawrence
fb984206cf Add the migrations necessary for asset base URL support. 2016-01-08 13:16:50 -05:00
Toby Lawrence
77343df0d9 [PERF-224] Support to serve static assets from a CDN.
A base URL can now be configured which is, potentially, prepended to an
asset URL.  This allows a CDN, or caching server, to front static asset
requests, taking load off of the contentstore and speeding up page load
times.

Asset URL generation respects locked vs unlocked assets, and will not
generate links to locked assets that would traverse a CDN (even though
the authorization component of the contentserver middleware wouldn't
allow those links to work anyways).
2016-01-05 10:24:44 -05:00
Usman Khalid
6cb62f2697 Rebase upgrade Django to v1.8.5
Please note that this is a squshed commit and the work of:
Symbolist, macdiesel, nedbat, doctoryes, muzaffaryousaf and muhammad-ammar
2015-11-10 15:00:19 -05:00
Usman Khalid
dbcd1bf430 Use django.contrib.staticfiles instead of django-staticfiles.
TNL-3137
2015-10-06 19:52:38 +05:00
Calen Pennington
64f3229ce0 Fix tests revealed to be in error by autospec. 2015-09-29 09:30:38 -04:00
Ned Batchelder
60c2e45fbc Added autospec=True to mocks being used incorrectly.
The tests now fail!
2015-09-29 06:56:30 -04:00
Brian Beggs
c26bb9188a Revert "Upgrade django-pipeline and staticfiles" 2015-09-23 15:52:24 -04:00
Usman Khalid
158bdf4d09 Use django.contrib.staticfiles instead of django-staticfiles.
TNL-3137
2015-09-22 20:39:44 +05:00
Ned Batchelder
777be12ada Add missing __init__.py files 2015-04-30 07:43:08 -04:00
Syed Hassan Raza
825aaed67f Split course's assests can access through '/' in asset url 2015-04-08 11:22:25 -04:00
Akiva Leffert
66f41e1d9f Make static URLs absolute in handouts, updates, and about for mobile API
JIRA: MA-147
2014-12-03 16:25:48 -05:00
christopher lee
b89113e114 Revert "Make static URLs absolute in handouts, updates, and about for mobile API"
This reverts commit fb6579abfdb6fc9fb8bc9233554ff5c6e9215659.
2014-12-03 16:24:27 -05:00
Akiva Leffert
1088855d0b Make static URLs absolute in handouts, updates, and about for mobile API
JIRA: MA-147
2014-12-03 16:18:39 -05:00
Sarina Canelake
20e2ee9a57 s/pylint: disable=E0611/pylint: disable=no-name-in-module/ 2014-12-01 11:22:09 -05:00
stv
55de42d19c Fix PEP8: E122 continuation line missing
indentation or outdented
2014-11-24 20:46:35 -05:00
Don Mitchell
78879ebc18 Asset urls must start w/ slash
LMS-11233
2014-08-21 12:11:27 -04:00
Nimisha Asthagiri
eecff6e0aa ModulestoreEnum class. 2014-06-27 14:37:35 -04:00
Calen Pennington
cfcbdc0145 Move to OpaqueKey implementations from the external library
[LMS-2757]
2014-05-29 17:03:35 -04:00
David Adams
384bac2f0e Parse urls with query params for ^/static
Query params with a value that starts with /static should have their values converted to the full location.
  Query params with a value that does not start with /static should be left unchanged.
2014-05-28 10:21:55 -07:00
Calen Pennington
e2bfcf2a36 Make course ids and usage ids opaque to LMS and Studio [partial commit]
This commit updates common/djangoapps.

These keys are now objects with a limited interface, and the particular
internal representation is managed by the data storage layer (the
modulestore).

For the LMS, there should be no outward-facing changes to the system.
The keys are, for now, a change to internal representation only. For
Studio, the new serialized form of the keys is used in urls, to allow
for further migration in the future.

Co-Author: Andy Armstrong <andya@edx.org>
Co-Author: Christina Roberts <christina@edx.org>
Co-Author: David Baumgold <db@edx.org>
Co-Author: Diana Huang <dkh@edx.org>
Co-Author: Don Mitchell <dmitchell@edx.org>
Co-Author: Julia Hansbrough <julia@edx.org>
Co-Author: Nimisha Asthagiri <nasthagiri@edx.org>
Co-Author: Sarina Canelake <sarina@edx.org>

[LMS-2370]
2014-05-07 12:54:49 -04:00
Jay Zoldak
bc30addfb9 Unicode changes to support QRF
fixing unit tests

fixing merge error

fixing xqueue submission issue with unicode url (trial 0.1)

fixing fotmats as commented upon

removing yaml file language selection

Unicode changes to support QRF

removed unnecessary pass in modulestore/init.py

fixing merge error

fixing fotmats as commented upon

removing yaml file language selection

fixing pep8 violations

- fixing pylint violations

pylint violation

fixing line spaces and formats

ignore pylint E1101

remove empty line

fixing pylint violations

 pep8 violations

bulk mail unicode/decode

fix migration error

fix pep8 just to push again

more unicode/decode
Final changes to comments and error messages.
2014-01-30 16:20:36 -05:00
David Baumgold
fb13bed947 Updating comments and docs for MITx -> edX transition 2013-12-10 13:21:18 -05:00
David Adams
20f1feb7b1 Fix for static path parsing
When a url contains a query parameter it gets incorrectly parsed
when replacing the /static portion.

This fix handles urls with query parameters.
2013-10-25 13:02:29 -07:00
David Baumgold
d97921e6e2 Convert Studio JS to use require.js 2013-10-04 13:43:50 -04:00
Jay Zoldak
c8949b99d1 Disable pylint violation E0611 when importing assert_* methods from nose.tools
Cleaned up files with muliline imports

Cleaned up files that do not use these imports

Misread comment
2013-08-27 16:21:33 -04:00
ichuang
0d938d3940 Merge branch 'master' of github.com:edx/edx-platform into feature/ichuang/import-with-no-static
Conflicts:
	lms/djangoapps/courseware/tests/test_module_render.py
2013-08-20 23:40:09 -04:00
ichuang
95952bd693 add tests of static_asset_path and importing with no static;
fix (again) static_replace to work with static_asset_path
2013-08-20 23:30:26 -04:00
ichuang
220ec522a1 Merge branch 'master' of github.com:edx/edx-platform into feature/ichuang/import-with-no-static
Conflicts:
	common/djangoapps/static_replace/__init__.py
	common/djangoapps/xmodule_modifiers.py
	lms/djangoapps/courseware/courses.py
	lms/djangoapps/courseware/module_render.py
2013-08-19 08:24:35 -04:00
Chris Dodge
033f922ec0 add a try catch around the staticstorage lookup, which can throw an exception 2013-08-17 10:33:59 -04:00
Chris Dodge
5298f54f4c fix tests 2013-08-15 22:58:02 -04:00
Chris Dodge
cff93d324b WIP 2013-08-15 22:58:02 -04:00