Commit Graph

206 Commits

Author SHA1 Message Date
Feanil Patel
729495e1aa Merge pull request #20871 from amitvadhel/INCR-475
Incr 475
2019-06-26 14:51:15 -04:00
Uzair Rasheed
88835c3cc4 Merge pull request #20865 from edx/INCR-478/python-modernize-375-of-380
Python-modernize on edx-platform (375 of 380)
2019-06-26 18:57:12 +05:00
Ned Batchelder
b3a731550c Fix problems that drf-yasg uncovered.
These were originally fixed individually, but had to be reverted, and
are now combined in one commit.  The originals were:

7b9040f6b0 This enum was backwards
8774ff1f9b Use ref_name to disambiguate serializers that drf-yasg would otherwise assume are the same.
8a44397139 Is this field missing because it is None?
4a1154a7ca Give a safer buffer for clearing the rate limiting
64c47856dd DRF 3.7.4 changed how you delegate to another view, so don't
7359ca4fb2 Is this right? It fixes two tests
fdd66e5390 Adjust the expected error message for DRF 3.7.7
9257f68fd8 The default TIME_ZONE should be UTC
2019-06-21 18:04:15 -04:00
amitvadhel
e304ab0c3f INCR-475: Make compatible with Python 3.x 2019-06-21 13:41:23 +03:00
uzairr
9835b21191 Python-modernize on edx-platform (375 of 380)
After executing python-modernize and isort, few changes occurred in
import sequence as well as unicode func is replaced by six.text_type
func.

INCR-478
2019-06-21 12:15:36 +05:00
usama sadiq
1630911131 Updated to Python3
Added absolute import in both files
2019-06-20 16:07:17 +05:00
amitvadhel
05bf848b1f INCR-477: pylint: disable import-error for urljoin 2019-06-19 09:16:03 +03:00
amitvadhel
94f410f432 INCR-477: Make compatible with Python 3.x 2019-06-19 08:35:43 +03:00
Ned Batchelder
39c7a2db7c Revert "Use drf-yasg for Open API documentation" 2019-06-11 16:05:00 -04:00
Ned Batchelder
64c47856dd DRF 3.7.4 changed how you delegate to another view, so don't
The error in the test was:
```
AssertionError: The `request` argument must be an instance of `django.http.HttpRequest`, not `rest_framework.request.Request`.
```
The (controversial) incompatible change was in 3.7.4: https://github.com/encode/django-rest-framework/pull/5618

I'll look into whether there's another way to address it.

<details>
  <summary>Full error report</summary>

```
AssertionError: The `request` argument must be an instance of `django.http.HttpRequest`, not `rest_framework.request.Request`.

Stacktrace

self = <lms.djangoapps.discussion_api.tests.test_views.CommentViewSetListTest testMethod=test_profile_image_request_for_null_endorsed_by>

    def test_profile_image_request_for_null_endorsed_by(self):
        """
        Tests if 'endorsed' is True but 'endorsed_by' is null, the api does not crash.
        This is the case for some old/stale data in prod/stage environments.
        """
        self.register_get_user_response(self.user)
        thread = self.make_minimal_cs_thread({
            "thread_type": "question",
            "endorsed_responses": [make_minimal_cs_comment({
                "id": "endorsed_comment",
                "user_id": self.user.id,
                "username": self.user.username,
                "endorsed": True,
            })],
            "non_endorsed_resp_total": 0,
        })
        self.register_get_thread_response(thread)
        self.create_profile_image(self.user, get_profile_image_storage())

        response = self.client.get(self.url, {
            "thread_id": thread["id"],
            "endorsed": True,
>           "requested_fields": "profile_image",
        })

lms/djangoapps/discussion_api/tests/test_views.py:1446:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/test.py:291: in get
    response = super(APIClient, self).get(path, data=data, **extra)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/test.py:208: in get
    return self.generic('GET', path, **r)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/test.py:237: in generic
    method, path, data, content_type, secure, **extra)
../venvs/edxapp/local/lib/python2.7/site-packages/django/test/client.py:416: in generic
    return self.request(**r)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/test.py:288: in request
    return super(APIClient, self).request(**kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/test.py:240: in request
    request = super(APIRequestFactory, self).request(**kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/django/test/client.py:501: in request
    six.reraise(*exc_info)
../venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/exception.py:41: in inner
    response = get_response(request)
../venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py:249: in _legacy_get_response
    response = self._get_response(request)
../venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py:187: in _get_response
    response = self.process_exception_by_middleware(e, request)
../venvs/edxapp/local/lib/python2.7/site-packages/django/core/handlers/base.py:185: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/django/utils/decorators.py:185: in inner
    return func(*args, **kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/django/views/decorators/csrf.py:58: in wrapped_view
    return view_func(*args, **kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/viewsets.py:95: in view
    return self.dispatch(request, *args, **kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/views.py:494: in dispatch
    response = self.handle_exception(exc)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/views.py:491: in dispatch
    response = handler(request, *args, **kwargs)
lms/djangoapps/discussion_api/views.py:505: in list
    form.cleaned_data["requested_fields"],
lms/djangoapps/discussion_api/api.py:659: in get_comment_list
    results = _serialize_discussion_entities(request, context, responses, requested_fields, DiscussionEntity.comment)
lms/djangoapps/discussion_api/api.py:468: in _serialize_discussion_entities
    request, results, usernames, discussion_entity_type, include_profile_image
lms/djangoapps/discussion_api/api.py:413: in _add_additional_response_fields
    username_profile_dict = _get_user_profile_dict(request, usernames=','.join(usernames))
lms/djangoapps/discussion_api/api.py:350: in _get_user_profile_dict
    user_profile_details = AccountViewSet.as_view({'get': 'list'})(request).data
../venvs/edxapp/local/lib/python2.7/site-packages/django/views/decorators/csrf.py:58: in wrapped_view
    return view_func(*args, **kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/viewsets.py:95: in view
    return self.dispatch(request, *args, **kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/views.py:477: in dispatch
    request = self.initialize_request(request, *args, **kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/viewsets.py:118: in initialize_request
    request = super(ViewSetMixin, self).initialize_request(request, *args, **kwargs)
../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/views.py:381: in initialize_request
    parser_context=parser_context
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <rest_framework.request.Request object at 0x7f597c773890>
request = <rest_framework.request.Request object at 0x7f597fa20f90>
parsers = [<openedx.core.lib.api.parsers.MergePatchParser object at 0x7f59810c32d0>]
authenticators = [<edx_rest_framework_extensions.auth.jwt.authentication.JwtAuthentication object at 0x7f597c713690>, <openedx.core.lib...rest_framework_extensions.auth.session.authentication.SessionAuthenticationAllowInactiveUser object at 0x7f597c773390>]
negotiator = <rest_framework.negotiation.DefaultContentNegotiation object at 0x7f597fa20410>
parser_context = {'args': (), 'kwargs': {}, 'view': <openedx.core.djangoapps.user_api.accounts.views.AccountViewSet object at 0x7f597c7846d0>}

    def __init__(self, request, parsers=None, authenticators=None,
                 negotiator=None, parser_context=None):
        assert isinstance(request, HttpRequest), (
            'The `request` argument must be an instance of '
            '`django.http.HttpRequest`, not `{}.{}`.'
>           .format(request.__class__.__module__, request.__class__.__name__)
        )
E       AssertionError: The `request` argument must be an instance of `django.http.HttpRequest`, not `rest_framework.request.Request`.

../venvs/edxapp/local/lib/python2.7/site-packages/rest_framework/request.py:159: AssertionError
```
</details>
2019-06-10 15:27:39 -04:00
Stu Young
13e624a50b INCR-307 Run python-modernize on lms/djangoapps/discussion/rest_api (#20618)
* run python modernize

* run isort

* Fix quality
2019-05-28 12:51:49 -04:00
Jeremy Bowman
ff7292538e More pylint fixes (#20692) 2019-05-28 09:19:31 -04:00
Jeremy Bowman
f9929f32b5 Update quality threshold counts (#20681) 2019-05-24 08:27:54 -04:00
Stu Young
4cf2e855c9 INCR-302 Run python-modernize on lms/djangoapps/discussion/django_comment_client/base (#20626)
* run python modernize

* run isort

* Fix quality

* Fix quality
2019-05-21 11:44:57 -04:00
Stu Young
51948f8895 INCR-306 Run python-modernize on lms/djangoapps/discussion/settings and lms/djangoapps/discussion/tests (#20619)
* run python modernize

* run isort

* Fix quality
2019-05-21 11:44:00 -04:00
Stu Young
0bb7652a75 incr-303 (#20623)
* run python modernize

* run isort

* Fix imports
2019-05-16 13:55:47 -04:00
Stu Young
0abce9c18b incr-305 (#20621)
* run python modernize
* run isort
2019-05-15 22:07:05 -04:00
Stu Young
937fcded38 incr-301 (#20625)
* run python modernize

* run isort
2019-05-15 15:21:13 -04:00
Stu Young
fc80b28bbc INCR-304 Run python-modernize on lms/djangoapps/discussion/management (#20622)
* run python modernize

* run isort
2019-05-15 15:01:53 -04:00
Brian Mesick
a4a009e57b Merge pull request #20222 from edx/bmedx/course_enrollment_history
Re-adding django-simple-history for CourseEnrollment
2019-05-09 13:02:07 -04:00
DawoudSheraz
ca0800a4b1 added logs for more information 2019-05-08 16:29:33 +05:00
bmedx
17cb93dd51 Re-adding django-simple-history for CourseEnrollment 2019-05-03 16:16:41 -04:00
Nimisha Asthagiri
dfa3728edf Move django_comment_common from common to openedx 2019-05-03 12:10:18 -04:00
Nimisha Asthagiri
c606aaeb57 Discussion consolidation: quality 2019-05-03 12:09:47 -04:00
Nimisha Asthagiri
7b4b6c3539 Move notifier and notification_prefs to discussion/ 2019-05-03 12:09:47 -04:00
Nimisha Asthagiri
e160b23903 Move django_comment_client to discussion/ 2019-05-03 12:09:46 -04:00
Nimisha Asthagiri
b949452eb2 Move discussion_api to discussion/rest_api 2019-05-03 12:07:21 -04:00
Nimisha Asthagiri
16edae0822 Move comment_client into django_comment_common 2019-05-03 12:07:20 -04:00
Nimisha Asthagiri
ef0e06cc0a Revert "Discussions consolidation" 2019-05-02 14:59:56 -04:00
Nimisha Asthagiri
31e9219c89 Discussion consolidation: review comments 2019-05-01 21:13:57 -04:00
Nimisha Asthagiri
df962a31b7 Move django_comment_common to openedx/core/djangoapps/discussion_common 2019-05-01 19:15:02 -04:00
Nimisha Asthagiri
c2e232a3d4 Discussion consolidation: quality 2019-05-01 19:13:10 -04:00
Nimisha Asthagiri
97862d2ed7 Move notifier and notification_prefs to discussion/ 2019-05-01 19:13:10 -04:00
Nimisha Asthagiri
db89a64d06 Move django_comment_client to discussion/ 2019-05-01 19:13:10 -04:00
Nimisha Asthagiri
3d1bb23809 Move discussion_api to discussion/rest_api 2019-05-01 19:13:10 -04:00
Nimisha Asthagiri
2839851bde Move comment_client into django_comment_common 2019-05-01 19:13:09 -04:00
David Ormsbee
e2ec126d0d Initial README for Discussion 2019-04-25 15:13:59 -04:00
Calen Pennington
4c8cd60bbc REVMI-96: Add a management command to experiment with Access Expiry reminder emails for FBE 2019-03-06 11:44:29 -05:00
Calen Pennington
300c3a34dd Don't swallow exceptions inside emulate_http_request 2019-03-06 11:44:29 -05:00
Michael Youngstrom
3221c2b91f Remove lms pytest shards 2019-02-12 11:03:46 -05:00
Shafqat Farhan
17afb2000d Discussion board AssertionError fixed (#1242) 2019-02-08 17:41:11 +05:00
Matthew Piatetsky
6e81c84d8b fix unicode strings in lms/ part 1 2019-02-05 15:15:02 -05:00
cclauss
8fca11b85c Use print() function in both Python 2 and Python 3 2019-01-13 17:16:37 +01:00
Matt Tuchfarber
ac29017d88 Move banner REVMI-54
Moves banner into the content instead of at the top. Adds a course
expiration fragment to the course home page, the content, the progress
page, and the discussion page.
2019-01-09 10:17:16 -05:00
Matthew Piatetsky
14a899a65d REVE-104 & REVE-108: Ensure Course Roles' Access 2018-12-07 16:39:09 -05:00
DawoudSheraz
bf99e15707 EDUCATOR-3605 Adding Visible Labels for search and filter inputs on discussion page 2018-12-07 10:26:04 +05:00
brianhw
acc919ca46 Merge pull request #19353 from edx/brian/DE-1121-email-context
Add page context to edx.bi.email.sent events
2018-12-04 12:10:27 -05:00
Brian Wilson
f21bf05e37 Add page context to edx.bi.email.sent events. 2018-12-04 02:47:37 -05:00
Calen Pennington
31047260cc Switch ContentTypeGatingConfig.enabled_as_of and CourseDurationLimitConfig.enabled_as_of to datetimes 2018-11-30 10:02:53 -05:00
Matthew Piatetsky
815acda002 Populate experiment data with holdback key post enrollment and check holdback key when setting user group 2018-11-28 13:40:57 -05:00