Commit Graph

524 Commits

Author SHA1 Message Date
Jeremy Bowman
e0a22db806 Fix Python 3 bug in LTI stub server BOM-1006 (#22260) 2019-11-08 08:42:56 -05:00
Matthew Piatetsky
bd76a71019 delete old holdback code 2019-11-07 09:51:39 -05:00
Jeremy Bowman
a6b8cbe627 Remove obsolete field type BOM-996 (#22203) 2019-10-31 15:23:58 -04: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
Ned Batchelder
b245defb11 Merge pull request #22132 from philanthropy-u/saad/fix_visible_blocks_hash_value
Fixed exception in VisibleBlocks.bulk_create due to incorrect argument passed
2019-10-29 11:14:52 -04:00
Manjinder Singh
a384e753fd BOM-933: Fix type mismatches in various migrations (#22112)
* Fix type mismatches in the course_modes migrations

* Fix type mismatches in the course_action_state migrations

* Fix type mismatches in the schedules migrations

* Fix type mismatches in grades migrations

* Fix type mismatches in video_pipeline

* Fix type mismatches in api_admin

* Fix mismatches in credential migrations
2019-10-24 11:42:39 -04:00
Saad Waqar
7fca58f88b replaced brl.hash_value with brl in bulk_get_or_create because it calls bulk_create afterwards and bulk_create uses objects to create VisibleBlocks whereas brl.hash_value would return a string 2019-10-23 20:56:08 +05:00
Feanil Patel
871d62f246 Fix type mismatches in the grades migrations.
Mixing byte and unicode strings causes migrations to fail.
2019-10-21 13:32:46 -04:00
Zia Fazal
3b69a4f279 Invoke learner transmission task only for enterprise learners
Invoke learner transmission task only for enterprise learners
ENT-2384

added docstring

Fixed brokent unit test
2019-10-15 15:58:37 +05:00
atesker
4aff507847 EDUCATOR-4700 - pull grade overrides by grade_id
pep8

udate filter on simple history

convert to list

diable no member error
2019-10-10 12:13:07 -04:00
atesker
e07635559c EDUCATOR-4365 - display max score for not started assignment
pep8

moved includes

refactor 1

correted properties

update unit test

pep update

cr 2

made failure case a function
2019-10-02 08:48:31 -04:00
Nimisha Asthagiri
b73e0d8120 Grades python-3 upgrade: test_recalculate_learner_grades.py 2019-09-28 11:39:26 -04:00
Matt Hughes
6085852c99 Attribute grade overrides from proctoring to the final reviewer
More generally, makes it so we don't ever pull in the user to whom
we're attributing overrides from the request, but always use the one
passed in via method parameters

Also pass through comments, if they're provided via this method

JIRA:EDUCATOR-4641
2019-09-27 10:58:58 -04:00
atesker
6c6a0e47af fixed for production - add get_history
EDUCATOR-4696 - put back get_history and update UI

add pylint
2019-09-26 14:35:20 -04:00
Ned Batchelder
efba6e45e8 Finally import courseware properly everywhere to get rid of a warning 2019-09-26 09:40:15 -04:00
Ayub
846a12939e Merge pull request #21735 from edx/BOM-update_str_method
BOM Project __unicode__ to __str__
2019-09-26 10:47:14 +05:00
Zia Fazal
8c9b13e6fc Merge pull request #21770 from edx/ziafazal/ENT-2268
ENT-2268: Added signal handler for COURSE_GRADE_NOW_PASSED
2019-09-25 23:31:36 +05:00
Zia Fazal
19436f8d3d Bumped edx-enterprise version to 1.10.7
Fixed broken unit test

connected COURSE_GRADE_NOW_PASSED at the end

added receiver to signal connect call
2019-09-25 22:32:53 +05:00
Braden MacDonald
8a2d499dd2 Track grades for Blockstore content, emit tracking logs 2019-09-25 10:42:55 -04:00
Ayub khan
5c47a3b425 BOM Project
Updated __unicode__ to __str__
2019-09-25 18:31:54 +05:00
atesker
eee86323a4 restore model 2019-09-24 15:57:21 -04:00
Jeremy Bowman
553d35e53e Upgrade mock BOM-596 (#21717) 2019-09-24 10:14:17 -04:00
atesker
47d32f0ef5 EDUCATOR-4670 - pr 1 - remove usage of persistsubsectionoride history
remove unused param
2019-09-23 11:04:30 -04:00
Ayub
a85b30a8b4 Merge pull request #21703 from edx/BOM-273
BOM-273
2019-09-20 15:41:54 +05:00
Jansen Kantor
b0f40a111c add requesting_user to simple-history model (#21683) 2019-09-19 13:43:35 -04:00
Matt Hughes
09d5c87647 Fix bug with override removal conditions
This was failing to delete overrides stemming from proctoring which
pre-date the corresponding change.

JIRA:PROD-704
2019-09-19 10:44:18 -04:00
Ayub khan
a075e44e72 BOM-273
tests fixed
2019-09-19 14:26:07 +05:00
Alex Dusenbery
44c96b4e9b Minor correction of grade freeze ADR. 2019-09-18 14:24:40 -04:00
Awais Qureshi
a4428d751d BOM-422
Fixing python3
2019-09-17 19:00:05 +05:00
Matt Hughes
4957b981a4 Only delete latest grade override if it came from proctoring
... on proctored exam attempt deletion

JIRA:EDUCATOR-4642
2019-09-13 11:54:32 -04:00
Michael Roytman
431adcd085 Merge pull request #21560 from edx/mroytman/EDUCATOR-4568-gradebook-override-logging-2
add additional logging
2019-09-05 12:28:21 -04:00
Michael Roytman
d8906faaf2 add additional logging 2019-09-05 10:57:34 -04:00
Alex Dusenbery
6917a29e84 PROD-287 | Add an optional treat_undefined_as_zero flag to the helper functions is_score_higher_or_equal() and compare_scores(), which defaults to False, that we call with value True from SubsectionGradeFactory.update(), which occassionally deals with invalid subsection scores containing zero as the denominator. 2019-09-05 09:31:23 -04:00
arbisoft
3fb5db43ea BOM-240
Fixing python3. Hashvalues were saving with b prefix in db. Decoded them before insertion.
2019-09-04 12:13:02 +05:00
aarif
38543006a3 python 3 fixes
Added django's inbuilt support for object's string representation
2019-08-30 14:32:49 +05:00
Cory Lee
8eddb822ab Refactor CSME id, CSMH_EXTENDED default true 2019-08-27 16:47:47 -04:00
Michael Roytman
1b296c444d add log statements to aid debugging grading issue 2019-08-26 16:49:11 -04:00
Feanil Patel
f332b81e4c Merge pull request #21384 from edx/bom/python-3-swarm
Bom/python 3 swarm
2019-08-21 09:27:59 -04:00
Matt Hughes
0ad8753cd6 Add waffle for hiding bulk management in masters courses 2019-08-20 16:32:13 -04:00
Nimisha Asthagiri
1951d2eab8 Fix byte encoding of Grades hashes 2019-08-19 11:42:36 -04:00
Matt Hughes
c3a1a70d4f Correct discrepancy between grade data sources for gradebook 2019-08-16 10:02:46 -04:00
Michael Roytman
05a67400ac make course grade filter robust against missing minimum filter as well as 0 minimum filter 2019-08-14 10:19:21 -04:00
Michael Roytman
df634ab7e3 add course level min and max filters to gradebook API 2019-08-13 15:32:12 -04:00
Matt Hughes
828c2fdc93 Add limit stops for assignment grade filtering for gradebook api
JIRA:EDUCATOR-4541
2019-08-13 15:05:03 -04:00
Kyle McCormick
fff69a9f58 Add course grade listing API for program_enrollments app
This new API endpoint differs from the existing Grades API
in that (i) it only includes grades for users enrolled with a
ProgramCourseEnrollment and (ii) it alters its return code
depending on whether any student's grade failed to load.

EDUCATOR-4529
2019-08-13 13:33:02 -04:00
Dave St.Germain
9bd0d915dc Cache the total and filtered counts in the gradebook API. 2019-07-29 09:45:08 -04:00
Ayub
ac919d6010 Merge pull request #21107 from edx/INCR-436
INCR-436 python3 compatibility
2019-07-26 13:03:40 +05:00
Ayub
ae574ae2cc Merge pull request #21108 from edx/INCR-437
INCR-437 python3 compatibility
2019-07-26 13:03:01 +05:00
Ayub
734d7a1308 Merge pull request #21109 from edx/INCR-438
INCR-438 python3 compatibility
2019-07-26 13:02:26 +05:00
Michael Roytman
77dc0fa9f0 add number of total users and number of filtered users to the gradebook API 2019-07-24 23:02:04 -04:00