feat: upgrade to Palm
This commit is contained in:
parent
2da25c576c
commit
702e029d55
@ -2,7 +2,7 @@ variables:
|
||||
TUTOR_PLUGIN: notes
|
||||
TUTOR_IMAGES: notes
|
||||
TUTOR_PYPI_PACKAGE: tutor-notes
|
||||
OPENEDX_RELEASE: olive
|
||||
OPENEDX_RELEASE: palm
|
||||
GITHUB_REPO: overhangio/tutor-notes
|
||||
|
||||
include:
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
Students notes plugin for `Tutor <https://docs.tutor.overhang.io>`_
|
||||
===================================================================
|
||||
|
||||
This is a plugin for `Tutor <https://docs.tutor.overhang.io>`_ to easily add the `Open edX note-taking app <https://github.com/openedx/edx-notes-api>`_ to an Open edX platform. This app allows students to annotate portions of the courseware (see `the official documentation <https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/open-release-olive.master/exercises_tools/notes.html>`_).
|
||||
This is a plugin for `Tutor <https://docs.tutor.overhang.io>`_ to easily add the `Open edX note-taking app <https://github.com/openedx/edx-notes-api>`_ to an Open edX platform. This app allows students to annotate portions of the courseware (see `the official documentation <https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/open-release-palm.master/exercises_tools/notes.html>`_).
|
||||
|
||||
.. image:: https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/open-release-olive.master/_images/SFD_SN_bodyexample.png
|
||||
.. image:: https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/open-release-palm.master/_images/SFD_SN_bodyexample.png
|
||||
:alt: Notes in action
|
||||
|
||||
Installation
|
||||
|
||||
6
setup.py
6
setup.py
@ -31,8 +31,8 @@ setup(
|
||||
long_description=readme,
|
||||
packages=find_packages(exclude=["tests*"]),
|
||||
include_package_data=True,
|
||||
python_requires=">=3.7",
|
||||
install_requires=["tutor>=15.0.0,<16.0.0"],
|
||||
python_requires=">=3.8",
|
||||
install_requires=["tutor>=16.0.0,<17.0.0"],
|
||||
entry_points={"tutor.plugin.v1": ["notes = tutornotes.plugin"]},
|
||||
classifiers=[
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
@ -40,9 +40,9 @@ setup(
|
||||
"License :: OSI Approved :: GNU Affero General Public License v3",
|
||||
"Operating System :: OS Independent",
|
||||
"Programming Language :: Python",
|
||||
"Programming Language :: Python :: 3.7",
|
||||
"Programming Language :: Python :: 3.8",
|
||||
"Programming Language :: Python :: 3.9",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
],
|
||||
)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
__version__ = "15.0.4"
|
||||
__version__ = "16.0.0"
|
||||
|
||||
# Handle version suffix for nightly, just like tutor core.
|
||||
__version_suffix__ = ""
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from glob import glob
|
||||
import os
|
||||
import typing as t
|
||||
|
||||
import pkg_resources
|
||||
|
||||
@ -7,7 +10,6 @@ from tutor import hooks as tutor_hooks
|
||||
|
||||
from .__about__ import __version__
|
||||
|
||||
|
||||
config = {
|
||||
"unique": {
|
||||
"MYSQL_PASSWORD": "{{ 8|random_string }}",
|
||||
@ -26,18 +28,27 @@ config = {
|
||||
}
|
||||
|
||||
# Initialization hooks
|
||||
tutor_hooks.Filters.COMMANDS_INIT.add_item((
|
||||
"mysql",
|
||||
("notes", "tasks", "mysql", "init"),
|
||||
))
|
||||
tutor_hooks.Filters.COMMANDS_INIT.add_item((
|
||||
"lms",
|
||||
("notes", "tasks", "lms", "init"),
|
||||
))
|
||||
tutor_hooks.Filters.COMMANDS_INIT.add_item((
|
||||
"notes",
|
||||
("notes", "tasks", "notes", "init"),
|
||||
))
|
||||
|
||||
# To add a custom initialization task, create a bash script template under:
|
||||
# tutorcodejail/templates/codejail/tasks/
|
||||
# and then add it to the MY_INIT_TASKS list. Each task is in the format:
|
||||
# ("<service>", ("<path>", "<to>", "<script>", "<template>"))
|
||||
MY_INIT_TASKS: list[tuple[str, tuple[str, ...]]] = [
|
||||
("mysql", ("notes", "tasks", "mysql", "init")),
|
||||
("lms", ("notes", "tasks", "lms", "init")),
|
||||
("notes", ("notes", "tasks", "notes", "init")),
|
||||
]
|
||||
|
||||
# For each task added to MY_INIT_TASKS, we load the task template
|
||||
# and add it to the CLI_DO_INIT_TASKS filter, which tells Tutor to
|
||||
# run it as part of the `init` job.
|
||||
for service, template_path in MY_INIT_TASKS:
|
||||
full_path: str = pkg_resources.resource_filename(
|
||||
"tutornotes", os.path.join("templates", *template_path)
|
||||
)
|
||||
with open(full_path, encoding="utf-8") as init_task_file:
|
||||
init_task: str = init_task_file.read()
|
||||
tutor_hooks.Filters.CLI_DO_INIT_TASKS.add_item((service, init_task))
|
||||
|
||||
# Image management
|
||||
tutor_hooks.Filters.IMAGES_BUILD.add_item((
|
||||
@ -89,7 +100,9 @@ for path in glob(
|
||||
)
|
||||
):
|
||||
with open(path, encoding="utf-8") as patch_file:
|
||||
tutor_hooks.Filters.ENV_PATCHES.add_item((os.path.basename(path), patch_file.read()))
|
||||
tutor_hooks.Filters.ENV_PATCHES.add_item(
|
||||
(os.path.basename(path), patch_file.read())
|
||||
)
|
||||
# Add configuration entries
|
||||
tutor_hooks.Filters.CONFIG_DEFAULTS.add_items(
|
||||
[
|
||||
@ -103,4 +116,15 @@ tutor_hooks.Filters.CONFIG_UNIQUE.add_items(
|
||||
for key, value in config.get("unique", {}).items()
|
||||
]
|
||||
)
|
||||
tutor_hooks.Filters.CONFIG_OVERRIDES.add_items(list(config.get("overrides", {}).items()))
|
||||
tutor_hooks.Filters.CONFIG_OVERRIDES.add_items(
|
||||
list(config.get("overrides", {}).items())
|
||||
)
|
||||
|
||||
# Notes public hosts
|
||||
@tutor_hooks.Filters.APP_PUBLIC_HOSTS.add()
|
||||
def _notes_public_hosts(hosts: list[str], context_name: t.Literal["local", "dev"]) -> list[str]:
|
||||
if context_name == "dev":
|
||||
hosts += ["{{ NOTES_HOST }}:8120"]
|
||||
else:
|
||||
hosts += ["{{ NOTES_HOST }}"]
|
||||
return hosts
|
||||
|
||||
@ -1,11 +1,15 @@
|
||||
{% if is_buildkit_enabled() %}# syntax=docker/dockerfile:1.4{% endif %}
|
||||
FROM docker.io/ubuntu:20.04
|
||||
|
||||
RUN apt update && \
|
||||
RUN {% if is_buildkit_enabled() %}--mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||
--mount=type=cache,target=/var/lib/apt,sharing=locked{% endif %} \
|
||||
apt update && \
|
||||
apt upgrade -y && \
|
||||
# python 3.8
|
||||
apt install -y language-pack-en git python3 python3-pip python3-venv libmysqlclient-dev
|
||||
RUN ln -s /usr/bin/python3 /usr/bin/python
|
||||
|
||||
###### Git-clone Notes repo ######
|
||||
ARG APP_USER_ID=1000
|
||||
RUN useradd --home-dir /app --create-home --shell /bin/bash --uid ${APP_USER_ID} app
|
||||
USER ${APP_USER_ID}
|
||||
@ -13,13 +17,14 @@ USER ${APP_USER_ID}
|
||||
RUN git clone {{ NOTES_REPOSITORY }} --branch {{ NOTES_REPOSITORY_VERSION }} --depth 1 /app/edx-notes-api
|
||||
WORKDIR /app/edx-notes-api
|
||||
|
||||
###### Install python venv ######
|
||||
RUN python -m venv /app/venv
|
||||
ENV PATH /app/venv/bin:${PATH}
|
||||
# https://pypi.org/project/setuptools/
|
||||
# https://pypi.org/project/pip/
|
||||
# https://pypi.org/project/wheel/
|
||||
RUN pip install setuptools==65.5.1 pip==22.3.1 wheel==0.38.4
|
||||
RUN pip install -r requirements/base.txt
|
||||
RUN {% if is_buildkit_enabled() %}--mount=type=cache,target=/app/.cache/pip,sharing=shared {% endif %}pip install setuptools==67.8.0 pip==23.1.2 wheel==0.40.0
|
||||
RUN {% if is_buildkit_enabled() %}--mount=type=cache,target=/app/.cache/pip,sharing=shared {% endif %}pip install -r requirements/base.txt
|
||||
|
||||
EXPOSE 8000
|
||||
CMD gunicorn --workers=2 --name notes --bind=0.0.0.0:8000 --max-requests=1000 notesserver.wsgi:application
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user