2934 PO Remove reviewer access from supervisor parts of projects
This commit is contained in:
parent
0105f6a490
commit
bbba2c3dc2
core/src
main
java/se/su/dsv/scipro
resources/db/migration
test/java/se/su/dsv/scipro/project
view/src
main/java/se/su/dsv/scipro
activityplan
supervisor
test/java/se/su/dsv/scipro
activityplan
checklists
finalseminar
forum/pages
SupervisorForumBasePageTest.java
threaded
milestones/pages
supervisor/pages
@ -18,7 +18,7 @@ public interface ProjectService extends GenericService<Project, Long>, FilteredS
|
||||
|
||||
boolean isPartOfProject(Project project, User user);
|
||||
|
||||
boolean isSupervisorOrFollower(Project project, User user);
|
||||
boolean hasSupervisingRole(Project project, User user);
|
||||
|
||||
Member.Type getMemberType(Project project, User user);
|
||||
|
||||
|
@ -87,9 +87,8 @@ public class ProjectServiceImpl extends AbstractServiceImpl<Project, Long> imple
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSupervisorOrFollower(Project project, User user) {
|
||||
return Member.Type.SUPERVISOR == getMemberType(project, user) || Member.Type.CO_SUPERVISOR == getMemberType(project, user)
|
||||
|| Member.Type.REVIEWER == getMemberType(project, user);
|
||||
public boolean hasSupervisingRole(Project project, User user) {
|
||||
return Member.Type.SUPERVISOR == getMemberType(project, user) || Member.Type.CO_SUPERVISOR == getMemberType(project, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -42,7 +42,7 @@ public class UserProfile extends DomainObject {
|
||||
|
||||
@ElementCollection
|
||||
@Enumerated(EnumType.STRING)
|
||||
private Collection<ProjectTeamMemberRoles> defaultProjectTeamMemberRolesFilter = EnumSet.allOf(ProjectTeamMemberRoles.class);
|
||||
private Collection<ProjectTeamMemberRoles> defaultProjectTeamMemberRolesFilter = EnumSet.of(ProjectTeamMemberRoles.CO_SUPERVISOR);
|
||||
|
||||
@Basic(optional = false)
|
||||
private boolean defaultSupervisorFilter = true;
|
||||
|
2
core/src/main/resources/db/migration/V379__remove_reviewer_as_role_for_supervisor_projects.sql
Normal file
2
core/src/main/resources/db/migration/V379__remove_reviewer_as_role_for_supervisor_projects.sql
Normal file
@ -0,0 +1,2 @@
|
||||
DELETE FROM UserProfile_defaultProjectTeamMemberRolesFilter
|
||||
WHERE defaultProjectTeamMemberRolesFilter = 'REVIEWER';
|
@ -236,19 +236,19 @@ public class ProjectServiceImplIntegrationTest extends IntegrationTest {
|
||||
|
||||
@Test
|
||||
public void is_supervisor_or_reviewer() {
|
||||
assertFalse(projectService.isSupervisorOrFollower(project, user));
|
||||
assertFalse(projectService.hasSupervisingRole(project, user));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void is_reviewer() {
|
||||
project.addReviewer(user);
|
||||
assertTrue(projectService.isSupervisorOrFollower(project, user));
|
||||
assertFalse(projectService.hasSupervisingRole(project, user));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void is_co_supervisor() {
|
||||
project.addCoSupervisor(user);
|
||||
assertTrue(projectService.isSupervisorOrFollower(project, user));
|
||||
assertTrue(projectService.hasSupervisingRole(project, user));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -62,14 +62,14 @@ public class ProjectServiceImplTest {
|
||||
Project project = new Project();
|
||||
project.addReviewer(user);
|
||||
|
||||
assertTrue(projectService.isSupervisorOrFollower(project, user));
|
||||
assertFalse(projectService.hasSupervisingRole(project, user));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isNotSupervisorOrFollower() {
|
||||
User user = new UserBuilder().create();
|
||||
|
||||
assertFalse(projectService.isSupervisorOrFollower(project, user));
|
||||
assertFalse(projectService.hasSupervisingRole(project, user));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -215,7 +215,7 @@ public class ActivityPlanPanel extends GenericPanel<Project> {
|
||||
}
|
||||
|
||||
private boolean hasSupervisingRole() {
|
||||
return projectService.isSupervisorOrFollower(getProject(), SciProSession.get().getUser());
|
||||
return projectService.hasSupervisingRole(getProject(), SciProSession.get().getUser());
|
||||
}
|
||||
|
||||
private class TitleCell extends Fragment {
|
||||
|
@ -74,7 +74,7 @@ public abstract class AbstractSupervisorProjectDetailsPage extends AbstractSuper
|
||||
if (project == null) {
|
||||
throw new RestartResponseException(getApplication().getHomePage());
|
||||
}
|
||||
if (!projectService.isSupervisorOrFollower(project, SciProSession.get().getUser())) {
|
||||
if (!projectService.hasSupervisingRole(project, SciProSession.get().getUser())) {
|
||||
throw new RestartResponseException(AccessDeniedPage.class);
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ public class SupervisorMyProjectsPanel extends Panel {
|
||||
updateProfileWithCurrentFilter();
|
||||
}
|
||||
});
|
||||
add(new AjaxCheckBoxMultipleChoice<>(ROLE_FILTER, LambdaModel.of(filterParams, ProjectService.Filter::getRoles, ProjectService.Filter::setRoles), asList(ProjectTeamMemberRoles.values()), new EnumChoiceRenderer<>(this)) {
|
||||
add(new AjaxCheckBoxMultipleChoice<>(ROLE_FILTER, LambdaModel.of(filterParams, ProjectService.Filter::getRoles, ProjectService.Filter::setRoles), List.of(ProjectTeamMemberRoles.CO_SUPERVISOR), new EnumChoiceRenderer<>(this)) {
|
||||
@Override
|
||||
public void onUpdate(AjaxRequestTarget target) {
|
||||
target.add(dataPanel);
|
||||
|
@ -43,7 +43,7 @@ public class SupervisorEditActivityPageTest extends SciProTest {
|
||||
.build();
|
||||
DomainObjects.injectId(project, 1L);
|
||||
when(projectService.findOne(ArgumentMatchers.anyLong())).thenReturn(project);
|
||||
when(projectService.isSupervisorOrFollower(project, user)).thenReturn(false);
|
||||
when(projectService.hasSupervisingRole(project, user)).thenReturn(false);
|
||||
|
||||
ActivityPlan activityPlan = new ActivityPlan();
|
||||
activityPlan.setProject(project);
|
||||
@ -71,7 +71,7 @@ public class SupervisorEditActivityPageTest extends SciProTest {
|
||||
.build();
|
||||
DomainObjects.injectId(project, 1L);
|
||||
when(projectService.findOne(ArgumentMatchers.anyLong())).thenReturn(project);
|
||||
when(projectService.isSupervisorOrFollower(project, user)).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(project, user)).thenReturn(true);
|
||||
|
||||
ActivityPlan activityPlan = new ActivityPlan();
|
||||
activityPlan.setProject(project);
|
||||
|
@ -43,7 +43,7 @@ public class SupervisorViewChecklistPageTest extends PageTest {
|
||||
checklist.setId(2L);
|
||||
Mockito.when(checklistService.findOne(ArgumentMatchers.isA(Long.class))).thenReturn(checklist);
|
||||
Mockito.when(projectService.findOne(ArgumentMatchers.isA(Long.class))).thenReturn(checklist.getProject());
|
||||
Mockito.when(projectService.isSupervisorOrFollower(ArgumentMatchers.isA(Project.class), ArgumentMatchers.isA(User.class))).thenReturn(true);
|
||||
Mockito.when(projectService.hasSupervisingRole(ArgumentMatchers.isA(Project.class), ArgumentMatchers.isA(User.class))).thenReturn(true);
|
||||
|
||||
ChecklistQuestion question = new ChecklistQuestion("", 1);
|
||||
List<ChecklistQuestion> questions = new ArrayList<>();
|
||||
|
@ -35,7 +35,7 @@ public class SupervisorFinalSeminarPageTest extends PageTest {
|
||||
.build();
|
||||
DomainObjects.injectId(project, 1L);
|
||||
when(projectService.findOne(ArgumentMatchers.isA(Long.class))).thenReturn(project);
|
||||
when(projectService.isSupervisorOrFollower(ArgumentMatchers.isA(Project.class), ArgumentMatchers.isA(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(ArgumentMatchers.isA(Project.class), ArgumentMatchers.isA(User.class))).thenReturn(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -39,7 +39,7 @@ public class SupervisorForumBasePageTest extends SciProTest {
|
||||
.build();
|
||||
DomainObjects.injectId(project, 1L);
|
||||
when(projectService.findOne(isA(Long.class))).thenReturn(project);
|
||||
when(projectService.isSupervisorOrFollower(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
setRoles(Roles.values());
|
||||
setLoggedIn(true);
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public class SupervisorCreateForumThreadPageTest extends PageTest {
|
||||
DomainObjects.injectId(project, 1L);
|
||||
when(projectService.findOne(isA(Long.class))).thenReturn(project);
|
||||
|
||||
when(projectService.isSupervisorOrFollower(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
tester.startPage(SupervisorCreateForumThreadPage.class, getPageParameters());
|
||||
}
|
||||
|
||||
|
@ -48,7 +48,7 @@ public class SupervisorThreadedForumPageTest extends PageTest {
|
||||
project.setStartDate(LocalDate.now());
|
||||
when(projectService.findOne(isA(Long.class))).thenReturn(project);
|
||||
|
||||
when(projectService.isSupervisorOrFollower(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
page = tester.startPage(SupervisorThreadedForumPage.class, getPageParameters());
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ public class SupervisorViewForumThreadPageTest extends PageTest {
|
||||
thread = new ForumBuilder().createThread();
|
||||
when(projectForumService.findOne(isA(Long.class))).thenReturn(thread);
|
||||
|
||||
when(projectService.isSupervisorOrFollower(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
page = tester.startPage(SupervisorViewForumThreadPage.class, getPageParameters());
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ public class SupervisorMilestonePageTest extends PageTest {
|
||||
.build();
|
||||
DomainObjects.injectId(project, 1L);
|
||||
when(projectService.findOne(isA(Long.class))).thenReturn(project);
|
||||
when(projectService.isSupervisorOrFollower(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
page = tester.startPage(SupervisorMileStonePage.class, getPageParameters());
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ public abstract class SupervisorPageTest extends PageTest {
|
||||
setLoggedInAs(project.getHeadSupervisor());
|
||||
|
||||
when(projectService.findOne(anyLong())).thenReturn(project);
|
||||
when(projectService.isSupervisorOrFollower(any(Project.class), any(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(any(Project.class), any(User.class))).thenReturn(true);
|
||||
}
|
||||
|
||||
protected Project createProject() {
|
||||
|
@ -36,7 +36,7 @@ public class SupervisorProjectDetailsPageTest extends PageTest {
|
||||
masterProject = createProject(headSupervisor, student,
|
||||
new ProjectType(DegreeType.MASTER, "master", "master"), 3L);
|
||||
when(projectService.findOne(isA(Long.class))).thenReturn(bachelorProject);
|
||||
when(projectService.isSupervisorOrFollower(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
when(projectService.hasSupervisingRole(isA(Project.class), isA(User.class))).thenReturn(true);
|
||||
FileDescription fileDescription = new FileDescription();
|
||||
fileDescription.setMimeType("pdf");
|
||||
fileDescription.setId(1L);
|
||||
|
@ -54,9 +54,9 @@ public class SupervisorStartPageTest extends SciProTest {
|
||||
|
||||
@Test
|
||||
public void selecting_role_updates_filter() {
|
||||
ProjectTeamMemberRoles role = ProjectTeamMemberRoles.REVIEWER;
|
||||
ProjectTeamMemberRoles role = ProjectTeamMemberRoles.CO_SUPERVISOR;
|
||||
|
||||
filterForm().select(SupervisorMyProjectsPanel.ROLE_FILTER, role.ordinal()).submit();
|
||||
filterForm().select(SupervisorMyProjectsPanel.ROLE_FILTER, 0).submit();
|
||||
|
||||
assertThat(getFilterParams().getRoles(), hasItem(role));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user