From d616d77f9d561e9bab0d22137e84bb067db54ed0 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 22 Dec 2022 18:43:18 +0100 Subject: [PATCH 1/6] :sparkles: Added sitemap --- classquiz/__init__.py | 16 +++++++++- classquiz/routers/sitemap.py | 61 ++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 classquiz/routers/sitemap.py diff --git a/classquiz/__init__.py b/classquiz/__init__.py index 6171ee9..92f44dd 100644 --- a/classquiz/__init__.py +++ b/classquiz/__init__.py @@ -14,7 +14,20 @@ from classquiz.db import database from datetime import timedelta from classquiz.oauth import rememberme_middleware -from classquiz.routers import users, quiz, utils, stats, storage, search, testing_routes, editor, live, eximport, login +from classquiz.routers import ( + users, + quiz, + utils, + stats, + storage, + search, + testing_routes, + editor, + live, + eximport, + login, + sitemap, +) from classquiz.socket_server import sio from classquiz.helpers import meilisearch_init, telemetry_ping, bg_tasks from scheduler.asyncio import Scheduler @@ -82,4 +95,5 @@ app.include_router( ) app.include_router(editor.router, tags=["editor"], prefix="/api/v1/editor", include_in_schema=True) app.include_router(eximport.router, tags=["export", "import"], prefix="/api/v1/eximport", include_in_schema=True) +app.include_router(sitemap.router, tags=["sitemap"], prefix="/api/v1/sitemap", include_in_schema=True) app.mount("/", ASGIApp(sio)) diff --git a/classquiz/routers/sitemap.py b/classquiz/routers/sitemap.py new file mode 100644 index 0000000..f75165f --- /dev/null +++ b/classquiz/routers/sitemap.py @@ -0,0 +1,61 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. +import datetime +import uuid + +from fastapi import APIRouter, Response +from jinja2 import Template +from pydantic import BaseModel +from classquiz.config import redis, settings +from classquiz.db import database + +settings = settings() +router = APIRouter() + + +sitemap_template = """ + +{% for entry in pages -%} + + {{ root_address}}/view/{{ entry.id.hex }} + {%- if entry.updated_at != None -%} + {{ entry.updated_at.strftime("%Y-%m-%d") }} + {% endif %} + + {%- endfor %} +""" + + +sql_statement_metadata = """ +SELECT id, title, description, updated_at from quiz where public ='t' +""" + +sql_statement_id_and_modified_only = """ +SELECT id, updated_at from quiz where public ='t' +""" + +template = Template(sitemap_template, enable_async=True) + + +class SitemapQuiz(BaseModel): + id: uuid.UUID + updated_at: datetime.datetime + + class Config: + orm_mode = True + + +@router.get("/get") +async def get_sitemap(): + redis_cache_resp = await redis.get("sitemap") + if redis_cache_resp is None: + res = await database.fetch_all(sql_statement_id_and_modified_only) + entries = [] + for i in res: + entries.append(SitemapQuiz.from_orm(i)) + rendered_sitemap = await template.render_async({"pages": entries, "root_address": settings.root_address}) + await redis.set("sitemap", rendered_sitemap, ex=86400) + return Response(content=rendered_sitemap, media_type="application/xml") + else: + return Response(content=redis_cache_resp, media_type="application/xml") From 47f4d5e05bfb3de54eb5406a476095506e021799 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 22 Dec 2022 18:45:38 +0100 Subject: [PATCH 2/6] Revert ":bug: Fixed #188" This reverts commit 3420504076dbd2d32937dffb3b951e6a439b4a60. --- frontend/src/lib/play/question.svelte | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/frontend/src/lib/play/question.svelte b/frontend/src/lib/play/question.svelte index 1f24217..d4d3035 100644 --- a/frontend/src/lib/play/question.svelte +++ b/frontend/src/lib/play/question.svelte @@ -151,11 +151,7 @@ on:click={() => selectAnswer(answer.answer)} > {#if game_mode === 'kahoot'} - Icon + Icon {:else}

{answer.answer}

{/if} From 3e1a61ffe08277e9590efe3db35361c069991e18 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 22 Dec 2022 18:46:19 +0100 Subject: [PATCH 3/6] Revert ":sparkles: Added sitemap" This reverts commit d616d77f9d561e9bab0d22137e84bb067db54ed0. --- classquiz/__init__.py | 16 +--------- classquiz/routers/sitemap.py | 61 ------------------------------------ 2 files changed, 1 insertion(+), 76 deletions(-) delete mode 100644 classquiz/routers/sitemap.py diff --git a/classquiz/__init__.py b/classquiz/__init__.py index 92f44dd..6171ee9 100644 --- a/classquiz/__init__.py +++ b/classquiz/__init__.py @@ -14,20 +14,7 @@ from classquiz.db import database from datetime import timedelta from classquiz.oauth import rememberme_middleware -from classquiz.routers import ( - users, - quiz, - utils, - stats, - storage, - search, - testing_routes, - editor, - live, - eximport, - login, - sitemap, -) +from classquiz.routers import users, quiz, utils, stats, storage, search, testing_routes, editor, live, eximport, login from classquiz.socket_server import sio from classquiz.helpers import meilisearch_init, telemetry_ping, bg_tasks from scheduler.asyncio import Scheduler @@ -95,5 +82,4 @@ app.include_router( ) app.include_router(editor.router, tags=["editor"], prefix="/api/v1/editor", include_in_schema=True) app.include_router(eximport.router, tags=["export", "import"], prefix="/api/v1/eximport", include_in_schema=True) -app.include_router(sitemap.router, tags=["sitemap"], prefix="/api/v1/sitemap", include_in_schema=True) app.mount("/", ASGIApp(sio)) diff --git a/classquiz/routers/sitemap.py b/classquiz/routers/sitemap.py deleted file mode 100644 index f75165f..0000000 --- a/classquiz/routers/sitemap.py +++ /dev/null @@ -1,61 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at https://mozilla.org/MPL/2.0/. -import datetime -import uuid - -from fastapi import APIRouter, Response -from jinja2 import Template -from pydantic import BaseModel -from classquiz.config import redis, settings -from classquiz.db import database - -settings = settings() -router = APIRouter() - - -sitemap_template = """ - -{% for entry in pages -%} - - {{ root_address}}/view/{{ entry.id.hex }} - {%- if entry.updated_at != None -%} - {{ entry.updated_at.strftime("%Y-%m-%d") }} - {% endif %} - - {%- endfor %} -""" - - -sql_statement_metadata = """ -SELECT id, title, description, updated_at from quiz where public ='t' -""" - -sql_statement_id_and_modified_only = """ -SELECT id, updated_at from quiz where public ='t' -""" - -template = Template(sitemap_template, enable_async=True) - - -class SitemapQuiz(BaseModel): - id: uuid.UUID - updated_at: datetime.datetime - - class Config: - orm_mode = True - - -@router.get("/get") -async def get_sitemap(): - redis_cache_resp = await redis.get("sitemap") - if redis_cache_resp is None: - res = await database.fetch_all(sql_statement_id_and_modified_only) - entries = [] - for i in res: - entries.append(SitemapQuiz.from_orm(i)) - rendered_sitemap = await template.render_async({"pages": entries, "root_address": settings.root_address}) - await redis.set("sitemap", rendered_sitemap, ex=86400) - return Response(content=rendered_sitemap, media_type="application/xml") - else: - return Response(content=redis_cache_resp, media_type="application/xml") From 4ec0550904211c8a4a0a2795fb34fb4fbfad4fa4 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 22 Dec 2022 18:46:31 +0100 Subject: [PATCH 4/6] Revert "Revert ":bug: Fixed #188"" This reverts commit 47f4d5e05bfb3de54eb5406a476095506e021799. --- frontend/src/lib/play/question.svelte | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/play/question.svelte b/frontend/src/lib/play/question.svelte index d4d3035..1f24217 100644 --- a/frontend/src/lib/play/question.svelte +++ b/frontend/src/lib/play/question.svelte @@ -151,7 +151,11 @@ on:click={() => selectAnswer(answer.answer)} > {#if game_mode === 'kahoot'} - Icon + Icon {:else}

{answer.answer}

{/if} From 0de8c8ba92878565c47e6c0c7de3b740a0377170 Mon Sep 17 00:00:00 2001 From: Mawoka Date: Thu, 22 Dec 2022 18:50:55 +0100 Subject: [PATCH 5/6] Revert ":wip: Quick Save" This reverts commit 07f242e6cde2755a5f1bde45837b1beb57a09aef. --- frontend/src/lib/editor.svelte | 6 - frontend/src/lib/editor/card.svelte | 216 +++++++++--------- frontend/src/lib/editor/sidebar.svelte | 24 +- frontend/src/lib/editor/slide.svelte | 205 ----------------- .../editor/slides/element_selection.svelte | 77 ------- .../lib/editor/slides/types/headline.svelte | 10 - .../src/lib/editor/slides/types/text.svelte | 16 -- frontend/src/lib/editor/types.ts | 11 - frontend/src/lib/quiz_types.ts | 2 +- frontend/src/lib/stores.ts | 1 - 10 files changed, 106 insertions(+), 462 deletions(-) delete mode 100644 frontend/src/lib/editor/slide.svelte delete mode 100644 frontend/src/lib/editor/slides/element_selection.svelte delete mode 100644 frontend/src/lib/editor/slides/types/headline.svelte delete mode 100644 frontend/src/lib/editor/slides/types/text.svelte delete mode 100644 frontend/src/lib/editor/types.ts diff --git a/frontend/src/lib/editor.svelte b/frontend/src/lib/editor.svelte index eda9e46..53d4cc4 100644 --- a/frontend/src/lib/editor.svelte +++ b/frontend/src/lib/editor.svelte @@ -11,8 +11,6 @@ import SettingsCard from '$lib/editor/settings-card.svelte'; import QuizCard from '$lib/editor/card.svelte'; import Spinner from './Spinner.svelte'; - import { elementSelection } from '$lib/stores.js'; - import ElementSelection from '$lib/editor/slides/element_selection.svelte'; let schemaInvalid = false; let yupErrorMessage = ''; @@ -189,7 +187,3 @@ {/await} - -{#if $elementSelection.data === null} - -{/if} diff --git a/frontend/src/lib/editor/card.svelte b/frontend/src/lib/editor/card.svelte index a79b74f..03b99ea 100644 --- a/frontend/src/lib/editor/card.svelte +++ b/frontend/src/lib/editor/card.svelte @@ -12,7 +12,6 @@ import Spinner from '../Spinner.svelte'; import { createTippy } from 'svelte-tippy'; import { getLocalization } from '$lib/i18n'; - import Slide from './slide.svelte'; const { t } = getLocalization(); @@ -52,9 +51,9 @@ */ -
+
-
+
- {#if data.questions[selected_question].time} -
-
- {#await import('$lib/inline-editor.svelte')} - - {:then c} -
- -
- {/await} -
- {#if data.questions[selected_question].image != undefined && data.questions[selected_question].image !== ''} -
- not available { - data.questions[selected_question].image = ''; - }} - /> -
- {:else if pow_data === undefined} - +
+ {#await import('$lib/inline-editor.svelte')} + + {:then c} +
- - - {:else} - {#await import('$lib/editor/uploader.svelte')} - - {:then c} - {/await} - {/if} -
-
- - - -
-
-
- -
-
- {#if data.questions[selected_question].type === QuizQuestionType.ABCD} - {#await import('$lib/editor/ABCDEditorPart.svelte')} - - {:then c} - - {/await} - {:else if data.questions[selected_question].type === QuizQuestionType.RANGE} - - {:else if data.questions[selected_question].type === QuizQuestionType.VOTING} - {#await import('$lib/editor/VotingEditorPart.svelte')} - - {:then c} - - {/await} - {/if} -
-

- {$t('editor_page.right_click_to_delete')} -

+ {/await}
- {:else} - - {/if} + {#if data.questions[selected_question].image != undefined && data.questions[selected_question].image !== ''} +
+ not available { + data.questions[selected_question].image = ''; + }} + /> +
+ {:else if pow_data === undefined} + + + + {:else} + {#await import('$lib/editor/uploader.svelte')} + + {:then c} + + {/await} + {/if} +
+
+ + + + +
+
+
+ +
+
+ {#if data.questions[selected_question].type === QuizQuestionType.ABCD} + {#await import('$lib/editor/ABCDEditorPart.svelte')} + + {:then c} + + {/await} + {:else if data.questions[selected_question].type === QuizQuestionType.RANGE} + + {:else if data.questions[selected_question].type === QuizQuestionType.VOTING} + {#await import('$lib/editor/VotingEditorPart.svelte')} + + {:then c} + + {/await} + {/if} +
+

{$t('editor_page.right_click_to_delete')}

+
diff --git a/frontend/src/lib/editor/sidebar.svelte b/frontend/src/lib/editor/sidebar.svelte index 0b0aa6f..c575606 100644 --- a/frontend/src/lib/editor/sidebar.svelte +++ b/frontend/src/lib/editor/sidebar.svelte @@ -242,7 +242,7 @@
{/each}
-
diff --git a/frontend/src/lib/editor/slide.svelte b/frontend/src/lib/editor/slide.svelte deleted file mode 100644 index 97063f1..0000000 --- a/frontend/src/lib/editor/slide.svelte +++ /dev/null @@ -1,205 +0,0 @@ - - - -
-
- {#each elements as el, i} -
- - - - - {#if el.type === ElementTypes.Text} -

Text

- - {:else if el.type === ElementTypes.Headline} -

Headline

- - {/if} -
- {/each} -
-
- {#each ghost_elements as el, i} -
- -
- {/each} -
-
diff --git a/frontend/src/lib/editor/slides/element_selection.svelte b/frontend/src/lib/editor/slides/element_selection.svelte deleted file mode 100644 index 2639ac5..0000000 --- a/frontend/src/lib/editor/slides/element_selection.svelte +++ /dev/null @@ -1,77 +0,0 @@ - - - -
-
-
-

Select the element you want to add

-
-
    - {#each element_list as el} -
  • { - elementSelection.set({ data: el.type }); - }} - > -
    -

    {el.name}

    -

    {el.description}

    -
    - {el.shortcut} -
  • - {/each} -
-
-
diff --git a/frontend/src/lib/editor/slides/types/headline.svelte b/frontend/src/lib/editor/slides/types/headline.svelte deleted file mode 100644 index 2272baf..0000000 --- a/frontend/src/lib/editor/slides/types/headline.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/frontend/src/lib/editor/slides/types/text.svelte b/frontend/src/lib/editor/slides/types/text.svelte deleted file mode 100644 index 6990f86..0000000 --- a/frontend/src/lib/editor/slides/types/text.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -