Commit Graph

489 Commits

Author SHA1 Message Date
Kyle McCormick
4f3262a40b Remove most references to old teams config scheme (#22238)
This is a follow up from MST-16, which was commited
in 3858036a4e.

Changes:
* Enrich course teams_configuration from a plain Dict
  to a custom XBlock field that uses the new TeamsConfig
  wrapper class.
* Remove teams_conf property from course, as the previous
  change made it redundant.
* Update teams_enabled implementation.
* Remove teams_max_size field from course, which is
  no longer semantically correct, as max team size
  is now defined on a teamset level.
* Remove teams_topics in order to discourage use of raw
  teams config dict.
* Add convenience properties teamsets and teamsets_by_id
  to course.
* Allow periods and spaces in teamset IDs to avoid breaking
  existing course teams.

Some parts of the code still use the old raw config data
(identifiable by searching "cleaned_data_old_format"),
which we expect to be slowly factored away as we build
new teams features. MST-40 has been created to remove any
remaining references if necessary.

MST-18

* fix: bokchoy test

* fix: remove pdb break
2019-11-06 20:43:32 -05:00
Awais Qureshi
3bea5b5d24 BOM-1005
Fixing encoding issue.
2019-11-01 18:41:44 +05:00
Feanil Patel
facd737ee4 Update code to use the new rounding method in course_grades.
So making this code change took a few hours. But then deciding that it
was the right one of the many options available took the next 3 days.

When changing to the new rounding function, we had a test that started
failing.  It appears as if our new rounding function is not the same in
some way as the one built into python 2.

```
>>> round(.0045*100 + .05)/100
0.0
>>> round_away_from_zero(.0045*100 + .05)/100
0.01
```

Doing the math by hand we see that the new function is actually correct
but the old one is clearly rounding incorrectly in this case. Looking
closer at this I discovered that it was due to a floating point issue
where .0045*100 is represented as 0.44999999999999996 so when we add
0.05 to this number we get 0.49999999999999994.  This is all because of
the limitations of floating point arithmetic.

See https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues
for more on that.

Because python does its rounding at the bit level in C code.  It treats
the .4999... as below the .5 cutoff and rounds down. Whereas our code
does more simple arithmetic which causes the number to correct itself
before we round and so correctly rounds up to 0.01

The result of this change is that previously, the rounding threshold used to
be that any number > .0045 would ronud to 0.01 and now any number that
is >= .0045 rounds to 0.01

Note that if we only care about the two most significant digits of
number between 0 and 1, this error only manifests itself in such a way
that other than the case of going from 0.00 to 0.01 eg. from 0% to 1%
none of the other cases where we would now round up cause the 2 most
significant digits to change.  Given this level of impact, we're fine
with this change.

In our tests we see this for one case, where an incomplete turns into an
F in a test.  I'm updating the test here to be more correct.

As we were looking at it we speculated as to why we were adding the .05
to the number.  Could it be to counteract this floating point issue?  It
turns out not.

Looking at this commit(a1286b1c7d) we see that it
looks like this was intended to always round up to the nearest
percentage point.  However, there's a typo here.  If you wanted to
ensure that we always rounded up to the nearest percentage point you
would have the math be `round(final_grade_percent*100 + 0.5)/ 100` or a
simpler way to do this would be
`math.ceil(final_grade_percent*100)/100`.  However, that is not what
happened and 7 years later, there have been a lot of people graded with
the wrong rounding where essentialy anyone with a grade of 89.45 gets a
90 when the intended impact was supposed to be that anyone with a grade
above an 89.0 would get a grade of 90.

Changing it now requires a lot of conversation and wolud have a large
impact on existing learners.  So we are not going to change it as a part
of the python 2 -> python 3 upgrade.  I have created
https://openedx.atlassian.net/browse/TNL-6972  to capture this issue if
we want to address it in the future.
2019-10-31 14:29:57 -04:00
aarif
d176957708 Updated the tests to fix the string/bytes input
changes made to pass tests with python 2 and other minor changes

Updated the tests to fix the string/bytes input

changes made to pass tests with python 2 and other minor changes

made some changes as suggested

made changes as suggested

changes made as suggested
2019-10-14 18:47:18 +05:00
Awais Qureshi
91e7d8a7be BOM-913
reduce functions moves into functools in python3. Fixed the import.
Fixing bytes issue.
2019-10-10 20:06:08 +05:00
Nimisha Asthagiri
8cfc33c0f1 Python 3: multi-line regex replacement of assertIn and assertNotIn 2019-09-30 08:51:02 -04:00
Nimisha Asthagiri
4914c42364 Python 3: resp.content regex searches 2019-09-30 08:51:02 -04:00
Nimisha Asthagiri
9bbc21ea8c Python 3: multi-lined assertIn, assertNotIn -> assertContains, assertNotContains 2019-09-30 08:51:02 -04:00
Nimisha Asthagiri
beb95eb69c Python 3: assertIn -> assertContains consistency 2019-09-30 08:51:01 -04:00
Nimisha Asthagiri
ccefde8d3c Python-3: assertNotIn(..response.content) -> assertNotContains 2019-09-30 08:50:38 -04:00
Nimisha Asthagiri
a6b219a9e9 Python-3: assertIn(..response.content) -> assertContains 2019-09-30 08:50:38 -04:00
Ned Batchelder
efba6e45e8 Finally import courseware properly everywhere to get rid of a warning 2019-09-26 09:40:15 -04:00
Diana Huang
e80265bb9a Remove shoppingcart pdf generation.
DEPR-40
2019-09-25 09:07:09 -04:00
Jeremy Bowman
553d35e53e Upgrade mock BOM-596 (#21717) 2019-09-24 10:14:17 -04:00
Awais Qureshi
a0e4e94e31 BOM-482
Fixing python3
2019-09-20 20:18:18 +05:00
Ned Batchelder
835a84f33c Use bytestrings to create SimpleUploadedFiles. BOM-616 2019-09-19 10:32:23 -04:00
Feanil Patel
de0eafa0ba BOM-618 Decode test client content.
The django test client returns bytes, and many of our tests start using
it like a string. This was fine in python 2 but not in python3.
2019-09-18 14:58:30 -04:00
Awais Qureshi
762db8a2df Merge pull request #21624 from edx/awais786/BOM-426
BOM-426
2019-09-11 18:59:28 +05:00
Awais Qureshi
16e3ae71c1 BOM-426
Fixing python3
2019-09-11 17:17:00 +05:00
Aarif
8511c00ad9 Merge pull request #21529 from edx/BOM-131
BOM-131 Python 3 fixes
2019-09-11 16:17:18 +05:00
Awais Jibran
f98c819f74 Merge pull request #160 from edx/aj/add-noopener-to-new-window-urls
Update hyperlinks in platfrom
2019-09-06 11:43:38 +05:00
aarif
ec894ee10c python 3 fixes
fixed test failures

fixed test failures

python 3 fixes

fixed test failures

fixed test failures

changes made as suggested

minor change
2019-09-05 15:29:09 +05:00
Awais Jibran
1a4eb7d2e8 Pervent reverse tabnabbing in edx platform 2019-08-28 16:08:34 +05:00
Ayub khan
401e15b8bd BOM-241
py3 Assetion Error Fix
2019-08-23 14:44:35 +05:00
Uzair Rasheed
93a2259ec2 Merge pull request #21321 from edx/PROD-491/beta-tester-access-earn-cert
Beta tester doesn't allow to earn cert
2019-08-21 18:50:05 +05:00
uzairr
38cd616f06 Beta tester doesn't allow to earn cert
If beta tester wants to earn a cert then they must
create a separate user account by using email and
username different from the account with beta tester
role.

PROD-491
2019-08-21 16:24:00 +05:00
Dave St.Germain
8e725c9eee Prevent comparison to None 2019-08-19 16:21:28 -04:00
Dave St.Germain
521cdbe309 Response content is bytes 2019-08-19 16:16:31 -04:00
David Ormsbee
9a1385585f Convert response bytes to str before JSON parsing. (#21375)
Convert response bytes to str before JSON parsing.
2019-08-19 11:01:55 -04:00
Michael Roytman
b33b8e8897 introduce Python API for BulkEmail Djangoapp 2019-05-21 09:22:08 -04:00
Stu Young
871bc39b64 incr-270 (#20569)
* run python modernize

* run isort

* pylint supression
2019-05-15 16:15:01 -04:00
Nimisha Asthagiri
eb0791ec89 Inter-app API cleanup for Grades 2019-05-04 11:35:06 -04:00
Nimisha Asthagiri
dfa3728edf Move django_comment_common from common to openedx 2019-05-03 12:10:18 -04:00
Nimisha Asthagiri
ef0e06cc0a Revert "Discussions consolidation" 2019-05-02 14:59:56 -04:00
Nimisha Asthagiri
df962a31b7 Move django_comment_common to openedx/core/djangoapps/discussion_common 2019-05-01 19:15:02 -04:00
Dave St.Germain
42ede57383 Hide edx-when feature behind waffle flag 2019-04-24 16:36:56 -04:00
Dave St.Germain
b4ccd03740 This adds a new django app -- edx-when -- that will copy start and due dates to mysql and allow per-learner overrides in the instructor dashboard, using the existing IDDE interface.
It adds a data migration for existing IDDE data.
2019-04-24 12:26:19 -04:00
Jeremy Bowman
cd2e58e093 DEPR-16 Stop using deprecated OpaqueKey methods (#20248) 2019-04-16 17:59:16 -04:00
David Ormsbee
8f65ab53f0 Revert "[BB-728] Add problem response report API" 2019-02-28 13:10:31 -05:00
David Ormsbee
7da2308bc1 Merge pull request #19635 from open-craft/giovanni/bb-728-add-problem-response-report-api-upstream
[BB-728] Add problem response report API
2019-02-25 21:45:04 -05:00
Calen Pennington
78c8950ea3 Clean up a few remaining unicode format string errors 2019-02-20 15:28:14 -05:00
Giovanni Cimolin da Silva
e8883ad3a8 Add OAuth2 support for problem response reports endpoints and move API
This commit adds OAuth2 support to the problem response report endpoints and moves them to a better location following EdX API standards while keeping compatibility to the old
endpoint locations.
This was done to enable the use of reports functionality by external agents and provide a better separation between backend and frontend.

The following endpoints have been moved:

* List instructor tasks:
New URL: POST /api/instructor/v1/course/{}/tasks
Old URL: POST /courses/{}/instructor/api/list_instructor_tasks

* Download instructor reports:
New URL: POST /api/instructor/v1/course/{}/reports
Old URL: POST /courses/course-v1:edX+DemoX+Demo_Course/instructor/api/list_report_downloads

* Generate problem response reports:
New URL: POST /api/instructor/v1/course/{}/reports/problem_responses
Old URL: POST /courses/course-v1:edX+DemoX+Demo_Course/instructor/api/get_problem_responses

Note: The behaviour of the URLs was not modified.
2019-02-15 08:32:21 -02:00
Calen Pennington
8c53ce6493 Merge pull request #19743 from edx/unicode7
fix unicode strings in lms/ part 2
2019-02-13 14:15:02 -05:00
Matthew Piatetsky
764319d3e0 fix unicode strings in lms/ part 2 2019-02-13 10:35:56 -05:00
Michael Youngstrom
3221c2b91f Remove lms pytest shards 2019-02-12 11:03:46 -05:00
Kyle McCormick
f6d53ab2d1 EDUCATOR-3934 Remove #-of-learners message for writable gradebook 2019-01-28 09:55:51 -05:00
cclauss
8fca11b85c Use print() function in both Python 2 and Python 3 2019-01-13 17:16:37 +01:00
Dave St.Germain
aa7b71ac63 Clarify the assert method 2019-01-10 09:53:29 -05:00
Dave St.Germain
8b9028dbc6 Hide the exam review dashboard unless the proctoring backend supports the feature. 2019-01-09 14:02:15 -05:00
Dave St.Germain
28a8621726 Amend the test to include an exam review url 2018-12-21 11:16:27 -05:00