Skip to content

Commit

Permalink
[Quince-Backport] Upgrade to Django 4.2 (#4158)
Browse files Browse the repository at this point in the history
* feat: upgrade to Django 4.2 (#4088)

* chore: upgrading `edx-drf-extensions` to fix django42 issue. (#4153)

* chore: using CSRF_TRUSTED_ORIGINS now. No need for extra variable. (#4157)

---------

Co-authored-by: Gustavo Suero <[email protected]>
Co-authored-by: Awais Qureshi <[email protected]>
  • Loading branch information
3 people authored Nov 22, 2023
1 parent eca596e commit 62cd7e6
Show file tree
Hide file tree
Showing 14 changed files with 60 additions and 122 deletions.
9 changes: 0 additions & 9 deletions .ci/docker-compose-ci.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
version: "2"

services:
mysql57:
image: mysql:5.7
container_name: mysql57
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
environment:
MYSQL_ROOT_PASSWORD: "password"
MYSQL_DATABASE: "discovery"

mysql80:
image: mysql:8.0
container_name: mysql80
Expand Down Expand Up @@ -50,7 +42,6 @@ services:
- ../course_discovery/assets:/edx/var/discovery/staticfiles
command: tail -f /dev/null
depends_on:
- "mysql57"
- "mysql80"
- "es"
- "memcached"
Expand Down
8 changes: 2 additions & 6 deletions .ci/run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ set -e

apt-get update
apt-get install -y --no-install-recommends firefox gettext
if [ "$TOXENV" == "py38-django42" ]
then
make requirements_dj42
else
make requirements
fi
make requirements

make test
9 changes: 3 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,10 @@ jobs:
fail-fast: false
matrix:
python-version: ['py38']
django-version: ['django32', 'django42']
db-version: ['mysql57', 'mysql80']
django-version: ['django42']
db-version: ['mysql80']
pytest-split-group: [1, 2, 3, 4, 5, 6]
status: ['']
exclude:
- django-version: "django42"
db-version: "mysql57"

steps:
- uses: actions/checkout@v3
Expand All @@ -32,7 +29,7 @@ jobs:
# See https://github.com/actions/toolkit/issues/399
continue-on-error: ${{ matrix.status == 'ignored' }}
- name: Upload coverage
if: matrix.db-version == 'mysql57' # TODO: Remove this condition when removing 'mysql57' db-version.
if: matrix.db-version == 'mysql80'
uses: actions/upload-artifact@v2
with:
name: coverage${{ matrix.pytest-split-group }}
Expand Down
10 changes: 2 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,6 @@ requirements.python: ## Install Python requirements for local development.

requirements: requirements.js requirements.python ## Install Python and JS requirements for local development

requirements.python_dj42: ## Install Python requirements for Django 4.2 env
pip install -r requirements/local.txt -r requirements/django42.txt

requirements_dj42: requirements.js requirements.python_dj42 ## Install Python and JS requirements for Django 4.2 env

production-requirements: ## Install Python and JS requirements for production
pip install -r requirements.txt
npm install --production
Expand All @@ -60,6 +55,8 @@ $(COMMON_CONSTRAINTS_TXT):
upgrade: $(COMMON_CONSTRAINTS_TXT)
sed 's/django-simple-history==3.0.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp
mv requirements/common_constraints.tmp requirements/common_constraints.txt
sed 's/Django<4.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp
mv requirements/common_constraints.tmp requirements/common_constraints.txt
pip install -q -r requirements/pip_tools.txt
pip-compile --allow-unsafe --upgrade -o requirements/pip.txt requirements/pip.in
pip-compile --upgrade -o requirements/pip_tools.txt requirements/pip_tools.in
Expand All @@ -72,9 +69,6 @@ upgrade: $(COMMON_CONSTRAINTS_TXT)
grep -e "^django==" requirements/local.txt > requirements/django.txt
sed -i.tmp '/^[dD]jango==/d' requirements/local.txt
rm -rf requirements/local.txt.tmp
grep -e "^django-admin-sortable2==" requirements/local.txt >> requirements/django.txt
sed -i.tmp "/^django-admin-sortable2==/d" requirements/local.txt
rm -rf requirements/local.txt.tmp
chmod a+rw requirements/*.txt

test: clean ## Run tests and generate coverage report
Expand Down
2 changes: 1 addition & 1 deletion course_discovery/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -772,4 +772,4 @@
# disable indexing on history_date
SIMPLE_HISTORY_DATE_INDEX = False

CSRF_TRUSTED_ORIGINS_WITH_SCHEME = [] # just for Django 4.2 upgrade
USE_DEPRECATED_PYTZ = True
4 changes: 0 additions & 4 deletions course_discovery/settings/production.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from os import environ

import certifi
import django
import memcache
import MySQLdb
import yaml
Expand Down Expand Up @@ -92,6 +91,3 @@

# Convert dict keys to lowercase
GOOGLE_SERVICE_ACCOUNT_CREDENTIALS = {k.lower(): v for k, v in GOOGLE_SERVICE_ACCOUNT_CREDENTIALS.items()}

if django.VERSION[0] >= 4: # for greater than django 3.2 use schemes.
CSRF_TRUSTED_ORIGINS = CSRF_TRUSTED_ORIGINS_WITH_SCHEME
2 changes: 1 addition & 1 deletion requirements/common_constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@


# using LTS django version
Django<4.0


# elasticsearch>=7.14.0 includes breaking changes in it which caused issues in discovery upgrade process.
# elastic search changelog: https://www.elastic.co/guide/en/enterprise-search/master/release-notes-7.14.0.html
Expand Down
12 changes: 3 additions & 9 deletions requirements/constraints.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Stay on an LTS release
django<4.0

# We are creating a local copy of the common constraints file and override/remove the global constraint which we don't need.
# This approach is used temporarily and will be improved in https://openedx.atlassian.net/browse/BOM-2721
# This file contains all common constraints for edx-repos
-c common_constraints.txt

# Stay on an LTS release
django<4.3

# Elasticsearch upgrades need to be done in lockstep across Open edX
elasticsearch>=7.8,<7.14
elasticsearch-dsl>=7.2,<8.0
Expand All @@ -23,18 +23,12 @@ algoliasearch<2.0.0
# Remove this pin once newer stable version is released
authlib==1.0.0rc1

# The latest version require Django 4.0, remove once we have upgraded to Django 4.0
django-admin-sortable2<2.0.0

# The latest versions of django-stdimage has breaking changes
# Remove this pin after fixing them.
django-stdimage<=5.3.0

semgrep==0.102.0

# Version 8.3.0 introduced changes that caused users to see User Disabled error
edx-drf-extensions < 8.3.0

# Pinning sphinx as new major release is causing error while installing requirements.
sphinx<6.0.0

Expand Down
3 changes: 1 addition & 2 deletions requirements/django.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
django==3.2.22
django-admin-sortable2==1.0.4
django==4.2.6
2 changes: 0 additions & 2 deletions requirements/django42.txt

This file was deleted.

59 changes: 24 additions & 35 deletions requirements/local.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
# via
# -c requirements/constraints.txt
# celery
# django
# kombu
bcrypt==4.0.1
# via paramiko
Expand All @@ -74,9 +75,9 @@ boltons==21.0.0
# face
# glom
# semgrep
boto3==1.28.62
boto3==1.28.63
# via django-ses
botocore==1.31.62
botocore==1.31.63
# via
# boto3
# s3transfer
Expand Down Expand Up @@ -171,7 +172,6 @@ distlib==0.3.7
distro==1.8.0
# via docker-compose
# via
# -c requirements/common_constraints.txt
# -c requirements/constraints.txt
# -r requirements/base.in
# algoliasearch-django
Expand Down Expand Up @@ -218,9 +218,8 @@ distro==1.8.0
# social-auth-app-django
# taxonomy-connector
# xss-utils
# via
# -c requirements/constraints.txt
# -r requirements/base.in
django-admin-sortable2==2.1.10
# via -r requirements/base.in
django-appconf==1.0.5
# via django-compressor
django-autocomplete-light==3.9.7
Expand All @@ -237,7 +236,7 @@ django-config-models==2.5.1
# via -r requirements/base.in
django-contrib-comments==2.2.0
# via -r requirements/base.in
django-cors-headers==4.2.0
django-cors-headers==4.3.0
# via -r requirements/base.in
django-countries==7.5.1
# via -r requirements/base.in
Expand Down Expand Up @@ -304,7 +303,7 @@ django-stdimage==5.3.0
# via
# -c requirements/constraints.txt
# -r requirements/base.in
django-storages==1.14.1
django-storages==1.14.2
# via -r requirements/base.in
django-taggit==4.0.0
# via
Expand Down Expand Up @@ -337,7 +336,9 @@ djangorestframework-csv==2.1.1
djangorestframework-xml==2.0.0
# via -r requirements/base.in
docker[ssh]==6.1.3
# via docker-compose
# via
# docker
# docker-compose
docker-compose==1.29.2
# via -r requirements/local.in
dockerpty==0.4.1
Expand Down Expand Up @@ -368,7 +369,7 @@ edx-ccx-keys==1.2.1
# via -r requirements/base.in
edx-django-release-util==1.3.0
# via -r requirements/base.in
edx-django-sites-extensions==4.0.1
edx-django-sites-extensions==4.0.2
# via -r requirements/base.in
edx-django-utils==5.7.0
# via
Expand All @@ -381,10 +382,8 @@ edx-django-utils==5.7.0
# edx-toggles
# getsmarter-api-clients
# taxonomy-connector
edx-drf-extensions==8.2.0
# via
# -c requirements/constraints.txt
# -r requirements/base.in
edx-drf-extensions==8.11.1
# via -r requirements/base.in
edx-event-bus-kafka==5.5.0
# via -r requirements/base.in
edx-event-bus-redis==0.3.2
Expand All @@ -400,7 +399,7 @@ edx-opaque-keys[django]==2.5.1
# edx-drf-extensions
# openedx-events
# taxonomy-connector
edx-rest-api-client==5.6.0
edx-rest-api-client==5.6.1
# via
# -r requirements/base.in
# taxonomy-connector
Expand Down Expand Up @@ -432,7 +431,7 @@ face==22.0.0
# via glom
factory-boy==3.3.0
# via -r requirements/test.in
faker==19.6.2
faker==19.10.0
# via factory-boy
fastavro==1.8.4
# via openedx-events
Expand All @@ -447,17 +446,15 @@ frozenlist==1.4.0
# via
# aiohttp
# aiosignal
future==0.18.3
# via pyjwkest
getsmarter-api-clients==0.6.1
# via -r requirements/base.in
glom==22.1.0
# via semgrep
google-api-core==2.12.0
# via google-api-python-client
google-api-python-client==2.102.0
google-api-python-client==2.103.0
# via -r requirements/base.in
google-auth==2.23.2
google-auth==2.23.3
# via
# google-api-core
# google-api-python-client
Expand All @@ -470,7 +467,7 @@ google-auth-httplib2==0.1.1
# google-api-python-client
google-auth-oauthlib==1.1.0
# via gspread
googleapis-common-protos==1.60.0
googleapis-common-protos==1.61.0
# via google-api-core
gspread==5.11.3
# via -r requirements/base.in
Expand Down Expand Up @@ -587,7 +584,7 @@ path==16.7.1
# via edx-i18n-tools
pbr==5.11.1
# via stevedore
peewee==3.16.3
peewee==3.17.0
# via semgrep
pendulum==2.1.2
# via simple-salesforce
Expand Down Expand Up @@ -615,7 +612,7 @@ protobuf==4.24.4
# via
# google-api-core
# googleapis-common-protos
psutil==5.9.5
psutil==5.9.6
# via edx-django-utils
py==1.11.0
# via tox
Expand All @@ -625,31 +622,28 @@ pyasn1==0.5.0
# rsa
pyasn1-modules==0.3.0
# via google-auth
pycodestyle==2.11.0
pycodestyle==2.11.1
# via -r requirements/test.in
pycountry==22.3.5
# via -r requirements/base.in
pycparser==2.21
# via cffi
pycryptodomex==3.19.0
# via
# pyjwkest
# snowflake-connector-python
# via snowflake-connector-python
pydata-sphinx-theme==0.14.1
# via sphinx-book-theme
pygments==2.16.1
# via
# accessible-pygments
# pydata-sphinx-theme
# sphinx
pyjwkest==1.4.2
# via edx-drf-extensions
pyjwt[crypto]==2.8.0
# via
# drf-jwt
# edx-auth-backends
# edx-drf-extensions
# edx-rest-api-client
# pyjwt
# simple-salesforce
# snowflake-connector-python
# social-auth-core
Expand Down Expand Up @@ -711,7 +705,6 @@ python-dateutil==2.8.2
# botocore
# celery
# contentful
# edx-drf-extensions
# elasticsearch-dsl
# faker
# freezegun
Expand All @@ -737,7 +730,6 @@ pytz==2023.3.post1
# via
# -r requirements/base.in
# babel
# django
# django-ses
# djangorestframework
# drf-yasg
Expand Down Expand Up @@ -776,7 +768,6 @@ requests==2.31.0
# edx-rest-api-client
# google-api-core
# openai
# pyjwkest
# requests-file
# requests-oauthlib
# requests-toolbelt
Expand Down Expand Up @@ -835,12 +826,10 @@ six==1.16.0
# edx-auth-backends
# edx-ccx-keys
# edx-django-release-util
# edx-drf-extensions
# edx-lint
# elasticsearch-dsl
# isodate
# jsonschema
# pyjwkest
# python-dateutil
# python-memcached
# python-monkey-business
Expand All @@ -853,7 +842,7 @@ sniffio==1.3.0
# via trio
snowballstemmer==2.2.0
# via sphinx
snowflake-connector-python==3.2.1
snowflake-connector-python==3.3.0
# via -r requirements/base.in
social-auth-app-django==5.3.0
# via
Expand Down
Loading

0 comments on commit 62cd7e6

Please sign in to comment.