Skip to content

Commit

Permalink
Merge branch 'hotfix/v2.5.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
cmurtaugh committed Apr 6, 2022
2 parents 8f2a616 + 9552d59 commit c2927b1
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 13 deletions.
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# syntax=docker/dockerfile:experimental

FROM 482956169056.dkr.ecr.us-east-1.amazonaws.com/uw/python-postgres-build:v0.3 as build
FROM 482956169056.dkr.ecr.us-east-1.amazonaws.com/uw/python-postgres-build:v0.5 as build
COPY canvas_manage_course/requirements/*.txt /code/
RUN --mount=type=ssh,id=build_ssh_key ./python_venv/bin/pip3 install wheel gunicorn && ./python_venv/bin/pip3 install -r aws.txt
COPY . /code/
RUN chmod a+x /code/docker-entrypoint.sh

FROM 482956169056.dkr.ecr.us-east-1.amazonaws.com/uw/python-postgres-base:v0.3
FROM 482956169056.dkr.ecr.us-east-1.amazonaws.com/uw/python-postgres-base:v0.5
COPY --from=build /code /code/
ENV PYTHONUNBUFFERED 1
WORKDIR /code
Expand Down
16 changes: 8 additions & 8 deletions canvas_manage_course/requirements/base.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
boto3==1.9.210
Django==2.2.23
boto3==1.21.35
Django==2.2.27
cx-Oracle==7.2.2
django-allow-cidr==0.3.1
django-cached-authentication-middleware==0.2.2
django-redis-cache==2.0.0
hiredis==1.0.0
kitchen==1.2.4
redis==3.3.8
psycopg2==2.7.3.2
requests==2.22.0
psycopg2==2.8.6
requests==2.27.1
django-storages==1.7.1
django_rq==2.1.0
django-watchman==1.2.0
splunk_handler==2.2.0
python-json-logger==0.1.11


git+ssh://[email protected]/penzance/[email protected]#egg=canvas-python-sdk==1.0
git+ssh://[email protected]/Harvard-University-iCommons/[email protected].1#egg=django-auth-lti==2.0.1
git+ssh://[email protected]/penzance/canvas_python_sdk.git@v1.2.0#egg=canvas-python-sdk==1.2.0
git+ssh://[email protected]/Harvard-University-iCommons/[email protected].4#egg=django-auth-lti==2.0.4

git+ssh://[email protected]/Harvard-University-iCommons/django-icommons-common.git@v2.3#egg=django-icommons-common==2.3
git+ssh://[email protected]/Harvard-University-iCommons/django-icommons-common.git@v2.5#egg=django-icommons-common==2.5
git+ssh://[email protected]/Harvard-University-iCommons/[email protected]#egg=django-icommons-ui==2.0
git+ssh://[email protected]/Harvard-University-iCommons/[email protected]#egg=django-canvas-lti-school-permissions==1.0
git+ssh://[email protected]/Harvard-University-iCommons/django-ssm-parameter-store.git@v0.3#egg=django-ssm-parameter-store==0.3
git+ssh://[email protected]/Harvard-University-iCommons/django-ssm-parameter-store.git@v0.6#egg=django-ssm-parameter-store==0.6
11 changes: 10 additions & 1 deletion canvas_manage_course/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,16 @@
'filters': ['require_debug_true'],
},
},
# This is the default logger for any apps or libraries that use the logger
# package, but are not represented in the `loggers` dict below. A level
# must be set and handlers defined. Setting this logger is equivalent to
# setting and empty string logger in the loggers dict below, but the separation
# here is a bit more explicit. See link for more details:
# https://docs.python.org/3.7/library/logging.config.html#dictionary-schema-details
'root': {
'level': logging.INFO,
'handlers': ['default', 'console'],
},
'loggers': {
'gunicorn': {
'handlers': ['gunicorn', 'console'],
Expand Down Expand Up @@ -367,4 +377,3 @@
'watchman.checks.databases',
'watchman.checks.caches',
)

12 changes: 10 additions & 2 deletions manage_people/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,7 @@ def get_enrollments_added_through_tool(sis_course_id):
(Q(source__isnull=True) |
~(Q(source__icontains='feed') | Q(source='xreg_map'))))
for model in COURSE_MEMBER_CLASSES:
ids = None
try:
ids = list(model.objects.filter(query).values_list('user_id',
'role_id'))
Expand All @@ -443,16 +444,21 @@ def get_enrollments_added_through_tool(sis_course_id):
else:
logger.debug('eligible %s members = %s',
model._meta.db_table, ids)
eligible_ids.update(ids)
if ids:
eligible_ids.update(ids)
logger.debug('full set of eligible user/role ids: %s', eligible_ids)

# get a mapping of canvas role_id to UserRole ids
canvas_role_to_user_role = get_canvas_to_user_role_id_map()

logger.debug(f'canvas_role_to_user_role: {canvas_role_to_user_role}')

# get the updated (or cached) Canvas role list so we can show the right
# Canvas role labels for the enrollments
canvas_roles_by_role_id = get_roles_for_account_id('self')

logger.debug(f'canvas_roles_by_role_id: {canvas_roles_by_role_id}')

# Further filter users to remove users who may not yet be be in canvas.
# For the moment we are treating COURSEMANAGER as the single source of truth
# for who should be enrolled in a course, but we also need to get Canvas
Expand All @@ -462,17 +468,19 @@ def get_enrollments_added_through_tool(sis_course_id):

filtered_enrollments = []
for enrollment in canvas_enrollments:
logger.debug(f'looking at canvas enrollment {enrollment}')
if enrollment.get('user'):
# If sis_user_id exists, use it; if not, use login_id; if neither
# exist then log it and do not include
user_id = (enrollment['user'].get('sis_user_id') or
enrollment['user'].get('login_id'))
user_role_id = canvas_role_to_user_role[enrollment['role_id']]
if user_id and (user_id, user_role_id) in eligible_ids:
logger.debug(f'looking up enrollment {user_id} role_id {enrollment.get("role_id")} in canvas_roles_by_role_id')
enrollment.update({
'user_role_id': user_role_id,
'canvas_role_label': canvas_roles_by_role_id.get(
enrollment['role_id'])['label']})
enrollment['role_id'], {}).get('label', f'Unknown role {enrollment["role_id"]}')})
filtered_enrollments.append(enrollment)
logger.debug('MP filter out registrar fed: Allowing (%s, %s)',
user_id, user_role_id)
Expand Down

0 comments on commit c2927b1

Please sign in to comment.