From 1a18a4b08e61edb893ff48a7df2e0c4eda1acff1 Mon Sep 17 00:00:00 2001 From: Nguyen-HanhNong Date: Wed, 22 Jun 2022 22:06:17 +0000 Subject: [PATCH 1/2] course and professor factory code so far --- .../autograder/tests/factory.py | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/autograder_django_backend/autograder/tests/factory.py b/autograder_django_backend/autograder/tests/factory.py index 83e95db..2983a28 100644 --- a/autograder_django_backend/autograder/tests/factory.py +++ b/autograder_django_backend/autograder/tests/factory.py @@ -5,8 +5,6 @@ fake = Faker() # Create a student - - def student_factory(**kwargs): if "name" not in kwargs: kwargs["name"] = fake.name() @@ -19,3 +17,37 @@ def student_factory(**kwargs): student = Student.objects.create(**kwargs) return student + +#Create a professor +def professor_factory(**kwargs): + if "name" not in kwargs: + kwargs["name"] = fake.name() + if "email" not in kwargs: + kwargs["email"] = fake.email() + + # Check that there are only 2 arguments in kwargs + assert len(kwargs) == 2 + + professor = Professor.objects.create(**kwargs) + + return professor + +#Create a course +def course_factory(**kwargs): + if "course_id" not in kwargs: + kwargs["course_id"] = fake.course_id() + if "name" not in kwargs: + kwargs["name"] = fake.name() + if "description" not in kwargs: + kwargs["description"] = fake.description() + if "section" not in kwargs: + kwargs["section"] = fake.section() + if "professor" not in kwargs: + kwargs["professor"] = professor_factory(); + + # Check that there are only 5 arguments in kwargs + assert len(kwargs) == 5 + + course = Course.objects.create(**kwargs) + + return course \ No newline at end of file From ac3e7efc1bfd7adeb5827c8137d0a01495f90bdd Mon Sep 17 00:00:00 2001 From: Nguyen-HanhNong Date: Wed, 29 Jun 2022 18:15:18 +0000 Subject: [PATCH 2/2] created the home page for autograder --- .../src/lib/Counter.svelte | 103 ---------- autograder_svelte_frontend/src/lib/form.ts | 84 -------- .../src/lib/header/Header.svelte | 124 ------------ .../src/lib/header/svelte-logo.svg | 1 - .../src/routes/__layout.svelte | 45 ----- .../src/routes/about.svelte | 50 ----- .../src/routes/index.svelte | 130 +++++++----- .../src/routes/test.svelte | 1 + .../src/routes/todos/_api.ts | 22 --- .../src/routes/todos/index.svelte | 187 ------------------ .../src/routes/todos/index.ts | 67 ------- node_modules/.yarn-integrity | 10 + yarn.lock | 4 + 13 files changed, 93 insertions(+), 735 deletions(-) delete mode 100644 autograder_svelte_frontend/src/lib/Counter.svelte delete mode 100644 autograder_svelte_frontend/src/lib/form.ts delete mode 100644 autograder_svelte_frontend/src/lib/header/Header.svelte delete mode 100644 autograder_svelte_frontend/src/lib/header/svelte-logo.svg delete mode 100644 autograder_svelte_frontend/src/routes/__layout.svelte delete mode 100644 autograder_svelte_frontend/src/routes/about.svelte create mode 100644 autograder_svelte_frontend/src/routes/test.svelte delete mode 100644 autograder_svelte_frontend/src/routes/todos/_api.ts delete mode 100644 autograder_svelte_frontend/src/routes/todos/index.svelte delete mode 100644 autograder_svelte_frontend/src/routes/todos/index.ts create mode 100644 node_modules/.yarn-integrity create mode 100644 yarn.lock diff --git a/autograder_svelte_frontend/src/lib/Counter.svelte b/autograder_svelte_frontend/src/lib/Counter.svelte deleted file mode 100644 index bb71271..0000000 --- a/autograder_svelte_frontend/src/lib/Counter.svelte +++ /dev/null @@ -1,103 +0,0 @@ - - -
- - -
-
- - {Math.floor($displayed_count)} -
-
- - -
- - diff --git a/autograder_svelte_frontend/src/lib/form.ts b/autograder_svelte_frontend/src/lib/form.ts deleted file mode 100644 index 9754907..0000000 --- a/autograder_svelte_frontend/src/lib/form.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { invalidate } from '$app/navigation'; - -// this action (https://svelte.dev/tutorial/actions) allows us to -// progressively enhance a
that already works without JS -export function enhance( - form: HTMLFormElement, - { - pending, - error, - result - }: { - pending?: ({ data, form }: { data: FormData; form: HTMLFormElement }) => void; - error?: ({ - data, - form, - response, - error - }: { - data: FormData; - form: HTMLFormElement; - response: Response | null; - error: Error | null; - }) => void; - result?: ({ - data, - form, - response - }: { - data: FormData; - response: Response; - form: HTMLFormElement; - }) => void; - } = {} -) { - let current_token: unknown; - - async function handle_submit(e: SubmitEvent) { - const token = (current_token = {}); - - e.preventDefault(); - - const data = new FormData(form); - - if (pending) pending({ data, form }); - - try { - const response = await fetch(form.action, { - method: form.method, - headers: { - accept: 'application/json' - }, - body: data - }); - - if (token !== current_token) return; - - if (response.ok) { - if (result) result({ data, form, response }); - - const url = new URL(form.action); - url.search = url.hash = ''; - invalidate(url.href); - } else if (error) { - error({ data, form, error: null, response }); - } else { - console.error(await response.text()); - } - } catch (e: unknown) { - if (error && e instanceof Error) { - error({ data, form, error: e, response: null }); - } else { - throw e; - } - } - } - - form.addEventListener('submit', handle_submit); - - return { - destroy() { - form.removeEventListener('submit', handle_submit); - } - }; -} diff --git a/autograder_svelte_frontend/src/lib/header/Header.svelte b/autograder_svelte_frontend/src/lib/header/Header.svelte deleted file mode 100644 index 9d3120f..0000000 --- a/autograder_svelte_frontend/src/lib/header/Header.svelte +++ /dev/null @@ -1,124 +0,0 @@ - - -
-
- - SvelteKit - -
- - - -
- -
-
- - diff --git a/autograder_svelte_frontend/src/lib/header/svelte-logo.svg b/autograder_svelte_frontend/src/lib/header/svelte-logo.svg deleted file mode 100644 index 49492a8..0000000 --- a/autograder_svelte_frontend/src/lib/header/svelte-logo.svg +++ /dev/null @@ -1 +0,0 @@ -svelte-logo \ No newline at end of file diff --git a/autograder_svelte_frontend/src/routes/__layout.svelte b/autograder_svelte_frontend/src/routes/__layout.svelte deleted file mode 100644 index 7fef681..0000000 --- a/autograder_svelte_frontend/src/routes/__layout.svelte +++ /dev/null @@ -1,45 +0,0 @@ - - -
- -
- -
- - - - diff --git a/autograder_svelte_frontend/src/routes/about.svelte b/autograder_svelte_frontend/src/routes/about.svelte deleted file mode 100644 index 4964879..0000000 --- a/autograder_svelte_frontend/src/routes/about.svelte +++ /dev/null @@ -1,50 +0,0 @@ - - - - About - - - -
-

About this app

- -

- This is a SvelteKit app. You can make your own by typing the - following into your command line and following the prompts: -

- -
npm init svelte
- -

- The page you're looking at is purely static HTML, with no client-side interactivity needed. - Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening - the devtools network panel and reloading. -

- -

- The TODOs page illustrates SvelteKit's data loading and form handling. Try using - it with JavaScript disabled! -

-
- - diff --git a/autograder_svelte_frontend/src/routes/index.svelte b/autograder_svelte_frontend/src/routes/index.svelte index aea2bbd..2288315 100644 --- a/autograder_svelte_frontend/src/routes/index.svelte +++ b/autograder_svelte_frontend/src/routes/index.svelte @@ -1,61 +1,87 @@ - - - - Home - + Autograder: Home Page + -
-

- - - - Welcome - - + + - to your new
SvelteKit app -

+ + +
+
+
+

AutoGrader

+

Get meaningful and fast grading and feedback on your code!

+ +
+ code +
+
+ + -

- try editing src/routes/index.svelte -

+ + .left-sided-elements { + display: inline-flex; + flex-direction: column; + align-items: left; + float: left; + width: 20%; + margin-left: 3%; + margin-top: 17%; + color: white; + gap: 10px; + } + + + #image { + margin-right: 50px; + margin-top: 35px; + float: right; + width: 65%; + height: 75%; + } + + #title-text { + font-family: "Playfair Display"; + font-size: 96px; + margin: 0-5px; + font-weight: bold; + } + + #descriptive-text { + font-family: 'Raleway'; + font-size: 32px; + font-weight: lighter; + } + #login-button { + margin-bottom: 10px; + font-family: 'Raleway'; + font-size: 25px; + text-align: left; + background-color: var(--button-color); + color: var(--text-color); + width: 300px; + height: 60px; + font-weight: bolder; + } + + \ No newline at end of file diff --git a/autograder_svelte_frontend/src/routes/test.svelte b/autograder_svelte_frontend/src/routes/test.svelte new file mode 100644 index 0000000..2e1c78a --- /dev/null +++ b/autograder_svelte_frontend/src/routes/test.svelte @@ -0,0 +1 @@ +

hello there

\ No newline at end of file diff --git a/autograder_svelte_frontend/src/routes/todos/_api.ts b/autograder_svelte_frontend/src/routes/todos/_api.ts deleted file mode 100644 index 397cdda..0000000 --- a/autograder_svelte_frontend/src/routes/todos/_api.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - This module is used by the /todos endpoint to - make calls to api.svelte.dev, which stores todos - for each user. The leading underscore indicates that this is - a private module, _not_ an endpoint — visiting /todos/_api - will net you a 404 response. - - (The data on the todo app will expire periodically; no - guarantees are made. Don't use it to organise your life.) -*/ - -const base = 'https://api.svelte.dev'; - -export function api(method: string, resource: string, data?: Record) { - return fetch(`${base}/${resource}`, { - method, - headers: { - 'content-type': 'application/json' - }, - body: data && JSON.stringify(data) - }); -} diff --git a/autograder_svelte_frontend/src/routes/todos/index.svelte b/autograder_svelte_frontend/src/routes/todos/index.svelte deleted file mode 100644 index 902beeb..0000000 --- a/autograder_svelte_frontend/src/routes/todos/index.svelte +++ /dev/null @@ -1,187 +0,0 @@ - - - - Todos - - - -
-

Todos

- - { - form.reset(); - } - }} - > - - - - {#each todos as todo (todo.uid)} -
-
{ - todo.done = !!data.get('done'); - } - }} - > - - -
- {/each} -
- - diff --git a/autograder_svelte_frontend/src/routes/todos/index.ts b/autograder_svelte_frontend/src/routes/todos/index.ts deleted file mode 100644 index 3842a06..0000000 --- a/autograder_svelte_frontend/src/routes/todos/index.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { api } from './_api'; -import type { RequestHandler } from './__types'; - -export const get: RequestHandler = async ({ locals }) => { - // locals.userid comes from src/hooks.js - const response = await api('get', `todos/${locals.userid}`); - - if (response.status === 404) { - // user hasn't created a todo list. - // start with an empty array - return { - body: { - todos: [] - } - }; - } - - if (response.status === 200) { - return { - body: { - todos: await response.json() - } - }; - } - - return { - status: response.status - }; -}; - -export const post: RequestHandler = async ({ request, locals }) => { - const form = await request.formData(); - - await api('post', `todos/${locals.userid}`, { - text: form.get('text') - }); - - return {}; -}; - -// If the user has JavaScript disabled, the URL will change to -// include the method override unless we redirect back to /todos -const redirect = { - status: 303, - headers: { - location: '/todos' - } -}; - -export const patch: RequestHandler = async ({ request, locals }) => { - const form = await request.formData(); - - await api('patch', `todos/${locals.userid}/${form.get('uid')}`, { - text: form.has('text') ? form.get('text') : undefined, - done: form.has('done') ? !!form.get('done') : undefined - }); - - return redirect; -}; - -export const del: RequestHandler = async ({ request, locals }) => { - const form = await request.formData(); - - await api('delete', `todos/${locals.userid}/${form.get('uid')}`); - - return redirect; -}; diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 0000000..3f7172c --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,10 @@ +{ + "systemParams": "linux-x64-93", + "modulesFolders": [], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [], + "lockfileEntries": {}, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..fb57ccd --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + +