Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor: update project dashboard to use deps functions #1127

Merged
merged 4 commits into from
Jan 23, 2024

Conversation

Sujanadh
Copy link
Collaborator

@Sujanadh Sujanadh commented Jan 22, 2024

What type of PR is this? (check all applicable)

  • πŸ• Feature
  • πŸ› Bug Fix
  • πŸ“ Documentation Update
  • 🎨 Style
  • πŸ§‘β€πŸ’» Code Refactor
  • πŸ”₯ Performance Improvements
  • βœ… Test
  • πŸ€– Build
  • πŸ” CI
  • πŸ“¦ Chore (Release)
  • ⏩ Revert

Related Issue

There was an issue where get_organisation_by_id was not found in organisation_crud since it was moved to organisation_deps and there was variable conflict organisation which is relationship field in the project model but str (name of organisation ) was passed.

Describe this PR

This PR addresses the issue and updates the code using deps function and solved the conflicting issue in variable name.
organisation -> organisation_name

Screenshots

N/A
Please provide screenshots of the change.

Checklist before requesting a review

[optional] What gif best describes this PR or how it makes you feel?

@Sujanadh Sujanadh self-assigned this Jan 22, 2024
@github-actions github-actions bot added the backend Related to backend code label Jan 22, 2024
"""Get project details for project dashboard."""
project = await get_project(db, project_id)
db_organisation = await organisation_crud.get_organisation_by_id(
db_organisation = await organisation_deps.get_organisation_by_id(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can see elsewhere in the code how to use Depends.

It should be in the function params:

endpoint_function(org: db_models.DbOrganisation = Depends(organisation_deps.get_organisation_by_id), db: ...):

Then you will see the organisation id query param inherited from the dependency.

Copy link
Collaborator Author

@Sujanadh Sujanadh Jan 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how is org_id inherited to the function get_organisation_by_id ? since no param org_id is passed in the path?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://docs.hotosm.org/dev-guide/web-apis/#dependencies-can-include-route-parameters

As org_id is a param in the dependency:

async def get_organisation_by_id(db: Session, org_id: int) -> DbOrganisation:

Then org_id will be passed as a required route parameter to the endpoint that uses Depends.

background_tasks: BackgroundTasks,
project: project_deps.get_project_by_id = Depends(),
Copy link
Member

@spwoodcock spwoodcock Jan 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See my other comment.

The class after the : is for type hinting, so is specifying what type of value project is.

The Depends is used after =, with the dependency inside the brackets.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay

src/backend/app/projects/project_schemas.py Show resolved Hide resolved
@spwoodcock
Copy link
Member

Thanks for picking up the bug πŸ™

@Sujanadh
Copy link
Collaborator Author

I have created new dependency function org_from_project as we discussed yesterday and implemented it in the end point.
Working fine.

@spwoodcock spwoodcock changed the title Refactor: updated code to use deps function. Refactor: update project dashboard to use deps functions Jan 23, 2024
@spwoodcock spwoodcock merged commit 3060f19 into development Jan 23, 2024
7 checks passed
@spwoodcock spwoodcock deleted the fix-project-dashboard branch January 23, 2024 15:14
spwoodcock added a commit that referenced this pull request Jan 25, 2024
* build: remove ref to script_domain (move to separate repo)

* docs: add CNAME for custom docs domain

* build: move install.sh to fmtm-installer repo

* ci: remove install script from pr labeller

* docs: update info for using easy install script

* build: add justfile to repo for basic commands (#1098)

* build: add justfile to repo for basic commands

* build: remove Makefile, update Justfile

* build: add Justfile commands to clean databases

* docs: add Justfile to pr auto labeller

* refactor: organization routes/crud/schemas to use best practice (#1096)

* fix: use enums for HTTPStatus over codes

* refactor: update organization routes/crud/schemas best pracice

* added int to the union with str in org_exists functions

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: Niraj Adhikari <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* feat: add basic user role support to backend (#1094)

* feat: update role enums: UserRole and ProjectRole

* feat: update DbUserRole model to use ProjectRole enum + comp key

* build: update base schema with new enum types

* fix: osm login methods to async

* feat: add basic roles: super admin & validator

* build: add migration for ProjectRole db enum type

* build: fix migrations with revert for projectrole

* build: fix enum migrations with intermediate varchar

* fix: handle invalid access tokens

* refactor: correct use of 403 http status over 401

* refactor: tidy minor code edits & lint fixes

* build: default to 4 workers on dev uvicorn container

* feat: add project_deps with get_project_by_id logic

* feat: add org_admin role to role deps

* fix: add user role to response /me for frontend

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* refactor: fix all pre-commit.ci linting errors (#1101)

* build: add migration for ProjectRole db enum type

* fix: database model backrefs for DbUserRole --> (DbProject/DbUser)

* fix: add debug user to bypass auth during tests

* refactor: simplify project deletion endpoint /project/{id}

* test: add test for project deletion endpoint

* refactor: rename upload_multi_polygon --> custom_task_boundaries

* ci: disable markdownlint rule MD033 (allow inline html img resize)

* docs: update docs home page to use ref links

* refactor: fix all linting errors for code

* ci: add CONTRIBUTING.md to prettier ignore list

* docs: fix linting errors for all markdown docs

* refactor: rename LICENSE --> LICENSE.md

* refactor: update badges in readme

* docs: add allcontributors to badge table

* ci: add LICENSE.md to markdownlint ignore

* ci: update markdownlint ignore syntax for ci

* ci: add LICENSE.md to prettier ignore

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* style: revert prettier changes to LICENSE.md

* ci: update pre-commit hook versions

* docs: fix markdown linting errors after update

* ci: disable hadolint until bundled binary

* ci: do not run shellcheck on contrib dir

* ci: ignore SC2188,SC2143 from shellcheck

* refactor: fix lint errors for all shell/bash scripts

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* fix: editable vector layer in ol for project creation (#1102)

* fix: backend import error fix

* fix (vectorLayer): style - conditionaly apply style on onModify present

* fix (splitTasks): map - edit added to splitted taskLayer

* fix (splitTasks): onModify - edited geojson set to dividedTaskGeojson state

* feat (createNewProject): only enable generate task btn if fgb file fetch is completed

* fix (createNewProject): splitTasks - logic fix

* fix (createNewProject): splitTasks - clear dividedTaskGeojson, splitTasksSelection, and dataExtractGeojson state on previous click

* feat (createNewProject): splitTasks - show loader and message until FGB file is fetching

* fix (createNewProject): taskSplit - display error on taskSplit fail

* fix vectorLayer: on modifyEnd return area of boundary as well

* fix button: loading text added to the button

* fix NewDefineAreaMap: removed data extraction in progress message from mapComponent

* fix (createNewProject): splitTasks - clearing state on step toggle remove

* fix (createNewProject): uploadArea - clear step4 & step5 step on AOI edit

* fix (createNewProject): dataExtract - generateTaskBTN added, disable next until taskGeneration success, state logic changed to track extractWays & featureType state validation

* fix (createNewProject): dataExtract - clear file state on reset click or if generateDataExtract click

* fix (createNewProject): customLine, customPolygon file state clear on AOI edit

* fix (createNewProject): dataExtract - clear previous extractGeojson, customLine, customPolygon on generate extract, btn disable state update

* fix: limit project area during create (#1109)

* fix: backend import error fix

* fix (vectorLayer): style - conditionaly apply style on onModify present

* fix (splitTasks): map - edit added to splitted taskLayer

* fix (splitTasks): onModify - edited geojson set to dividedTaskGeojson state

* feat (createNewProject): only enable generate task btn if fgb file fetch is completed

* fix (createNewProject): splitTasks - logic fix

* fix (createNewProject): splitTasks - clear dividedTaskGeojson, splitTasksSelection, and dataExtractGeojson state on previous click

* feat (createNewProject): splitTasks - show loader and message until FGB file is fetching

* fix (createNewProject): taskSplit - display error on taskSplit fail

* fix vectorLayer: on modifyEnd return area of boundary as well

* fix button: loading text added to the button

* fix NewDefineAreaMap: removed data extraction in progress message from mapComponent

* fix (createNewProject): splitTasks - clearing state on step toggle remove

* fix (createNewProject): uploadArea - clear step4 & step5 step on AOI edit

* fix (createNewProject): dataExtract - generateTaskBTN added, disable next until taskGeneration success, state logic changed to track extractWays & featureType state validation

* fix (createNewProject): dataExtract - clear file state on reset click or if generateDataExtract click

* fix (createNewProject): customLine, customPolygon file state clear on AOI edit

* fix (createNewProject): dataExtract - clear previous extractGeojson, customLine, customPolygon on generate extract, btn disable state update

* fix (createNewProject): uploadArea - warning & error shown if AOI exceeds 100 & 1000 sq.km respectively

* fix: use organization_manager table for org admins

* fix (newProjectDetails): searchInput - width increased (#1111)

* fix (frontend): projection validity check using coordinates of extent (#1112)

* docs: link to docs.hotosm.org for versioning info

* refactor: remove variable from docker install script

* ci: add py310 version to black code formatter

* docs: add link to pre-commit info in docs

* refactor: renaming for consistency with database (#1114)

* docs: update info about interactive api debugging port

* docs: add timestamp to doc pages via plugin

* build: add git-revision-date-localized plugin to docs group

* ci: docs build use image from gh-workflows

* build: upgrade osm-fieldwork-->0.4.1, osm-rawdata-->0.2.6

* Fix condition in elif statement for Feature type detection

* docs: update markdown links from inline to reference (footnote) style (#1116)

* Clean up links in contributing

* done: CONTRIBUTING.md

* done: INSTALL.md

* done: User-Mantual-For-Project-Managers.md

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Moving script file to a new directory

* move new script file to a new directory

* deleted superfluous XINSTALL copy.md

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* refactor: fix linting errors in project_crud

* feat: paginated submissions by project (#1110)

* feat: submission form fields for the submision table

* feat: paginated submissions by project

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* refactor: format submission_routes, remove dup import

* refactor: fix incorrect import from app.submission

* run pre-commit

---------

Co-authored-by: sujanadh <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: spwoodcock <[email protected]>

* fix: tile archive download for projects

* refactor: refactor odk appuser + qrcode function naming

* refactor: add metadata_username to odk qr code as test

* docs: use code of conduct on docs.hotosm.org

* fix divide by square on multipolygon geojson

* build: upgrade fmtm-splitter v0.2.6 --> v1.0.0rc0 (#1122)

* feat: add test coverage metric (#1129)

* build: add coverage.py to test dependencies

* docs: add dev info about coverage and profiling

* refactor: add doxygen output to gitignore

* build: add coverage-badge to test deps

* ci: update all workflows v1.4.2 --> v1.4.3

* ci: add coverage output during deploy pytest

* docs: add coverage stats to readme

* build: lock dependencies after merge coverage+fmtm-splitter

* build: add coverage files to gitignore

* ci: update pytest workflow test to use coverage

* ci: update all workflows v1.4.3 --> v1.4.4

* docs: add coverage link to docs page sidebar

* hotfix: geom type not populated with feature type

* ci: add simple smoke test to frontend deploy

* feat: organisation approval and admin endpoints (#1126)

* dependencies to cehck if user_exists

* endpoint to add organisation admin

* added approved field in organisation model

* fix: table name in migration file for organisations

* feat: organisations list api updated according to role

* feat: endpoint to approve organisations

* update: get organisation endpoint for filtering approval

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* added docstrings

* fix: pre-commit linting errors

* added docstring in user_deps file

* build: add default odk credentials to organisations

* build: merge migrations to organisations table

* refactor: fix linting errors

* refactor: remove subscription_tier field for orgs

* build: add public.organisation.approved field to base schema

* refactor: remove extra url field from DbOrganisation

* refactor: fix organizationModel dir --> organisation for import

* fix: remove router get_db global dependency (on routes)

* fix: use separate super_admin + check_super_admin deps

* fix: update org_admin to also allow super_admin

* refactor: remove missed log.warning from organisations endpoint

* fix: separate Depends from logic, working org approval

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: spwoodcock <[email protected]>

* ci: fix frontend smoke test with .env file

* refactor: update project dashboard to use deps functions (#1127)

* Refactor: updated code to use deps function

* Created new deps function org_from_project

* fix: call check_org_exists logic from dependency

* refactor: var naming for consistency

---------

Co-authored-by: sujanadh <[email protected]>
Co-authored-by: spwoodcock <[email protected]>

* feat: paginated submissions per task (#1128)

* merge development

* feat: paginated submissions by task

---------

Co-authored-by: sujanadh <[email protected]>

* fix: Depends usage for task_submissions endpoint

* build: replace project.private field with project.visibility enum (#1132)

* build: remove project_allowed_users table from db

* build: remove odk_central_src field from project table

* refactor: tidy/reorder project db model fields

* build: remove project.task_creation_mode field + enum

* build: replace project.private field with project.visibility enum

* fix: fix visibility migration column add syntax

* fix: apply migration to projects table

* build: fix check for projectvisibility type in migration

* ci: update workflows 1.4.5 for mkdocs --dirty

* ci: add sleep 5 for frontend smoke test dev startup

* ci: replace black with ruff-format

* build: update docker install script to handle root user

* docs: add info about using pyright for type checking

* ci: add tool.pyright config section to pyproject.toml

* fix: use optional params for extra AuthUser items

* refactor: fix return type for organisation url validator

* feat: added withcredential to include cookies on organization list api

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* build: add deployment container replicas and resource constraints (#1139)

* build: update backend image to use 1 uvicorn worker

* build: add api deploy replicas, remove container_name

* build: default to 1 local replica for easier debug

* docs: update container name for docker logs cmd

* fix: return of AuthUser during debug tests + linting

* feat: endpoint to return count of validated and mapped tasks (#1138)

* feat: new endpoint to return count of validated and mapped task

* refactor: move to tasks router + use pydantic model

* refactor: rename task_activity route --> tasks/activity

---------

Co-authored-by: sujanadh <[email protected]>
Co-authored-by: spwoodcock <[email protected]>

* feat: add AOI editing to map during project creation (#1135)

* feat (createNewProject): mapControlComponent - mapControlComponent including edit, undo added

* feat AssetModules: icons added

* feat (createNewProject): splitTasks - edit task on editBtn click

* fix codeRefactor: consoles removed

* fix mapControlComponent: undoIcon removed

* refactor(frontend): use absolute (aliased) imports over relative imports (#1136)

* fix: add vite alias @ for src dir

* refactor(frontend): replace all relative imports with @ alias

* build: add lint command to package.json (eslint)

* build: add @ alias to tsconfig for type imports

* refactor: fix all linting errors from eslint

* fix: browser console errors incorrect React usage

* fix: add axios interceptor withCredentials, plus API const

* refactor: fix remaining relative imports

* refactor: remove withCredentials from org endpoint (use interceptor)

---------

Co-authored-by: Niraj Adhikari <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Nishit Suwal <[email protected]>
Co-authored-by: Niraj Adhikari <[email protected]>
Co-authored-by: sujanadh <[email protected]>
Co-authored-by: JC CorMan <[email protected]>
Co-authored-by: Sujan Adhikari <[email protected]>
Co-authored-by: Deepak Pradhan <[email protected]>
Co-authored-by: Deepak Pradhan (Varun) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend Related to backend code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants