isaacphysics / isaac-app

Isaac Physics historic front-end project, based on Angular JS
https://isaacphysics.org
MIT License
6 stars 1 forks source link

Revoking a Teacher Connection does not remove Assignment #667

Open hjp22 opened 8 years ago

hjp22 commented 8 years ago

Browser: Chrome

Connect with a teacher who has set an assignment (eg https://isaacphysics.org/account?authToken=NMU2Y2) 'Preworkshop Calculus' now appears in My Assignments. Revoke access to that teacher (My Account -> Teacher Connections -> Ally Davies revoke The assignment still appears in My Assignments.

Is this intended?
A student could sign up for a workshop, and then decide not to attend. In this scenario they would want to remove the assignment from their list, but at the moment there is no way (that I can see!) to remove it other than by completing it. Could there be an option to delete, or if we are worried that students will maliciously 'delete' their homework as an excuse not to do it, then perhaps to 'archive' it, where it moves to a list similar to the 'completed assignments' list.

jsharkey13 commented 8 years ago

Assignments belong to groups, not to students. Without a database rewrite on a huge scale, we can't change that.

There are a few things we could do instead:

daviesian commented 8 years ago

I agree that this isn't ideal behaviour. I think the correct answer is to not display assignments of groups that you have left. This is a medium amount of work, but not unrealistic.

sacummins commented 6 years ago

Ok I think I have an approach I like for solving this one now.

Changes

There are a number of changes I will make these include: 1) Enable group membership to have a status (Active, Inactive, Deleted) I agree with James' thought above.

2) Groups will have a status either active, deleted instead of just an archived flag

3) Add an updated time to the database so we can work out when a user has been made inactive in a group

4) Only when a student revokes access to their data for the last teacher who manages a group to which the student is a member, they will be prompted with a dialog box to invite them to set their group membership status to inactive.

5) Students can become active in a group again by reentering a group code.

6) Students may need some way of declaring them selves as inactive once they have revoked access to a teacher probably in the my assignments page or account settings connections page

Example

This is probably best explained with an example: S1 - Student 1 T1 - Teacher 1 T2 - Teacher 2 G1 - Group 1 owned by T1 with an additional manager of T2 G2 - Group 2 owned by T2

  1. S1 is already a member of G1 and G2 and has granted access to their data to both T1 and T2.
  2. S1 wants to revoke access to their data for T2 for some reason and does so in their account settings page.
  3. S1 is prompted to decide if they want to remain an active member of G2 only as this is only group that is entirely owned and managed by T2. If they say yes they will continue to receive assignments / email updates until they declare themselves as inactive later, if they say no they will immediately be declared as inactive.

Benefits

Side effects

We are exposing a little bit more information about groups to students than we have in the past. i.e. they may not have fully realised they were joining a group when they used a 'group token'

Final thoughts

Invariably, I will come up against interesting architectural problems with this along the way but I think its probably worth a try.

I will have to figure out a nice way to let users opt out later (if they opt to stay active in the group and change their mind).

Any thoughts before I start building @jsharkey13?

mlt47 commented 6 years ago

I like it. Points that we've mentioned in the office:

All current students who have previously revoked access to a teacher will have active groups so it is important that they should be able to deactivate them as you've suggested.

The students will probably be able to see the group names when deciding to deactivate, lets hope the teachers named their groups respectfully!

Describing what active and inactive means to the student could get a bit wordy.

Allowing the student to see and manage groups directly, depending on the use case might be easier (but in most cases add complexity?)

allydavies commented 6 years ago

It's worth pointing out that teachers (who've attended CPDs) have been told that students won't see the name of the group. I think teachers will need to be told in advance (just in case).

sacummins commented 6 years ago

Thanks @allydavies I can work around using the group names and just show group ids and the last assignment or something. Although it might be nicer for students and teachers alike if we expose the group names to both. Happy to work with you on scheduling comms before hand if we decide we want to do this. I will start building the other parts of this flow first.