Skip to content
Snippets Groups Projects
  1. Jun 13, 2019
  2. Jun 12, 2019
  3. Jun 11, 2019
  4. Jun 10, 2019
    • Dave St.Germain's avatar
      Added Staff Graded Points XBlock · 702ac941
      Dave St.Germain authored
      702ac941
    • Ned Batchelder's avatar
      This enum was backwards · 7b9040f6
      Ned Batchelder authored
      7b9040f6
    • Ned Batchelder's avatar
      Enable Studio API docs in devstack · f0fa5f71
      Ned Batchelder authored
      f0fa5f71
    • Ned Batchelder's avatar
      yasg settings · 135cbe76
      Ned Batchelder authored
      135cbe76
    • Ned Batchelder's avatar
    • Ned Batchelder's avatar
      8a443971
    • Ned Batchelder's avatar
      Give a safer buffer for clearing the rate limiting · 4a1154a7
      Ned Batchelder authored
      The rate limiter counts requests in a 5-minute window.  To be sure we
      aren't hitting edge cases, make the future requests 6 minutes plus 1
      second in the future.
      4a1154a7
    • Ned Batchelder's avatar
      DRF 3.7.4 changed how you delegate to another view, so don't · 64c47856
      Ned Batchelder authored
      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>
      64c47856
    • Ned Batchelder's avatar
      Is this right? It fixes two tests · 7359ca4f
      Ned Batchelder authored
      7359ca4f
    • Ned Batchelder's avatar
      fdd66e53
Loading