Merge pull request #20814 from amitvadhel/INCR-477
INCR-477: Make compatible with Python 3.x
This commit is contained in:
@@ -4,10 +4,12 @@ Discussion Application Configuration
|
||||
Signal handlers are connected here.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
from openedx.core.constants import COURSE_ID_PATTERN
|
||||
from openedx.core.djangoapps.plugins.constants import ProjectType, SettingsType, PluginURLs, PluginSettings
|
||||
from openedx.core.djangoapps.plugins.constants import PluginSettings, PluginURLs, ProjectType, SettingsType
|
||||
|
||||
|
||||
class DiscussionConfig(AppConfig):
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# pylint: disable=missing-docstring
|
||||
from __future__ import absolute_import
|
||||
|
||||
import json
|
||||
import logging
|
||||
|
||||
|
||||
@@ -3,16 +3,20 @@
|
||||
Module for checking permissions with the comment_client backend
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
from types import NoneType
|
||||
|
||||
import six
|
||||
from edx_django_utils.cache import DEFAULT_REQUEST_CACHE
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
|
||||
from lms.djangoapps.teams.models import CourseTeam
|
||||
from openedx.core.djangoapps.django_comment_common.comment_client import Thread
|
||||
from openedx.core.djangoapps.django_comment_common.models import (
|
||||
CourseDiscussionSettings, all_permissions_for_user_in_course,
|
||||
CourseDiscussionSettings,
|
||||
all_permissions_for_user_in_course
|
||||
)
|
||||
from openedx.core.djangoapps.django_comment_common.utils import get_course_discussion_settings
|
||||
from openedx.core.lib.cache_utils import request_cached
|
||||
@@ -137,7 +141,7 @@ def _check_conditions_permissions(user, permissions, course_id, content, user_gr
|
||||
"""
|
||||
|
||||
def test(user, per, operator="or"):
|
||||
if isinstance(per, basestring):
|
||||
if isinstance(per, six.string_types):
|
||||
if per in CONDITIONS:
|
||||
return _check_condition(user, per, content)
|
||||
if 'group_' in per:
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"""
|
||||
Urls for the django_comment_client.
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.conf.urls import include, url
|
||||
|
||||
urlpatterns = [
|
||||
|
||||
@@ -1,35 +1,41 @@
|
||||
# pylint: skip-file
|
||||
from __future__ import absolute_import
|
||||
|
||||
import json
|
||||
import logging
|
||||
from collections import defaultdict
|
||||
from datetime import datetime
|
||||
|
||||
import six
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.urls import reverse
|
||||
from django.db import connection
|
||||
from django.http import HttpResponse
|
||||
from pytz import UTC
|
||||
from django.urls import reverse
|
||||
from opaque_keys.edx.keys import CourseKey, UsageKey
|
||||
from opaque_keys.edx.locations import i4xEncoder
|
||||
from pytz import UTC
|
||||
from six import text_type
|
||||
from six.moves import map
|
||||
|
||||
from courseware import courses
|
||||
from courseware.access import has_access
|
||||
from lms.djangoapps.discussion.django_comment_client.constants import TYPE_ENTRY, TYPE_SUBCATEGORY
|
||||
from lms.djangoapps.discussion.django_comment_client.permissions import (
|
||||
check_permissions_by_view, get_team, has_permission,
|
||||
check_permissions_by_view,
|
||||
get_team,
|
||||
has_permission
|
||||
)
|
||||
from lms.djangoapps.discussion.django_comment_client.settings import MAX_COMMENT_DEPTH
|
||||
from openedx.core.djangoapps.course_groups.cohorts import get_cohort_id, get_cohort_names, is_course_cohorted
|
||||
from openedx.core.djangoapps.django_comment_common.models import (
|
||||
FORUM_ROLE_STUDENT,
|
||||
FORUM_ROLE_COMMUNITY_TA,
|
||||
FORUM_ROLE_STUDENT,
|
||||
CourseDiscussionSettings,
|
||||
DiscussionsIdMapping,
|
||||
Role
|
||||
)
|
||||
from openedx.core.djangoapps.django_comment_common.utils import get_course_discussion_settings
|
||||
from openedx.core.djangoapps.course_groups.cohorts import get_cohort_id, get_cohort_names, is_course_cohorted
|
||||
from openedx.core.lib.cache_utils import request_cached
|
||||
from student.models import get_user_by_username_or_email
|
||||
from student.roles import GlobalStaff
|
||||
@@ -51,7 +57,7 @@ def strip_none(dic):
|
||||
"""
|
||||
Returns a dictionary stripped of any keys having values of None
|
||||
"""
|
||||
return dict([(k, v) for k, v in dic.iteritems() if v is not None])
|
||||
return dict([(k, v) for k, v in six.iteritems(dic) if v is not None])
|
||||
|
||||
|
||||
def strip_blank(dic):
|
||||
@@ -63,7 +69,7 @@ def strip_blank(dic):
|
||||
Determines if the provided value contains no information
|
||||
"""
|
||||
return isinstance(v, str) and len(v.strip()) == 0
|
||||
return dict([(k, v) for k, v in dic.iteritems() if not _is_blank(v)])
|
||||
return dict([(k, v) for k, v in six.iteritems(dic) if not _is_blank(v)])
|
||||
|
||||
# TODO should we be checking if d1 and d2 have the same keys with different values?
|
||||
|
||||
@@ -236,7 +242,7 @@ def get_discussion_id_map_by_course_id(course_id, user):
|
||||
by discussion_id.
|
||||
"""
|
||||
xblocks = get_accessible_discussion_xblocks_by_course_id(course_id, user)
|
||||
return dict(map(get_discussion_id_map_entry, xblocks))
|
||||
return dict(list(map(get_discussion_id_map_entry, xblocks)))
|
||||
|
||||
|
||||
@request_cached()
|
||||
@@ -501,7 +507,7 @@ class JsonError(HttpResponse):
|
||||
"""
|
||||
Object constructor, returns an error response containing the provided exception messages
|
||||
"""
|
||||
if isinstance(error_messages, basestring):
|
||||
if isinstance(error_messages, six.string_types):
|
||||
error_messages = [error_messages]
|
||||
content = json.dumps({'errors': error_messages}, indent=2, ensure_ascii=False)
|
||||
super(JsonError, self).__init__(content,
|
||||
|
||||
@@ -2,33 +2,35 @@
|
||||
Defines asynchronous celery task for sending email notification (through edx-ace)
|
||||
pertaining to new discussion forum comments.
|
||||
"""
|
||||
import logging
|
||||
from urlparse import urljoin
|
||||
from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
|
||||
import six
|
||||
from celery import task
|
||||
from celery_utils.logged_task import LoggedTask
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.sites.models import Site
|
||||
|
||||
from celery_utils.logged_task import LoggedTask
|
||||
from edx_ace import ace
|
||||
from edx_ace.utils import date
|
||||
from edx_ace.recipient import Recipient
|
||||
from edx_ace.utils import date
|
||||
from eventtracking import tracker
|
||||
from lms.djangoapps.discussion.django_comment_client.utils import (
|
||||
permalink, get_accessible_discussion_xblocks_by_course_id,
|
||||
)
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from six.moves.urllib.parse import urljoin # pylint: disable=import-error
|
||||
|
||||
from openedx.core.djangoapps.ace_common.template_context import get_base_template_context
|
||||
from openedx.core.djangoapps.ace_common.message import BaseMessageType
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
import openedx.core.djangoapps.django_comment_common.comment_client as cc
|
||||
from lms.djangoapps.discussion.django_comment_client.utils import (
|
||||
get_accessible_discussion_xblocks_by_course_id,
|
||||
permalink
|
||||
)
|
||||
from openedx.core.djangoapps.ace_common.message import BaseMessageType
|
||||
from openedx.core.djangoapps.ace_common.template_context import get_base_template_context
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
from openedx.core.djangoapps.django_comment_common.models import DiscussionsIdMapping
|
||||
from openedx.core.lib.celery.task_utils import emulate_http_request
|
||||
from track import segment
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -48,7 +50,7 @@ def update_discussions_map(context):
|
||||
course_key = CourseKey.from_string(context['course_id'])
|
||||
discussion_blocks = get_accessible_discussion_xblocks_by_course_id(course_key, include_all=True)
|
||||
discussions_id_map = {
|
||||
discussion_block.discussion_id: unicode(discussion_block.location)
|
||||
discussion_block.discussion_id: six.text_type(discussion_block.location)
|
||||
for discussion_block in discussion_blocks
|
||||
}
|
||||
DiscussionsIdMapping.update_mapping(course_key, discussions_id_map)
|
||||
@@ -85,10 +87,10 @@ def _track_notification_sent(message, context):
|
||||
'app_label': 'discussion',
|
||||
'name': 'responsenotification', # This is 'Campaign' in GA
|
||||
'language': message.language,
|
||||
'uuid': unicode(message.uuid),
|
||||
'send_uuid': unicode(message.send_uuid),
|
||||
'uuid': six.text_type(message.uuid),
|
||||
'send_uuid': six.text_type(message.send_uuid),
|
||||
'thread_id': context['thread_id'],
|
||||
'course_id': unicode(context['course_id']),
|
||||
'course_id': six.text_type(context['course_id']),
|
||||
'thread_created_at': date.deserialize(context['thread_created_at']),
|
||||
'nonInteraction': 1,
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"""
|
||||
Forum urls for the django_comment_client.
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.conf.urls import url
|
||||
|
||||
from discussion import views
|
||||
|
||||
Reference in New Issue
Block a user