Commit Graph

7647 Commits

Author SHA1 Message Date
Feanil Patel
be23278034 Merge pull request #24422 from edx/feanil/archbom-1298-login-page-error-on-invalid-email
ARCHBOM-1298 Validate before accessing email parts.
2020-07-08 14:16:16 -04:00
Feanil Patel
f2ac18049b Validate before accessing email parts.
For somereason earlier validation is not ensuring that we have a valid e-email.
In this case, break out of the flow since we don't have a domain that's in our
list and log the user's id so that we can learn more about when this happens.

By a reading of the code flow, it doesn't seem like it should be possible except
with a handful of users that have invalid e-mail addresses in the database but it
seems to be happening pretty regularly.
2020-07-08 13:35:55 -04:00
Dillon Dumesnil
f0b4c75289 AA-226: Adding Authentication classes to endpoints for mobile use
The class BearerAuthenticationAllowInactiveUser is needed for the
mobile app to authenticate. The other Auth classes are to support
the standard work flows.
2020-07-08 10:06:58 -07:00
Robert Raposa
371f89838b use flag's everyone setting when no request (#24416)
This is Phase 2 if a rollout started here:
https://github.com/edx/edx-platform/pull/24392

When a flag is being used without a request, we will
return True if the flag's everyone status is set to
True.

The current implementation is to use flag_undefined_default,
which is deprecated and we are trying to remove it.

ARCHBOM-1331
2020-07-08 11:12:56 -04:00
Waheed Ahmed
4f80fd6540 Improve password reset rate limit.
Used django-ratelimit instead of django-ratelimit-backend
to configure two different rate limit configurations for same
endpoint.

PROD-1708
2020-07-08 16:19:07 +05:00
Waheed Ahmed
a6a69224d1 Ratelimit login_user endpoint.
Ratelimited `login_user` endpoint using `django-ratelimit`, also
decreased default value of logistration rate limit to 100 requests
per five minutes per IP.

PROD-1877
2020-07-08 15:36:11 +05:00
Robert Raposa
081a751d2c fix temp_flag_no_request_default_match (#24409)
Fix bug in metric temp_flag_no_request_default_match.
Metric renamed to temp_flag_no_request_default_match_2
to ensure we are looking at the right data.

This extends Phase 1 of the rollout, as documented in:
https://github.com/edx/edx-platform/pull/24392

ARCHBOM-1331
2020-07-07 16:32:11 -04:00
Robert Raposa
10ab63995a remove temporary USE_DEFAULT_TRUE_NAMESPACE (#24404)
Once USE_DEFAULT_TRUE_NAMESPACE is fully rolled out
and proves to return True where we wish, we can
remove this temporary roll-out flag introduced in:
https://github.com/edx/edx-platform/pull/24322

ARCHBOM-1316
2020-07-07 15:07:59 -04:00
Christie Rice
b81888323e Revert "MICROBA-393 Add customized partner report headings" (#24406) 2020-07-07 14:12:52 -04:00
Christie Rice
011259bb3a MICROBA-393 Add customized partner report headings (#24321)
* MICROBA-393 Add customized partner report headings

* Add sorting
2020-07-07 13:03:59 -04:00
Robert Raposa
9b9259c160 phase 1: update waffle no request default (#24392)
This is Phase 1 of a 2 part rollout.

Here, we want to ensure that checking if the waffle flag
is set to active for everyone would provide the same value
as the current implementation for calls that have no request.
The current implementation is to use flag_undefined_default,
which is deprecated and we are trying to remove.

We are adding a custom metric to see if they match in
Production. If all goes well, in Phase 2 we will switch to
this new approach.

ARCHBOM-1331
2020-07-07 12:01:08 -04:00
Aura Milena Alba
6026a98e11 Remove pattern library in course_home.py (#24157)
[BD-10] [DEPR-83][DEPR-81] Remove pattern library in course_home.py
2020-07-07 11:23:22 -04:00
Christie Rice
31a525580d Add sorting 2020-07-07 10:59:58 -04:00
Christie Rice
8f64860b85 MICROBA-393 Add customized partner report headings 2020-07-07 10:59:58 -04:00
Florian Haas
26281cbe36 Fix profile image URLs for image storage on non-public S3 buckets
In image_helpers.py, the _get_profile_image_urls() method would append
"?v=<version>" to the query string for serving profile images.

This might break serving profile images if

* EDXAPP_PROFILE_IMAGE_BACKEND was configured with its class option
  set to django.storages.s3boto3.S3Boto3Storage (or its deprecated
  predecedessor, django.storages.s3boto.S3BotoStorage), and
* that backend used signed URLs with query-string authentication (i.e.
  was *not* configured with an S3 custom domain).

When both the above conditions are met, then the URL returned by the
storage backend's url() method already contains "?", and
_get_profile_image_urls() would add another. This results in a query
string that doesn't exactly violate RFC 3986, but is discouraged by
it.[1]

Amazon S3 itself may be able to parse these query strings correctly,
but other S3 API implementations (such as Ceph radosgw[2]) may not,
and the problem is easily avoided by just looking for "?" in the
rendered URL, and using "&v=<version>" instead if we find a match.

The proper way of appending the v=<version> query parameter would
probably be to pull the URL and the query string apart and then back
together[3], but that's most likely overdoing it.

[1] https://tools.ietf.org/html/rfc3986#section-3.4 says:
"However, as query components are often used to carry identifying
information in the form of "key=value" pairs and one frequently used
value is a reference to another URI, it is sometimes better for
usability to avoid percent- encoding those characters." ("Those
characters" being "/" and "?".)

[2] https://docs.ceph.com/docs/master/radosgw/s3/

[3] https://docs.python.org/3/library/urllib.parse.html
2020-07-06 11:09:16 +02:00
Robert Raposa
7f22041fc1 ARCHBOM-1316: always enable some course_experience flags (#24322)
In order to remove the deprecated flag_undefined_default=True
argument, this commit updates the following flags to always be
enabled using a new temporary class:

- course_experience.course_outline_page
- course_experience.unified_course_tab

Adds a temporary setting `USE_DEFAULT_TRUE_NAMESPACE`,
to enable a monitored rollout of this change.

TNL-7061 is the ticket where these flags will actually be
removed. This requires more careful work including removing
all dead code, and potentially refactoring tests that were
testing shared functionality, but only when the flag was
False.

ARCHBOM-1316
2020-07-02 12:00:23 -04:00
Dillon Dumesnil
35549f56ba AA-220: Making Library Content an Aggregator CompletionMode
This change will prevent Library Content from being marked as
complete on view and the corresponding version bump to
edx-completion contains code that will start looking at the
children of the library content for completeness.
2020-07-01 17:33:54 -04:00
Awais Qureshi
d156cae333 Merge pull request #24330 from eduNEXT/lmm/regex_deprecation_warning
[BD-6] Fix invalid escape sequence deprecation warning.
2020-06-30 19:13:33 +05:00
Mike OConnell
2271f3112e Merge pull request #24347 from edx/moco/ENT-3049-2
Check current enterprise for consent
2020-06-29 14:14:19 -04:00
Mike O'Connell
d191b52ee9 Check current enterprise for consent
When checking if consent is needed, ignore any enterprise
learner details that are not for the learner's currently
active enterprise.

ENT-3049
2020-06-29 12:57:03 -04:00
Michael Terry
3030efec78 AA-177: Add masquerading for course home MFE
- Looks at masquerading config for dates, outline, metadata, and
  celebration APIs in course_home_api / courseware_api.
- Consolidates and cleans up places we check whether masquerading
  gives us full access to a course.
2020-06-29 12:37:47 -04:00
Aarif
9e34cb3df9 Removed deprecated future imports (#24295) 2020-06-28 23:40:03 +05:00
Luis Moreno
600b8bcdd5 Fix invalid escape sequence deprecation warning. 2020-06-26 13:49:41 -04:00
Danial Malik
c962423bbc Replace track calls with eventtracking in task_track and server_track (#24282)
* Replace track calls with eventtracking in task_track and server_track

* Making  events compatible with events emitted via track app

* Fixed broken tests and quality violation

* Removed useless changes in shim. using  in  to have  and  keys in event context

Co-authored-by: zia.fazal@arbisoft.com <zia.fazal@arbisoft.com>
2020-06-26 13:49:16 -04:00
Zainab Amir
0b80987ba0 Add vem_enabled_courses_percentage (#24294)
Add a field to VEM config model that will decide the percentage of
courses allowed to go to VEM pipeline. The courses that don't meet the
criteria will go to VEDA.

PROD-1722
2020-06-26 14:30:42 +05:00
Calen Pennington
d933541dad Merge pull request #24302 from cpennington/prioritize-access-denied-messages
Prioritize access denied messages
2020-06-25 10:15:57 -04:00
Calen Pennington
aef3a20e5d Prioritize access denials in block transformers from groups that have messages associated with them 2020-06-25 09:51:50 -04:00
Muhammad Ammar
6e4d8e9b08 Merge pull request #24283 from edx/ammar/ENT-2998-override-enrollment-attributes
override enrollment attributes for learners
2020-06-24 22:05:57 +05:00
muhammad-ammar
4a3eb16296 override enrollment attributes for learners
ENT-2998
2020-06-24 21:37:24 +05:00
Kyle McCormick
c3d7ab9943 Fix programs cache ADR formatting (#24320) 2020-06-24 11:55:43 -04:00
Nimisha Asthagiri
a219381361 Update 0001-refactor-waffle-flag-default.rst (#24308) 2020-06-23 21:03:06 -04:00
Robert Raposa
f060872878 update waffle flag and docs (#24299)
- update ADR to provide more alternatives for updating
the default value of a flag.
- add a `flag_` prefix to the flag metrics
- add module-level note about flag metrics
- add NewRelic query example and warning
- fix typo in toggle annotation

ARCHBOM-1302
2020-06-23 13:55:06 -04:00
Nick
e8fc653c86 Merge pull request #24285 from edx/ndalfonso/AA-142-calendar-sync-ses
AA-142 calendar sync ses
2020-06-23 13:52:42 -04:00
Nicholas D'Alfonso
5b1d181491 AA-142 calendar sync ses
- set up util function to use Amazon SES for sending calendar
  sync emails.
- remove old sailthru code which we originally implemented for
  this functionality
- include ADR on our decision to use SES instead of Sailthru.
2020-06-23 12:14:03 -04:00
Aarif
27480cdd2f Removed deprecated future imports 2020-06-23 18:51:43 +05:00
Robert Raposa
a1ed944c72 add temp waffle flag default metric (#24284)
The argument flag_undefined_default is soon to be retired
once ARCHBOM-132 is closed. The following will be used to
help ensure the rollout is complete.

- Add a temporary metric if flag_undefined_default is used.
- Add deprecation warning for flag_undefined_default.
- Add minor fix for waffle flag metric when no request found.

ARCHBOM-132
2020-06-22 13:53:17 -04:00
Robert Raposa
5ea9d313ad add ADR for waffle flag default (#24272)
We are changing how we handle updates to a waffle flag
default, and the ADR explains why and how.

ARCHBOM-1303
2020-06-22 10:12:10 -04:00
Robert Raposa
343a5a8a74 update waffle flag custom metrics (#24270)
The previous version of this code used the Django Setting
ENABLE_WAFFLE_FLAG_METRIC to determine whether to add a single
metric with a dict of details about all flags. Due to
NewRelic's 256 character limit on the metric value, this was
getting truncated.

This new version instead uses the Django Setting
WAFFLE_FLAG_CUSTOM_METRICS, a list of waffle flag names to
instrument.

The name of each custom metric will match the name of the flag.
The value of the custom metric could be False, True, or Both.

The value Both would mean that the flag had both a True and False
value at different times during the transaction. This is most
likely due to having a check_before_waffle_callback, as is the
case with CourseWaffleFlag.

ARCHBOM-132
2020-06-22 10:11:40 -04:00
Ahtisham Shahid
5707bbdc90 updated confirm_email field type (#24205)
* updated confirm_email field type and removed confirm email form v1
2020-06-22 17:10:41 +05:00
Manjinder Singh
566765f919 Removing flaky test (#24262) 2020-06-19 12:13:52 -04:00
David Ormsbee
0b4cf7e06c Merge pull request #23039 from open-craft/samuel/fix-unescaped-selector
SE-2176 Fix elem not selected if id contains special chars
2020-06-19 12:13:20 -04:00
David Ormsbee
bfce2af065 Merge pull request #24058 from open-craft/arbrandes/optimize-blockstore-cache-v2
Optimize blockstore cache
2020-06-19 12:11:59 -04:00
Leonardo Martinez
b4fee68283 Fix the DeprecationWarning for unescape (#23936)
This PR solves the DeprecationWarning mentioned in:
https://build.testeng.edx.org/job/edx-platform-python-pipeline-master/warning_5freport_5fall_2ehtml/

HTMLParser was renamed in html.parser in Python3:
https://docs.python.org/2/library/htmlparser.html#module-HTMLParser

* html_parser.HTMLParser().unescape from six.moves has been deprecated

* instead use html.unescape from Python3

Documentation for unescape in Python3:
https://docs.python.org/3/library/html.html#html.unescape

- html_parser from six.moves has been deprecated

- instead use html.parser from Python3

- Order imports using isort

- Delete unused import crum
2020-06-19 09:27:45 -04:00
stvn
994b2b002f Add explicit masquerade support to courseware API 2020-06-18 14:54:49 -07:00
stvn
a69855e9ad Merge PR #24245 cleanup/log.warn
* Commits:
  Replace references to 'log.warn' with 'log.warning'
2020-06-18 14:50:37 -07:00
Daniel Francis
82c0ca0da8 Fixing implicit parser name for Beautiful Soup (lms, openedx) (#24100)
Fixing 56 GuessedAtParserWarnings, in commit edx#24098

Background: BeautifulSoup automatically picks the fastest parser available. By default, it picks the "lxml" parser.

Per the [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser) documentation:

> Beautiful Soup supports the HTML parser included in Python’s standard library, but it also supports a number of third-party Python parsers. One is the lxml parser. Depending on your setup, you might install lxml with one of these commands.
> Another alternative is the pure-Python html5lib parser, which parses HTML the way a web browser does. 

Context: We changed two statements, one in lms and another in openedx. Both statements fire up BeautifulSoup. Now we explicitly ask for "lxml," following the recommendation on BeautifulSoup's documentation:

> If you can, I recommend you install and use lxml for speed. If you’re using a very old version of Python – earlier than 2.7.3 or 3.2.2 – it’s essential that you install lxml or html5lib. Python’s built-in HTML parser is just not very good in those old versions.

Before:
`soup = BeautifulSoup(content)`

After:
`soup = BeautifulSoup(markup=content, features="lxml")`

The warnings are gone, tests are passing in local.
2020-06-18 15:41:07 -04:00
stvn
0ae91c0921 Replace references to 'log.warn' with 'log.warning'
to remove some `DeprecationWarning`s from the logs
as the former method as been deprecated since Python 3.3 [1][2].

- [1] https://github.com/python/cpython/blob/3.3/Lib/logging/__init__.py#L1252-L1253
- [2] https://stackoverflow.com/a/15655674
2020-06-18 12:08:15 -07:00
Robert Raposa
a1572dafce add waffle_flag custom metric (#24244)
If setting ENABLE_WAFFLE_FLAG_METRIC is True, a custom
metric will be added with the values of all WaffleFlag
and CourseWaffleFlags seen during the transaction.

Metric flag values could be False, True, or Both.
The value Both would mean that the flag had both
a True and False value at different times through
the transaction. This is most likely due to having a
check_before_waffle_callback, as is the case with
CourseWaffleFlag.

Example metric value:

    "{'another.course.flag': 'False', 'some.flag': 'False', 'some.course.flag': 'Both'}"

Warning: NewRelic does not recommend large custom
metric values due to the potential performance
impact on the agent, so you may just want to
enable when researching usage of a particular flag.
Metric values longer than 255 are truncated.

TODO: A how_to can be added later if we find this
useful, including helpful querying tips.

ARCHBOM-132
2020-06-18 12:21:57 -04:00
Michael Terry
d325943fe5 Merge pull request #24169 from edx/mikix/celebration
AA-137: Support courseware celebrations
2020-06-18 10:49:36 -04:00
atesker
12aba3bd94 PR comments 2020-06-18 10:31:24 -04:00