diff --git a/server/config/settings/base.py b/server/config/settings/base.py index 3273a0ab..ed1fb120 100644 --- a/server/config/settings/base.py +++ b/server/config/settings/base.py @@ -84,6 +84,9 @@ THIRD_PARTY_APPS = [ "drf_spectacular", "django_htmx", + "grapple", + "graphene_django", + 'wagtail.contrib.forms', 'wagtail.contrib.redirects', 'wagtail.embeds', @@ -216,7 +219,13 @@ WAGTAILSEARCH_BACKENDS = { } } +# Wagtails Grapple Config: +GRAPHENE = {"SCHEMA": "grapple.schema.schema"} +GRAPPLE = { + "APPS": ["learnpath"], +"EXPOSE_GRAPHIQL" : True +} # TEMPLATES diff --git a/server/config/urls.py b/server/config/urls.py index f0220829..7192876b 100644 --- a/server/config/urls.py +++ b/server/config/urls.py @@ -20,6 +20,7 @@ from vbv_lernwelt.core.views import ( from wagtail.admin import urls as wagtailadmin_urls from wagtail.core import urls as wagtail_urls from wagtail.documents import urls as wagtaildocs_urls +from grapple import urls as grapple_urls def raise_example_error(request): @@ -55,6 +56,7 @@ urlpatterns += [ path("auth-token/", obtain_auth_token), path("api/schema/", SpectacularAPIView.as_view(), name="api-schema"), path("api/docs/", SpectacularSwaggerView.as_view(url_name="api-schema"), name="api-docs",), + path("", include(grapple_urls)), ] # fmt: on diff --git a/server/requirements/requirements-dev.txt b/server/requirements/requirements-dev.txt index 28b1c8ce..4a68c78a 100644 --- a/server/requirements/requirements-dev.txt +++ b/server/requirements/requirements-dev.txt @@ -4,6 +4,8 @@ # # pip-compile --output-file=requirements-dev.txt requirements-dev.in # +aniso8601==7.0.0 + # via graphene anyascii==0.3.0 # via wagtail appnope==0.1.2 @@ -84,7 +86,9 @@ django==3.2.12 # django-treebeard # djangorestframework # drf-spectacular + # graphene-django # wagtail + # wagtail-grapple django-click==2.3.0 # via -r requirements.in django-cors-headers==3.11.0 @@ -156,6 +160,18 @@ gitdb2==4.0.2 # via gitpython gitpython==3.0.6 # via trufflehog +graphene==2.1.9 + # via graphene-django +graphene-django==2.13.0 + # via wagtail-grapple +graphql-core==2.3.2 + # via + # graphene + # graphene-django + # graphql-relay + # wagtail-grapple +graphql-relay==2.0.1 + # via graphene gunicorn==20.1.0 # via -r requirements.in h11==0.13.0 @@ -249,6 +265,11 @@ portalocker==2.3.2 # via concurrent-log-handler pre-commit==2.17.0 # via -r requirements-dev.in +promise==2.3 + # via + # graphene-django + # graphql-core + # graphql-relay prompt-toolkit==3.0.26 # via ipython psycopg2-binary==2.9.3 @@ -319,15 +340,25 @@ requests==2.27.1 # coreapi # djangorestframework-stubs # wagtail +rx==1.6.1 + # via graphql-core sentry-sdk==1.5.4 # via -r requirements.in +singledispatch==3.7.0 + # via graphene-django six==1.16.0 # via # asttokens # django-coverage-plugin + # graphene + # graphene-django + # graphql-core + # graphql-relay # html5lib # l18n + # promise # python-dateutil + # singledispatch # virtualenv smmap==5.0.0 # via gitdb @@ -381,6 +412,8 @@ typing-extensions==4.0.1 # django-stubs-ext # djangorestframework-stubs # mypy +unidecode==1.3.4 + # via graphene-django uritemplate==4.1.1 # via # coreapi @@ -399,8 +432,14 @@ wagtail==2.16.1 # via # -r requirements.in # wagtail-factories + # wagtail-grapple + # wagtail-headless-preview wagtail-factories==2.0.1 # via -r requirements.in +wagtail-grapple==0.14.1 + # via -r requirements.in +wagtail-headless-preview==0.2.1 + # via wagtail-grapple watchdog==2.1.6 # via werkzeug watchgod==0.7 diff --git a/server/requirements/requirements.in b/server/requirements/requirements.in index a6880be9..1cfd46b2 100644 --- a/server/requirements/requirements.in +++ b/server/requirements/requirements.in @@ -34,4 +34,6 @@ concurrent-log-handler wagtail<3 wagtail-factories +wagtail-grapple==0.14.1 + diff --git a/server/requirements/requirements.txt b/server/requirements/requirements.txt index a5b40c12..b77d979d 100644 --- a/server/requirements/requirements.txt +++ b/server/requirements/requirements.txt @@ -3,7 +3,9 @@ # To update, run: # # pip-compile --output-file=requirements.txt requirements.in -# +# pip-compile --output-file=requirements.txt requirements.in +aniso8601==7.0.0 + # via graphene anyascii==0.3.0 # via wagtail argon2-cffi==21.3.0 @@ -48,7 +50,9 @@ django==3.2.12 # django-treebeard # djangorestframework # drf-spectacular + # graphene-django # wagtail + # wagtail-grapple django-click==2.3.0 # via -r requirements.in django-cors-headers==3.11.0 @@ -88,6 +92,18 @@ factory-boy==3.2.1 # via wagtail-factories faker==13.3.4 # via factory-boy +graphene==2.1.9 + # via graphene-django +graphene-django==2.13.0 + # via wagtail-grapple +graphql-core==2.3.2 + # via + # graphene + # graphene-django + # graphql-relay + # wagtail-grapple +graphql-relay==2.0.1 + # via graphene gunicorn==20.1.0 # via -r requirements.in h11==0.13.0 @@ -118,6 +134,11 @@ pillow==9.0.0 # wagtail portalocker==2.3.2 # via concurrent-log-handler +promise==2.3 + # via + # graphene-django + # graphql-core + # graphql-relay psycopg2-binary==2.9.3 # via -r requirements.in pycparser==2.21 @@ -153,13 +174,23 @@ redis==4.1.2 # django-redis requests==2.27.1 # via wagtail +rx==1.6.1 + # via graphql-core sentry-sdk==1.5.4 # via -r requirements.in +singledispatch==3.7.0 + # via graphene-django six==1.16.0 # via + # graphene + # graphene-django + # graphql-core + # graphql-relay # html5lib # l18n + # promise # python-dateutil + # singledispatch soupsieve==2.3.1 # via beautifulsoup4 sqlparse==0.4.2 @@ -172,6 +203,8 @@ telepath==0.2 # via wagtail text-unidecode==1.3 # via python-slugify +unidecode==1.3.4 + # via graphene-django uritemplate==4.1.1 # via drf-spectacular urllib3==1.26.8 @@ -186,8 +219,14 @@ wagtail==2.16.1 # via # -r requirements.in # wagtail-factories + # wagtail-grapple + # wagtail-headless-preview wagtail-factories==2.0.1 # via -r requirements.in +wagtail-grapple==0.14.1 + # via -r requirements.in +wagtail-headless-preview==0.2.1 + # via wagtail-grapple watchgod==0.7 # via uvicorn webencodings==0.5.1 diff --git a/server/vbv_lernwelt/learnpath/tests/grapple_test.http b/server/vbv_lernwelt/learnpath/tests/grapple_test.http new file mode 100644 index 00000000..e69de29b diff --git a/server/vbv_lernwelt/learnpath/tests/grapple_test.txt b/server/vbv_lernwelt/learnpath/tests/grapple_test.txt new file mode 100644 index 00000000..e69de29b