diff --git a/CHANGELOG.md b/CHANGELOG.md index d189b79..cc37e2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,24 @@ instructions, because git commits are used to generate release notes: + +## v19.0.0 (2024-10-24) + +- [Bugfix] Fix legacy warnings during Docker build. (by @regisb) + +- 💥[Feature] Update Notes Image to use Ubuntu 24.04 as base OS. (by @jfavellar90) + +- [Bugfix] Actually mount edx-notes-api repositories from host on `tutor mounts add /path/to/edx-notes-api`. (by @regisb) +- 💥[Feature] Replace Elasticsearch by Meilisearch. The implementation is much more compact and readable. All content will be automatically re-indexed during init. (by @regisb) + +- 💥 [Deprecation] Drop support for python 3.8 and set Python 3.9 as the minimum supported python version. (by @DawoudSheraz) + +- 💥[Improvement] Rename Tutor's two branches (by @DawoudSheraz): + * Rename **master** to **release**, as this branch runs the latest official Open edX release tag. + * Rename **nightly** to **main**, as this branch runs the Open edX master branches, which are the basis for the next Open edX release. + +- 💥[Feature] Upgrade to Sumac. (by @jfavellar90) + ## v18.0.0 (2024-05-09) diff --git a/README.rst b/README.rst index 43fece8..fa15a85 100644 --- a/README.rst +++ b/README.rst @@ -1,9 +1,9 @@ Students notes plugin for `Tutor `_ =================================================================== -This is a plugin for `Tutor `_ to easily add the `Open edX note-taking app `_ to an Open edX platform. This app allows students to annotate portions of the courseware (see `the official documentation `_). +This is a plugin for `Tutor `_ to easily add the `Open edX note-taking app `_ to an Open edX platform. This app allows students to annotate portions of the courseware (see `the official documentation `_). -.. image:: https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/open-release-redwood.master/_images/SFD_SN_bodyexample.png +.. image:: https://docs.openedx.org/en/latest/_images/SFD_SN_bodyexample.png :alt: Notes in action Installation @@ -23,7 +23,7 @@ Then, to make migrations & tasks:: You should beware that the ``notes.`` domain name should exist and point to your server. For instance, if your LMS is hosted at http://myopenedx.com, the notes service should be found at http://notes.myopenedx.com. -If you would like to host the notes service at a different domain name, you can set the ``NOTES_HOST`` configuration variable (see below). When testing Tutor on a local computer, this will be automatically set to notes.local.edly.io. +If you would like to host the notes service at a different domain name, you can set the ``NOTES_HOST`` configuration variable (see below). When testing Tutor on a local computer, this will be automatically set to notes.local.openedx.io. To enable student notes for a specific course, you should go to the course advanced settings in the studio, and set "Enable Student Notes" to "true". Then, hit "save changes". diff --git a/changelog.d/20240621_170044_regis.md b/changelog.d/20240621_170044_regis.md deleted file mode 100644 index d7d2eb7..0000000 --- a/changelog.d/20240621_170044_regis.md +++ /dev/null @@ -1 +0,0 @@ -- [Bugfix] Fix legacy warnings during Docker build. (by @regisb) diff --git a/changelog.d/20241111_165908_dawoud.sheraz_remove_py38_references.md b/changelog.d/20241111_165908_dawoud.sheraz_remove_py38_references.md deleted file mode 100644 index aeead7e..0000000 --- a/changelog.d/20241111_165908_dawoud.sheraz_remove_py38_references.md +++ /dev/null @@ -1 +0,0 @@ -- 💥 [Deprecation] Drop support for python 3.8 and set Python 3.9 as the minimum supported python version. (by @DawoudSheraz) diff --git a/changelog.d/20241119_164506_dawoud.sheraz_branch_rename.md b/changelog.d/20241119_164506_dawoud.sheraz_branch_rename.md deleted file mode 100644 index fb6e264..0000000 --- a/changelog.d/20241119_164506_dawoud.sheraz_branch_rename.md +++ /dev/null @@ -1,3 +0,0 @@ -- 💥[Improvement] Rename Tutor's two branches (by @DawoudSheraz): - * Rename **master** to **release**, as this branch runs the latest official Open edX release tag. - * Rename **nightly** to **main**, as this branch runs the Open edX master branches, which are the basis for the next Open edX release. \ No newline at end of file diff --git a/setup.py b/setup.py index 00ddcff..a122e8c 100644 --- a/setup.py +++ b/setup.py @@ -33,8 +33,8 @@ packages=find_packages(exclude=["tests*"]), include_package_data=True, python_requires=">=3.9", - install_requires=["tutor>=18.0.0,<19.0.0"], - extras_require={"dev": ["tutor[dev]>=18.0.0,<19.0.0"]}, + install_requires=["tutor>=19.0.0,<20.0.0"], + extras_require={"dev": ["tutor[dev]>=19.0.0,<20.0.0"]}, entry_points={"tutor.plugin.v1": ["notes = tutornotes.plugin"]}, classifiers=[ "Development Status :: 5 - Production/Stable", diff --git a/tutornotes/__about__.py b/tutornotes/__about__.py index c6a8b8e..0122a6f 100644 --- a/tutornotes/__about__.py +++ b/tutornotes/__about__.py @@ -1 +1 @@ -__version__ = "18.0.0" +__version__ = "19.0.0" diff --git a/tutornotes/patches/local-docker-compose-jobs-services b/tutornotes/patches/local-docker-compose-jobs-services index 0dc5f79..efbd8db 100644 --- a/tutornotes/patches/local-docker-compose-jobs-services +++ b/tutornotes/patches/local-docker-compose-jobs-services @@ -4,4 +4,7 @@ notes-job: DJANGO_SETTINGS_MODULE: notesserver.settings.tutor volumes: - ../plugins/notes/apps/settings/tutor.py:/app/edx-notes-api/notesserver/settings/tutor.py:ro + {%- for mount in iter_mounts(MOUNTS, "notes") %} + - {{ mount }} + {%- endfor %} depends_on: {{ [("mysql", RUN_MYSQL)]|list_if }} diff --git a/tutornotes/patches/local-docker-compose-services b/tutornotes/patches/local-docker-compose-services index e55c40e..ec6b37a 100644 --- a/tutornotes/patches/local-docker-compose-services +++ b/tutornotes/patches/local-docker-compose-services @@ -6,5 +6,8 @@ notes: volumes: - ../plugins/notes/apps/settings/tutor.py:/app/edx-notes-api/notesserver/settings/tutor.py:ro - ../../data/notes:/app/data + {%- for mount in iter_mounts(MOUNTS, "notes") %} + - {{ mount }} + {%- endfor %} restart: unless-stopped depends_on: {{ [("mysql", RUN_MYSQL)]|list_if }} diff --git a/tutornotes/templates/notes/apps/settings/tutor.py b/tutornotes/templates/notes/apps/settings/tutor.py index 18e0623..be75dd4 100644 --- a/tutornotes/templates/notes/apps/settings/tutor.py +++ b/tutornotes/templates/notes/apps/settings/tutor.py @@ -10,7 +10,7 @@ "default": { "ENGINE": "django.db.backends.mysql", "HOST": "{{ MYSQL_HOST }}", - "PORT": {{MYSQL_PORT}}, + "PORT": {{ MYSQL_PORT }}, "NAME": "{{ NOTES_MYSQL_DATABASE }}", "USER": "{{ NOTES_MYSQL_USERNAME }}", "PASSWORD": "{{ NOTES_MYSQL_PASSWORD }}", @@ -23,11 +23,12 @@ CLIENT_ID = "notes" CLIENT_SECRET = "{{ NOTES_OAUTH2_SECRET }}" -ELASTICSEARCH_DSL = { - 'default': { - 'hosts': '{{ ELASTICSEARCH_SCHEME }}://{{ ELASTICSEARCH_HOST }}:{{ ELASTICSEARCH_PORT }}' - } -} +# Meilisearch credentials +ES_DISABLED = True +MEILISEARCH_ENABLED = True +MEILISEARCH_URL = "{{ MEILISEARCH_URL }}" +MEILISEARCH_API_KEY = "{{ MEILISEARCH_API_KEY }}" +MEILISEARCH_INDEX = "{{ MEILISEARCH_INDEX_PREFIX }}student_notes" LOGGING = { "version": 1, diff --git a/tutornotes/templates/notes/build/notes/Dockerfile b/tutornotes/templates/notes/build/notes/Dockerfile index 4fea8b4..7bd90db 100644 --- a/tutornotes/templates/notes/build/notes/Dockerfile +++ b/tutornotes/templates/notes/build/notes/Dockerfile @@ -1,21 +1,24 @@ # syntax=docker/dockerfile:1.4 -FROM docker.io/python:3.12-slim-bookworm +FROM docker.io/ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive + +# Delete default UID=1000 `ubuntu` user to ensure we can use id 1000 for app user +RUN userdel -r ubuntu + RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt update && \ apt upgrade -y && \ apt install -y \ - locales \ + language-pack-en \ git \ - python3-dev \ - build-essential \ - default-libmysqlclient-dev \ - pkg-config && \ - sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ - locale-gen -ENV LC_ALL=en_US.UTF-8 + python3 \ + python3-pip \ + python3-venv \ + libmysqlclient-dev \ + pkg-config +RUN ln -s /usr/bin/python3 /usr/bin/python ###### Git-clone Notes repo ###### ARG APP_USER_ID=1000 @@ -31,7 +34,7 @@ ENV PATH=/app/venv/bin:${PATH} # https://pypi.org/project/setuptools/ # https://pypi.org/project/pip/ # https://pypi.org/project/wheel/ -RUN --mount=type=cache,target=/app/.cache/pip,sharing=shared pip install setuptools==69.2.0 pip==24.0 wheel==0.43.0 +RUN --mount=type=cache,target=/app/.cache/pip,sharing=shared pip install setuptools==75.2.0 pip==24.2 wheel==0.44.0 RUN --mount=type=cache,target=/app/.cache/pip,sharing=shared pip install -r requirements/base.txt EXPOSE 8000 diff --git a/tutornotes/templates/notes/tasks/notes/init b/tutornotes/templates/notes/tasks/notes/init index b0f3606..4d12a18 100644 --- a/tutornotes/templates/notes/tasks/notes/init +++ b/tutornotes/templates/notes/tasks/notes/init @@ -1,2 +1,4 @@ ./manage.py migrate -./manage.py search_index --rebuild -f + +# Re-index with meilisearch +./manage.py shell -c "from notesapi.v1.views.meilisearch import reindex; reindex()"