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

[Backend] Remove and edit post route and methods to update and delete a post from the discussion section #157

Conversation

JmScherer
Copy link
Collaborator

@JmScherer JmScherer commented Jan 22, 2024

Checklist before requesting a review

  • I have performed a self-review of my code.
  • My code follows the style guidelines enforced by static analysis tools.
  • If it is a core feature, I have added thorough tests.
  • My changes generate no new warnings.
  • New and existing unit tests pass locally with my changes.
  • Will this be part of a product update? If yes, please write one phrase about this update.

Pull Request Details

[Backend] Remove and edit post route and methods to update and delete a post from the discussion section

Changes made:

This pull request adds the routes to edit and delete discussion posts in an analysis discussion section.

Get Analysis Discussion Get Route

  • @router.get("/{analysis_name}/discussions")
    • analysis_name

Edit Analysis Discussion Post Route

  • @router.put("/{analysis_name}/disussions/{discussion_post_id}")
    • analysis_name
    • client_id

Delete Analysis Discussion Post Route

  • @router.delete("/{analysis_name}/discussions/{discussion_post_id}")
    • analysis_name
    • client_id

To Review:

  • Static Analysis by Reviewer
  • The changes made to < describe purpose of change > are working as intended/rendered correctly.
    To check this run the following commands:
    # From the root of Rosalution
    docker compose down
    docker system prune -a --volumes
    
    docker compose up --build -d
  • Go to https://local.rosalution.cgds/rosalution/
    • Login as developer
    • In the upper left, click the developer text
    • Click the Generate Secret button
    • Make note of the Client Id and Client Secret
  • In a new tab, open https://local.rosalution.cgds/rosalution/api/docs
    • Click the green Authorize button at the top of the page
    • Enter your Client Id and Client Secret and click Authorize then click Close
  • Open the Get Analysis Discussions route - GET /analysis/{analysis_name}/discussions
    • Click Try it Out and enter CPAM0002 in the analysis_name
    • Click Execute
    • Copy the post_id from the first post made by Developer Person
  • Open the Update Analysis Discussion Post - PUT /analysis/{analysis_name}/discussions/{discussion_post_id}
    • Enter CPAM0002 into analysis_name
    • Paste 9027ec8d-6298-4afb-add5-6ef710eb5e98 into discussion_post_id
    • Enter any text you want into the discussion_content
    • Click Execute
    • Does the Developer Person post contain the discussion_content in the content field?
    • Bonus: Go back to Rosalution frontend - did the post content change?
  • Open the Delete Analysis Discussion - DELETE /analysis/{analysis_name}/discussions/{discussion_post_id}
    • Enter CPAM0002 in the analysis_name
    • Enter 9027ec8d-6298-4afb-add5-6ef710eb5e98 as the discussion_post_id
    • Click Execute
    • Was the post removed entirely?
    • Bonus: Check Rosalution frontend - was the post content removed?
  • All Github Actions checks have passed.

Get Analysis Discussion Get Route

Screenshot 2024-01-22 at 9 44 11 AM

Edit Analysis Discussion Post Route

Screenshot 2024-01-22 at 9 50 50 AM

Screenshot 2024-01-22 at 9 51 15 AM

Delete Analysis Discussion Post Route

Screenshot 2024-01-22 at 9 54 17 AM

Screenshot 2024-01-22 at 9 54 41 AM

@JmScherer JmScherer added the enhancement New feature or request label Jan 22, 2024
@JmScherer JmScherer self-assigned this Jan 22, 2024
@JmScherer JmScherer changed the title [Backend] Remove post route and methods to delete a post from the discussion section [Backend] Remove and edit post route and methods to update and delete a post from the discussion section Jan 22, 2024
Copy link
Collaborator

@SeriousHorncat SeriousHorncat left a comment

Choose a reason for hiding this comment

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

Stepping through the new code works great!!! Just some cleanup and one more unit test to wrap it up. Functionally it works great. Liked how you phrased the test of trying to find a valid post and saying that its valid if the discsusion id authoring by that client exists.

  • Getting Discussions
    image

  • Using PUT to Update Discussion
    image

    • Bonus
      image
  • Deleting a post
    image

    • Bonus
      image

Copy link
Collaborator

@SeriousHorncat SeriousHorncat left a comment

Choose a reason for hiding this comment

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

Just a few print statements to get removed and then it is ready to go!

backend/tests/integration/test_analysis_routers.py Outdated Show resolved Hide resolved
backend/src/routers/analysis_discussion_router.py Outdated Show resolved Hide resolved
backend/src/models/analysis.py Show resolved Hide resolved
JmScherer and others added 3 commits January 22, 2024 15:05
Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>
Signed-off-by: James Scherer <james.m.scherer@gmail.com>
Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>
Signed-off-by: James Scherer <james.m.scherer@gmail.com>
@JmScherer JmScherer merged commit c663af1 into feature-collab-analysis-discussion Jan 22, 2024
8 checks passed
@JmScherer JmScherer deleted the modify-discussion-post-backend-routes branch January 22, 2024 22:04
JmScherer added a commit that referenced this pull request Feb 9, 2024
* [Frontend] Create a new discussion component to be displayed in an Analysis view (#139)

* Updating the paper to include the country for each affiliation which is required for publication.

* Updated the system tests workflow to use electron (#140)

* Added a DiscussionsSection.vue in AnalysisView components, updated the analysis model to return an injected discussion object, and updating the styling of the buttons to match figma more closely

* The discussion collapse works

* Looks ready for a pull request

* Tests should be working now

* Left out the node test

* Updating CSS in a few places

* Updating the DiscussionSection values

---------

Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>

* Created a discussions property in each of the analyses with several posts within them. Removed the temp fixture used in the frontend (#141)

* Fixed frontend unit test with AnalysisView

* fixed line too long

* Missed the updated json

* Changed formatting on the /etc/fixtures/analyses.json

* removed the etc/.certificate files

* Displaying discussion posts (#150)

* New Discussions post button, text field, and save/publish buttons

* Creating temporary discussion API mock api endpoints to test integrating them into the frontend

* Displaying posts from an analysis

* Hooked up the discussion post to the backend and return a mock discussions post. Added styling to the discussion posts

* Updated CSS to alternate discussion post colors

* Added more unit test coverage on the frontend and linted

* Added system tests and data-test attributes to go along with it

---------

Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>

* [Frontend] Clicking the "New Discussion" button opens a field below the header line divider to enter an opinion (#151)

* New Discussions post button, text field, and save/publish buttons

* Displaying posts from an analysis

* Added more unit test coverage on the frontend and linted

* Toggles New Discussion Field

* added system and unit tests for the discussion section

* forgot to add the system test

* Minor CSS fixes

* [Backend] Add a new route and repository to handle an incoming post and save it in Mongo (#153)

* Added a new collection to update a new post along with a test and linting

* Fixing python unit test

* Integration test and linting

* Updated the analysis_collection add_discussion_post function to use pymongo find_one_and_update function to simplify how posts are added to discussions in analyses

* linting

* New migration script to ensure both supporting_evidence_files and discussions keys are added to each analysis object in the analyses collection (#154)

* Updated phenotips importer to include supporting_evidence_files and discussions field. Updated the analyses fixture to include these fields as well (#155)

* Adding context menu to discussion posts (#156)

* added actions to the discussion post context menus

* Changed the backend user object to send back the clientId in the basic user object, this is used to check if the user made a post and present a context menu

* new ContextMenu.vue duplicates the DropDownMenu.vue functionality and turns it from hover to click. This is not quite right

* lots of changes: swapped dropdown and contextmenu icons, contextmenu will now open on click and close when unfocused or an action is taken on the menu. ContextMenu styling changes

* Fixed frontend test

* Lots of fixes, trying to figure out how to test this

* Frontend linting

* Removed a .only in front end test

* [Backend] Remove and edit post route and methods to update and delete a post from the discussion section (#157)

* Added a delete route and delete post analysis collection function

* Added a new route for editing a post and matching collection function, also added error checking for different situations in modifying discussion posts in an analysis

* Change responsibilities of routes and put helper function to find discussion post in analysis model

* proper error handling for discussion posts in progress

* Removed the discussion fixtures and properly gets the discussion posts from the analysis

* Finished integration and unit tests for updating and deleting a discussion post

* Formatting/linting

* Fixed integration test

* Added unit and integration tests for analysis model and routers

* Update backend/src/routers/analysis_discussion_router.py

Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>
Signed-off-by: James Scherer <james.m.scherer@gmail.com>

* Update backend/tests/integration/test_analysis_routers.py

Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>
Signed-off-by: James Scherer <james.m.scherer@gmail.com>

* linting

---------

Signed-off-by: James Scherer <james.m.scherer@gmail.com>
Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>

* [Frontend] The vertical '...' context menu functions to delete posts (#158)

* Frontend discussion post deletion working, complete with notification dialog

* Adding a system test for successfully deleting a new discussion post

* fixing frontend unit tests and adding an extra system test

* Linting

* Changed the delete action in the context menu to have an emit key and chain the emits down the section to be called in the view to delete a post

* Linting and changing var names

* Lots of frontend unit tests, but not yet finished

* Added more tests and linting

* Fixed issue with contextId being renamed

* Removed console log

* [Frontend] The vertical '...' context menu functions to edit posts (#160)

* Frontend discussion post deletion working, complete with notification dialog

* Adding a system test for successfully deleting a new discussion post

* fixing frontend unit tests and adding an extra system test

* Linting

* Changed the delete action in the context menu to have an emit key and chain the emits down the section to be called in the view to delete a post

* Linting and changing var names

* Lots of frontend unit tests, but not yet finished

* Added more tests and linting

* Fixed issue with contextId being renamed

* Removed console log

* Edit post emit chain working and backend is saving properly, it's just the discussion content is the same as what's posted

* Now editing a post works, it edits the post in place

* More styling for the post editing

* Frontend linting

* Frontend tests and linting

* Added system tests for post editing

* Update .github/workflows/system-tests.yml

Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>
Signed-off-by: James Scherer <james.m.scherer@gmail.com>

* Update backend/src/routers/analysis_router.py

Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>
Signed-off-by: James Scherer <james.m.scherer@gmail.com>

* skipping the a test in rosalution_analysis to match main, will come back later

---------

Signed-off-by: James Scherer <james.m.scherer@gmail.com>
Co-authored-by: Angelina Uno-Antonison <ange.unoantonison@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants