Commit graph

54 commits

Author SHA1 Message Date
renovate[bot]
37a052e6d4
chore(deps): update dependency pytz to v2024 2024-03-29 22:30:29 +00:00
renovate[bot]
1bef71c50f
chore(deps): update dependency django to v4.2.11 [security] 2024-03-18 22:42:51 +00:00
renovate[bot]
097b074eea
chore(deps): update dependency python-multipart to v0.0.7 [security] 2024-02-26 05:53:49 +00:00
renovate[bot]
d0b1d86b60
chore(deps): update dependency django to v4.2.10 [security] 2024-02-26 05:51:47 +00:00
renovate[bot]
b7be0baa49
chore(deps): update dependency pytz to v2023.4 2024-02-01 00:42:44 +00:00
renovate[bot]
1dfdf7b9b4
chore(deps): update dependency uvicorn to v0.27.0 2024-01-23 17:17:23 +00:00
renovate[bot]
3eeebf7a25
chore(deps): update dependency python-dotenv to v1.0.1 2024-01-23 07:07:46 +00:00
renovate[bot]
d558ee0436
chore(deps): update dependency uvicorn to v0.26.0 2024-01-17 01:20:50 +00:00
b2c6a5a7ae
build(containers): default to podman + update references 2024-01-16 20:16:12 -05:00
69e75cfb81
perf(be): use gzip middleware for eligible responses 2024-01-07 16:41:50 -05:00
b6dba7e19f
build(be-scripts): pass CLI parameters to pytest call
build(be-scripts): pass CLI parameters to pytest call
2024-01-07 16:31:03 -05:00
6d44afd792
feat(be-auth): add auth status and refresh flows
test(be-auth): token renewal test cases

test(be-auth): session status test cases

test(be-auth): session refresh test cases

refactor(be-auth): remove redundancy in authentication classes
2024-01-07 16:31:02 -05:00
4176475752
feat(be-auth): allow decoding expired jwt via flag 2024-01-07 16:31:02 -05:00
39d71e2032
feat(be-auth): add flow to query current authenticated user 2024-01-04 11:45:59 -05:00
6036c1e819
feat(be-auth): add logout api flow 2024-01-03 13:47:59 -05:00
renovate[bot]
1ed1a0de5f
chore(deps): update dependency django to v4.2.9 2024-01-03 01:27:09 +00:00
77314a4514
feat(be-auth): replace JWTMiddleware with auth class, update views, add token tracking 2024-01-02 18:59:52 -05:00
db46e80bd7
refactor(be-auth): rename auth module to identity to avoid collision with django.contrib.auth 2024-01-02 00:36:18 -05:00
f522e26963
feat(be-auth): adapt login+auth middleware to use jwt via cookie 2023-12-28 14:08:40 -05:00
c8e581ee5d
refactor(fe-auth): clean up jwt-handling logic 2023-12-28 13:46:57 -05:00
9e5e0c4d67
chore: remove redundant pylint python-version configuration 2023-12-28 00:34:28 -05:00
e9037a48ec
fix(backend): ensure that CORS headers are set properly locally 2023-12-27 20:54:43 -05:00
1648e09955
fix(be-start): ensure that app + db are networked correctly 2023-12-27 20:54:39 -05:00
renovate[bot]
758f3cea42
chore(deps): update dependency uvicorn to v0.25.0 2023-12-24 07:03:25 +00:00
renovate[bot]
e2c207438c
chore(deps): update dependency anyio to v4.2.0 (#58)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 05:14:56 +00:00
35ca5ed377
refactor(taskfiles): consolidate start+stop, add namespace for docker tasks 2023-12-18 00:02:04 -05:00
c681c65c68
refactor(taskfiles): extract lint+format logic into script, trim taskfile 2023-12-18 00:02:04 -05:00
89186e5c30
refactor(taskfiles): extract build logic out of taskfile, remove migration deadcode 2023-12-18 00:02:00 -05:00
0582f9877e
refactor(taskfiles): extract start logic out of taskfile 2023-12-18 00:01:26 -05:00
c2b3e438f5
build(python): python 3.12.x (#55) 2023-12-10 16:41:54 -05:00
renovate[bot]
7c89eb1b67
chore(deps): update dependency django to v4.2.8 (#51)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-10 21:11:20 +00:00
renovate[bot]
38086ce408
chore(deps): update dependency typing-extensions to v4.9.0 (#54)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-10 16:05:33 -05:00
715947465d
build(backend-deps): update all dependencies (#42) 2023-11-26 21:41:59 -05:00
0242b2d5ff
refactor: FastAPI -> Django migration (#41)
* build(backend): set up Django 4.2 scaffolding

* feat: porting files API

feat: file ownership basics

feat: gaps in test compatibility

* test: port files API tests

* fix(tests): test database port 5432>5431 to avoid conflict with application database

* feat(auth): LoginView, middleware to handle JWT bearer tokens

* refactor: clean up old FastAPI logic, temporary utils

* refactor: resolve LoginView linting

* feat: user creation + test coverage

* test: session creation coverage

* refactor: hoist secrets, replace placeholders

* chore: clear linting errors+warns
2023-11-26 21:34:09 -05:00
a737e954aa
build(deps): refactor dependency metadata to live in pyproject.toml (#40)
* build(deps): refactor dependency metadata to live in pyproject.toml

* build(test): wait once after successful status to ensure DB is ready
2023-11-16 00:36:58 -05:00
23248d0277
feat(backend): file permissions and ownership (#38)
* feat(backend): file permissions and utilities

* feat(backend): file upload/list permissions

* refactor(backend): class-based middleware to play nicer with tests

* test(backend): async fixtures + proper foreign key cascade

* fix(backend): temporarily bypass auth
2023-08-28 05:21:49 +00:00
37d1a7e4b8
feat(backend): manage user sessions using tokens (#36)
* build(backend): pyjwt dependency

* feat(backend): middleware + logic to generate and decode tokens

* feat(backend): decorator to ensure logged in user

* fix(backend): adjust auth check decorator and jwt lifetime

* feat(backend): ensure that signature expiration is handled in middleware

* test(backend): base coverage for token generation
2023-08-27 11:33:55 -04:00
992bf1e5e1
build(backend): ensure that migrate settings set host properly (#34) 2023-08-26 05:31:22 +00:00
a7d6a6a96d
build(backend): handle test db setup healthcheck and test failures more clearly (#35)
build(backend): better healthcheck and failure handling in test script
2023-08-26 01:20:55 -04:00
24b6f8245d
refactor(backend): modularize files logic (#33)
* refactor(backend): consolidate files logic in module

* refactor(backend): move tests to match existing pattern
2023-08-20 15:54:40 +00:00
acdf1ca145
feat(backend): create user + log in implementation (#31)
* feat(backend): create user table

* build(backend): add argon2-cffi dependency

* feat(backend): basic create user / login implementation

* chore(backend): ignore needless lintrules

* refactor(backend): user api+use cases clean up and docs

* refactor(backend): reorganize into module

* test(backend): login route coverage

* refactor(backend): add request data schemas

* test(backend): refactor client call fixtures

* feat(backend): set up username uniqueness constraint

* test(backend): update coverage for username uniqueness

* chore(backend): missing dunderinit

* chore(backend): linting
2023-08-20 15:42:34 +00:00
16bb6d3afe
docs: user+password storage research documentation (#30)
* docs: user+password storage research documentation

* docs: label as research instead of arch

* docs: document rename for accuracy
2023-08-19 18:45:58 +00:00
52cef95493
build(backend): ensure that test scripting returns an error code if s… (#28)
* build(backend): ensure that test scripting returns an error code if steps fail

* build(backend): wait for database to be ready before running migrations

* build(backend): extra sleep after successful healthcheck

* fix(backend): ensure that ci environment expects same DB port as test

* build(backend): better error handling in test script

* build(backend): remove arbitrary sleep
2023-08-19 12:08:24 -04:00
a34b4e8033
perf(backend): avoid double-reading uploaded file streams (#25)
* perf(backend): avoid double-reading uploaded file content

* docs(backend): document file upload endpoint

* refactor(backend): hoist uploaded content read + simplify file write block
2023-08-19 15:05:55 +00:00
70224d0f28
feat(backend): endpoint to download files by id (#21)
* feat(backend): endpoint to download files by id

* test(backend) coverage for file downloads
2023-08-17 23:21:08 +00:00
090232f527
build: use python:x-slim base (#18) 2023-08-16 00:32:26 -04:00
1554e23e7f
build(backend): run as a container (#17)
* docs: document running as a container

* build: functional dockerfile

* build: task command tweaks to accommodate docker app

* ci(backend): optionally build dev docker image
2023-08-15 23:57:09 -04:00
fdc402f76a
feat(backend): file deletion flow (#16)
* feat(backend): file deletion flow

* ci: set change-check flags when no changes detected

* feat(backend): refactor settings to be a singleton object

* refactor(backend): cleaning delete flow cruft

* test(backend): add coverage for deletion + adapt coverage to only rely on endpoints

* docs: type responses for deletions
2023-08-14 08:26:05 -04:00
fbba07cbdc
build: tooling clean-up (#14)
* build(backend): requirements-locks to use venv directly to avoid needing to activate

* build(backend): taskfile cleaning, no more sourcing

* build(frontend): remove unneeded syntax, cmds>cmd for one-liners

* docs: instructors on local setup

* ci: hoisted default working directory settings
2023-08-12 16:32:07 -04:00
da2bf786d5
feat(backend): handle settings by environment (#13)
* build(backend): db provisioning tooling

* feat(backend): split application configuration by env

* docs(backend): update mention of local db setup
2023-08-12 15:56:52 -04:00