Commit Graph

263 Commits

Author SHA1 Message Date
Andy Armstrong
0f808cec78 Implement theme admin UI to support previewing
LEARNER-2017
2017-07-27 17:24:31 -04:00
Jesse Shapiro
fa9c09f9fe Remove Enterprise SSO hooks 2017-07-21 18:24:09 -04:00
Andy Armstrong
aeecf34387 Enable conditional pre-start-date access to courses
LEARNER-1854
2017-07-14 14:00:48 -04:00
Robert Raposa
2e80c1e66b Refactor, enhance, and adjust unified_course_view flag.
This includes several general enhancement in addition
to the fixes for unified_course_view:
1. Add support for default when no waffle flag defined.
2. Add support for table_blacklist to assertNumQueries.
3. Rename flag to 'course_experience.course_outline_page'.
4. Change flag default to True when it is not defined.
2017-06-29 11:04:35 -04:00
Marko Jevtic
75531b2fef [LEARNER-437] Reflect discount on the Program About Page (WL) 2017-06-23 17:34:06 +02:00
Marko Jevtic
d48100d386 [LEARNER-1367] Move Program Marketing page from private themes repo to edx platform repo
[LEARNER-311] Enable a purchase button on the Program page - platform (WL)
2017-06-23 16:27:37 +02:00
Uman Shahzad
8b65ca17c5 Migrate to latest, split python-social-auth.
PSA was monolothic, now split, with new features, like
a DB-backed partial pipeline. FB OAuth2 version also upped.

Partial pipelines don't get cleared except when necessary.
They persist for special cases like change of browser while
still mid-pipeline (i.e. email validation step).

Refactor, cleanup, and update of a lot of small things as well.

PLEASE NOTE the new `social_auth_partial` table.
2017-06-20 22:05:36 +05:00
Harry Rein
bdf38ae00e Implemented an upgrade verification sock.
This sock sits at the bottom of both the home and the course content pages. It allows the user to click a 'Learn More' button to open a panel that allows the user to navigate to the upgrade checkout page. The sock is only shown for users that have not yet upgraded in a course that has a verification upgrade date that has not yet passed. Python tests cover the various course mode and upgrade dates.
2017-06-15 13:10:34 -04:00
Andy Armstrong
79acb5c5be Reorder LMS imports using isort 2017-06-11 21:48:06 -04:00
Calen Pennington
14fed7a73e Merge pull request #15265 from edx/ret/upsell-cookie
Upgrade course experiment
2017-06-08 16:04:29 -04:00
Nimisha Asthagiri
fdafd53a66 Upsell Courses in Courseware, CourseOutline, Discussions, Progress 2017-06-08 14:29:42 -04:00
Robert Raposa
fcf4efc65f Add unit test for jump_to for course location. 2017-06-07 16:39:49 -04:00
Nimisha Asthagiri
4c2bd153ec Enable optimizely on courseware 2017-06-06 16:01:24 -04:00
Andy Armstrong
3cffded2d1 Improve course breadcrumbs
LEARNER-877
2017-06-05 18:06:05 -04:00
Robert Raposa
eaab2cf444 Add course overrides of waffle flags. 2017-06-01 15:12:50 -04:00
Jillian Vogel
6ca8a702ae Mask grades on progress page according to "Show Correctness" setting. 2017-05-31 16:57:38 +02:00
Diana Huang
3e71a45349 Only show preview bar if student can view it. 2017-05-18 09:16:28 -04:00
Renzo Lucioni
78a9b1f0ae Remove use of read_cached_programs switch
The read_cached_programs switch was used to control the release of changes for reading programs exclusively from the cache. With those changes stable, the switch is no longer necessary.

LEARNER-382
2017-05-12 11:06:08 -04:00
Diana Huang
e12a704cea Add new course dates fragment.
Also add it to the course home page.
2017-05-04 20:53:42 -04:00
Andy Armstrong
2167584e5e Unify the home and course tabs
LEARNER-609
2017-05-01 17:22:28 -04:00
Calen Pennington
1811f7235f Minimize the number of queries done while noop updating a user-preference 2017-04-28 12:26:41 -04:00
Ahsan Ulhaq
650695845e Financial aid for courses with no course overview
ECOM-7688
2017-04-20 13:55:22 +05:00
Andy Armstrong
da1ac4664e Implement common redirect logic for all course tabs
LEARNER-76
2017-04-12 16:05:32 -04:00
Eric Fischer
7d2dbf4b76 Waffle Utils cleanup
Turn override into a sensible default that calls both of the
for_request and in_model submethods, which are themselves still
avaiable if needed.
2017-04-11 13:31:30 -04:00
Nimisha Asthagiri
1503e5f768 Grade only engaged learners
Add a new waffle switch that allows us to assume zero grades for
learners who have no entry previously recorded, and another to
disable persisting grades for unengaged learners.

TNL-6691
2017-04-11 10:41:57 -04:00
Andy Armstrong
e7a4ed742a Add query count tests for old and new course pages 2017-04-05 21:35:34 -04:00
Andy Armstrong
0325425c8c Add data sharing consent redirect for more course tabs
LEARNER-394
2017-03-31 19:12:13 -04:00
Ahsan Ulhaq
9e9c99ac0a Add eligible for financial aid and sync with course discovery
ECOM-7532
2017-03-31 14:35:56 +05:00
cahrens
e5035746bf Introduce EnrollmentTrackUserPartition.
TNL-6674
2017-03-30 12:24:48 -04:00
Robert Raposa
ac7e6bec92 Refactor to navigate directly to courseware page. 2017-03-24 13:44:37 -04:00
Diana Huang
6f5249d399 Beginning of python unit tests. 2017-03-22 13:00:38 -04:00
Jillian Vogel
25383a603e Ensure Enterprise-integrated courses require user consent before granting access to Wiki and Discussion forum.
* User-facing links are gated; internal services are not.
* Adds view decorator data_sharing_consent_required
* Renames `get_course_specific_consent_url` to `get_enterprise_consent_url`,
  which now checks `consent_needed_for_course` before returning a consent URL.
2017-03-10 09:29:24 +10:30
Hasnain
d6d2b2d50f Add program marketing view
This change adds the URL configuration and Django view required
to implement a program marketing page. It is left to theme builders
to implement a template that fulfills their own UX requirements.

WL-766
2017-03-02 14:38:01 -05:00
David Ormsbee
ca1f76cedb Move more tests to use bulk_operations. 2017-02-24 15:21:45 -05:00
David Ormsbee
2051c90924 Test Speedup: Isolate Modulestore Signals
There are a number of Django Signals that are on the modulestore's
SignalHandler class, such as SignalHandler.course_published. These
signals can trigger very expensive processes to occur, such as course
overview or block structures generation. Most of the time, the test
author doesn't care about these side-effects.

This commit does a few things:

* Converts the signals on SignalHandler to be instances of a new
  SwitchedSignal class, that allows signal sending to be disabled.

* Creates a SignalIsolationMixin helper similar in spirit to the
  CacheIsolationMixin, and adds it to the ModuleStoreIsolationMixin
  (and thus to ModuleStoreTestCase and SharedModuleStoreTestCase).

* Converts our various tests to use this new mechanism. In some cases,
  this means adjusting query counts downwards because they no longer
  have to account for publishing listener actions.

Modulestore generated signals are now muted by default during test runs.
Calls to send() them will result in no-ops. You can choose to enable
specific signals for a given subclass of ModuleStoreTestCase or
SharedModuleStoreTestCase by specifying an ENABLED_SIGNALS class
attribute, like the following example:

    from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase

    class MyPublishTestCase(ModuleStoreTestCase):
        ENABLED_SIGNALS = ['course_published', 'pre_publish']

You should take great care when disabling signals outside of a
ModuleStoreTestCase or SharedModuleStoreTestCase, since they can leak
out into other tests. Be sure to always clean up, and never disable
signals outside of testing. Because signals are essentially process
globals, it can have a lot of unpleasant side-effects if we start
mucking around with them during live requests.

Overall, this change has cut the total test execution time for
edx-platform by a bit over a third, though we still spend a lot in
pre-test setup during our test builds.

[PERF-413]
2017-02-23 10:31:16 -05:00
Jesse Shapiro
9a573de533 Add consent check to course access prerequisites; add utility functions to provide interface to course-specific consent in Enterprise app 2017-02-09 13:49:57 -05:00
David Ormsbee
5ef1e08050 Disable student state writes for crawlers.
When crawlers like edX-downloader make requests on courseware, they are
often concurrently loading many units in the same sequence. This causes
contention for the rows in courseware_studentmodule that store the
student's state for various XBlocks/XModules, most notably for the
sequence, chapter, and course -- all of which record and update user
position information when loaded.

It would be nice if we could actually remove these writes altogether
and come up with a cleaner way of keeping track of the user's position.
In general, GETs should be side-effect free. However, any such change
would break backwards compatibility, and would require close
coordination with research teams to make sure they weren't negatively
affected.

This commit identifies crawlers by user agent (CrawlersConfig model),
and blocks student state writes if a crawler is detected. FieldDataCache
writes simply become no-ops. It doesn't actually alter the rendering
of the courseware in any way -- the main impact is that the blocks
won't record your most recent position, which is meaningless for
crawlers anyway.

This can also be used as a building block for other policy we want to
define around crawlers. We just have to be mindful that this only works
with "nice" crawlers who are honest in their user agents, and that
significantly more sophisticated (and costly) measures would be
necessary to prevent crawlers that try to be even trivially sneaky.

[PERF-403]
2017-01-26 09:36:53 -05:00
Eric Fischer
507e621ccc Revert "Merge pull request #14324 from edx/efischer/revertins"
This reverts commit c7d2d601b8, reversing
changes made to fb2173f43e.
2017-01-18 10:56:13 -05:00
Ari Rizzitano
54a48a3227 [courseware] generate sequence-specific titles server-side (AC-695)
[courseware] generate sequence-specific titles server-side (AC-695)

[courseware] generate sequence-specific titles server-side (AC-695)

case for empty subsections [AC-695]

move title logic into courseware context method [AC-695]

pep8

coffeescript -> js

js mistake

jslint

refactor sequence title generation slightly

missed a line

line too long

python is not javascript

ugh js

ugh js part 2
2017-01-14 17:55:09 -05:00
Eric Fischer
0b620ebbc1 Revert "Merge pull request #14225 from edx/efischer/tnl-6108"
This reverts commit 8b8cf5f9e0, reversing
changes made to 2716ffbf8e.
2017-01-12 13:50:05 -05:00
Eric Fischer
6845c64977 Hide after course end
Hijacks the existing hide_after_due field to be repected as "hide after course
end" for self-paced courses. Includes tests.

TNL-6108
2017-01-12 09:12:54 -05:00
Nimisha Asthagiri
99e6d53939 Preload definitions when collecting block structures 2016-12-29 08:51:26 -05:00
Dmitry Viskov
fc0577d081 Hide bookmarks link in the LTI mode 2016-12-22 09:56:33 -05:00
asadazam93
01f3233a50 Fix InvalidKeyError on render xblock 2016-12-20 13:03:50 +05:00
Nimisha Asthagiri
aca69f78f2 Update Subsection Grade Report to differentiate Not Attempted and 0
TNL-5990
2016-11-30 12:36:26 -05:00
Gregory Martin
f0cd29f02a Revert "Merge pull request #13915 from edx/revert-13794-yro_implement-dateutil"
This reverts commit d59ab18b27, reversing
changes made to 0ebab35e89.
2016-11-07 17:04:13 -05:00
Jesse Zoldak
ec880138d2 Revert "Implement DateUtils in LMS" 2016-11-04 07:50:26 -04:00
Gregory Martin
3fd16eb6be Implement DateUtils in LMS 2016-11-03 10:06:10 -04:00
Sanford Student
a1d5ea905d Persistent Course Grades Glue Layer
Initial commit

TNL-5484
2016-10-27 14:56:45 -04:00
Nimisha Asthagiri
4a20370f37 Update CourseGradeFactory.create to be read_only by default
TNL-5835
2016-10-25 20:49:43 -04:00