Skip to content

Add Cloudinary storage provider#147

Open
saurabhhhcodes wants to merge 3 commits into
Team-NoxVeil:mainfrom
saurabhhhcodes:feat/cloudinary-storage-32
Open

Add Cloudinary storage provider#147
saurabhhhcodes wants to merge 3 commits into
Team-NoxVeil:mainfrom
saurabhhhcodes:feat/cloudinary-storage-32

Conversation

@saurabhhhcodes
Copy link
Copy Markdown
Contributor

Summary

  • add a Cloudinary-backed storage provider for resume PDF upload, download, and delete flows
  • wire STORAGE_PROVIDER=cloudinary through backend settings and provider selection
  • document Cloudinary environment variables and add mocked provider tests
  • fix backend test metadata setup for DSA questions so the SQLite test suite can create all tables

Closes #32

Validation

  • python3 -m uv run pytest tests/test_utils/test_cloudinary_provider.py -q 6 passed
  • python3 -m uv run pytest -q 57 passed
  • python3 -m uv run ruff check . All checks passed

Notes

  • End-to-end Cloudinary upload/download testing requires valid CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, and CLOUDINARY_API_SECRET credentials. Unit tests mock Cloudinary and network calls.

GSSoC / NSoC label request

Please add scoring labels if this is accepted. Current repo labels only expose gssoc, gssoc'26, gssoc2026, and gssoc:approved; please apply the appropriate GSSoC/NSoC scoring labels such as approval, level, quality, and backend/feature type labels if available.

@saurabhhhcodes
Copy link
Copy Markdown
Contributor Author

Fixed the CI format failure from ruff format --check . and pushed a formatting-only follow-up commit.

Validation after the fix:

  • python3 -m uv run ruff format --check . — passed
  • python3 -m uv run ruff check . — passed
  • python3 -m uv run pytest tests/test_utils/test_cloudinary_provider.py -q — 6 passed
  • git diff --check — passed

The previous red job was only formatting drift; no behavior changes were needed.

@saurabhhhcodes
Copy link
Copy Markdown
Contributor Author

Pushed one more CI repair for the mypy failure:

  • narrowed the Cloudinary upload URL response to a non-empty str before returning it, fixing no-any-return

Validation now passing locally:

  • python3 -m uv run ruff format --check .
  • python3 -m uv run ruff check .
  • python3 -m uv run mypy .
  • python3 -m uv run pytest tests/test_utils/test_cloudinary_provider.py -q — 6 passed
  • git diff --check

Watching the fresh Backend CI rerun now.

@saurabhhhcodes
Copy link
Copy Markdown
Contributor Author

Fresh Backend CI is green now on commit 6c50736.

GitHub check passed:

  • Lint · Format · Type-check (Ruff + Mypy) — success

The two earlier failed Backend CI notifications were fixed by the formatting and mypy follow-up commits. PR is mergeable again and ready for review. Could you please add the relevant GSSoC labels when reviewing, such as gssoc:approved, difficulty, type:feature, and backend/storage labels? Thanks!

@saurabhhhcodes
Copy link
Copy Markdown
Contributor Author

Gentle label follow-up: this PR is linked to #32, the repository check Lint · Format · Type-check (Ruff + Mypy) is green, and merge state is clean. Could you please add the appropriate GSSoC/scoring labels during review, such as gssoc:approved, a difficulty label, and type:feature/type:backend if they match the project convention?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Storage: Add Cloudinary.

1 participant