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

Ta deletion #7304

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open

Conversation

anubhajoshi01
Copy link
Contributor

@anubhajoshi01 anubhajoshi01 commented Nov 20, 2024

Proposed Changes

(Describe your changes here. Also describe the motivation for your changes: what problem do they solve, or how do they improve the application or codebase? If this pull request fixes an open issue, use a keyword to link this pull request to the issue.)

Added functionality to give instructors the ability to delete TAs from courses on the Users/Graders tab. This involved adding a delete button on the actions menu, along with a destroy function on the controller. NOTE: A Ta cant be deleted if they have a note
...

Screenshots of your changes (if applicable) The new delete button Screenshot 2024-11-20 at 5 20 38 PM

After succesful delete
Screenshot 2024-11-20 at 5 21 08 PM

Associated documentation repository pull request (if applicable)

Type of Change

(Write an X or a brief description next to the type or types that best describe your changes.)

Type Applies?
🚨 Breaking change (fix or feature that would cause existing functionality to change)
New feature (non-breaking change that adds functionality) X
🐛 Bug fix (non-breaking change that fixes an issue)
🎨 User interface change (change to user interface; provide screenshots) X
♻️ Refactoring (internal change to codebase, without changing functionality)
🚦 Test update (change that only adds or modifies tests)
📦 Dependency update (change that updates a dependency)
🔧 Internal (change that only affects developers or continuous integration)

Checklist

(Complete each of the following items for your pull request. Indicate that you have completed an item by changing the [ ] into a [x] in the raw text, or by clicking on the checkbox in the rendered description on GitHub.)

Before opening your pull request:

  • I have performed a self-review of my changes.
    • Check that all changed files included in this pull request are intentional changes.
    • Check that all changes are relevant to the purpose of this pull request, as described above.
  • I have added tests for my changes, if applicable.
    • This is required for all bug fixes and new features.
  • I have updated the project documentation, if applicable.
    • This is required for new features.
  • If this is my first contribution, I have added myself to the list of contributors.

After opening your pull request:

  • I have updated the project Changelog (this is required for all changes).
  • I have verified that the pre-commit.ci checks have passed.
  • I have verified that the CI tests have passed.
  • I have reviewed the test coverage changes reported by Coveralls.
  • I have requested a review from a project maintainer.

Questions and Comments

(Include any questions or comments you have regarding your changes.)

@coveralls
Copy link
Collaborator

coveralls commented Nov 21, 2024

Pull Request Test Coverage Report for Build 11966359745

Warning: This coverage report may be inaccurate.

This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

Details

  • 80 of 80 (100.0%) changed or added relevant lines in 8 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.01%) to 91.706%

Totals Coverage Status
Change from base Build 11922195671: 0.01%
Covered Lines: 40904
Relevant Lines: 43933

💛 - Coveralls

@@ -1,15 +1,22 @@
# TA user for a given course.
class Ta < Role
has_one :grader_permission, dependent: :destroy, foreign_key: :role_id, inverse_of: :ta

Copy link
Contributor

Choose a reason for hiding this comment

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

revert this change

@role = record
begin
@role.destroy!
flash_now(:success, I18n.t('flash.tas.destroy.success', user_name: @role.user_name))
Copy link
Contributor

Choose a reason for hiding this comment

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

put this line in an else block (look up the syntax for else with begin/rescue) as this indicates that the code should only run if no error was triggered

Also, this is a good time to use head to send an appropriate status code in the response. For DELETE, use :ok for a success, :conflict for the delete restriction error, and :bad_request for other errors

compose.yaml Outdated
@@ -1,138 +0,0 @@
services:
Copy link
Contributor

Choose a reason for hiding this comment

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

Nothing in this file should be changed. This is the kind of thing you should be looking out for in your self-review.

@@ -43,5 +43,6 @@ en:
one: Grader
other: Graders
user:
deleted: "(deleted)"
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this is more general. Please move this label to be under common/en.yml, and name it deleted_placeholder, since it isn't just the word "deleted" but the parentheses as well

@@ -42,5 +42,6 @@ en:
help_html: The API key is used for authentication for the MarkUs API. See <a href="https://github.com/MarkUsProject/Wiki/blob/%{markus_version}/RESTful-API.md">MarkUs Wiki</a> for information on using the API.
reset: Reset API key
unavailable: Unavailable
deleted: "(deleted)"
Copy link
Contributor

Choose a reason for hiding this comment

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

this is redundant; see above comment

create(:grade_entry_student_ta, ta: ta, grade_entry_student: student.grade_entry_students.first)

sign_in instructor
delete :destroy, params: { course_id: course.id, id: ta.id }
Copy link
Contributor

Choose a reason for hiding this comment

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

similar to my above comment, use delete_as instead of sign_in + delete

end

it 'deletes associated grader permisison' do
expect(GraderPermission.where(role_id: ta.id).count).to eq(0)
Copy link
Contributor

Choose a reason for hiding this comment

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

you can use exists? here as well, instead of the .count equaling 0

if include_creator
data[:creator] = creator.display_name
end
data[:creator] = include_creator && creator ? creator.display_name : I18n.t('users.deleted')
Copy link
Contributor

Choose a reason for hiding this comment

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

Don't merge the include_create check with the creator check; keep the overall if statement the way it was before, but then inside use just creator ? ... This ensures that the :creator key is not included at all when include_creator is false, which is the existing (and intended) behaviour.

Also use creator.present? instead of just creator to be more explicit.

@@ -1458,3 +1458,21 @@ canvas {
.jcrop-centered {
display: inline-block;
}

// For Actions row
Copy link
Contributor

Choose a reason for hiding this comment

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

I reviewed this and overall while I appreciate the desire to make the options look nice, I don't think this change is consistent with the rest of the MarkUs UI. Please instead follow the style of existing tables: use the tags table as a model (under an assignment's Settings -> Tags page).

@@ -36,6 +36,13 @@ class TATable extends React.Component {
});
}

removeTA = ta_id => {
$.ajax({
Copy link
Contributor

Choose a reason for hiding this comment

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

This is correct, but for new methods prefer using fetch instead of $.ajax (we're slowly trying to move away from jQuery entirely).

See https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch, and note you can pass a method configuration option

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.

3 participants