Skip to content

Commit 70d25bb

Browse files
authored
SAK-46567 Set correct evaluated_item_owner_id for group assignments (sakaiproject#10134)
https://sakaiproject.atlassian.net/browse/SAK-46567
1 parent 833c0dc commit 70d25bb

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

gradebookng/tool/pom.xml

+4
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@
7070
<groupId>org.sakaiproject.edu-services.sections</groupId>
7171
<artifactId>sections-api</artifactId>
7272
</dependency>
73+
<dependency>
74+
<groupId>org.sakaiproject.assignment</groupId>
75+
<artifactId>sakai-assignment-api</artifactId>
76+
</dependency>
7377
<dependency>
7478
<groupId>org.sakaiproject.rubrics</groupId>
7579
<artifactId>rubrics-service-api</artifactId>

gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/BasePanel.java

+9
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import org.apache.wicket.request.cycle.RequestCycle;
2525
import org.apache.wicket.request.mapper.parameter.PageParameters;
2626
import org.apache.wicket.spring.injection.annot.SpringBean;
27+
28+
import org.sakaiproject.assignment.api.AssignmentService;
29+
import org.sakaiproject.authz.api.AuthzGroupService;
2730
import org.sakaiproject.component.api.ServerConfigurationService;
2831
import org.sakaiproject.gradebookng.business.GbRole;
2932
import org.sakaiproject.gradebookng.business.GradebookNgBusinessService;
@@ -49,6 +52,12 @@ public abstract class BasePanel extends Panel {
4952
@SpringBean(name = "org.sakaiproject.rubrics.logic.RubricsService")
5053
protected RubricsService rubricsService;
5154

55+
@SpringBean(name = "org.sakaiproject.assignment.api.AssignmentService")
56+
protected AssignmentService assignmentService;
57+
58+
@SpringBean(name = "org.sakaiproject.authz.api.AuthzGroupService")
59+
protected AuthzGroupService authzGroupService;
60+
5261
@SpringBean(name = "org.sakaiproject.component.api.ServerConfigurationService")
5362
protected ServerConfigurationService serverConfigService;
5463

gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/GradeSummaryTablePanel.java

+29-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Arrays;
2121
import java.util.List;
2222
import java.util.Map;
23+
import java.util.Optional;
2324

2425
import org.apache.commons.lang3.StringUtils;
2526
import org.apache.wicket.AttributeModifier;
@@ -37,6 +38,9 @@
3738
import org.apache.wicket.model.IModel;
3839
import org.apache.wicket.model.Model;
3940
import org.apache.wicket.model.StringResourceModel;
41+
42+
import org.sakaiproject.authz.api.AuthzGroup;
43+
import org.sakaiproject.authz.api.GroupNotDefinedException;
4044
import org.sakaiproject.gradebookng.business.GbRole;
4145
import org.sakaiproject.gradebookng.business.model.GbGradeInfo;
4246
import org.sakaiproject.gradebookng.business.util.FormatHelper;
@@ -382,7 +386,31 @@ public boolean isVisible() {
382386
String[] bits = assignment.getExternalId().split("/");
383387
if (bits != null && bits.length >= 1) {
384388
String assignmentId = bits[bits.length-1];
385-
String submissionId = rubricsService.getRubricEvaluationObjectId(assignmentId, studentUuid, RubricsConstants.RBCS_TOOL_ASSIGNMENT);
389+
String ownerId = studentUuid;
390+
try {
391+
org.sakaiproject.assignment.api.model.Assignment assignmentsAssignment = assignmentService.getAssignment(assignmentId);
392+
if (assignmentsAssignment.getIsGroup()) {
393+
Optional<String> groupId = assignmentsAssignment.getGroups().stream().filter(g -> {
394+
395+
try {
396+
AuthzGroup group = authzGroupService.getAuthzGroup(g);
397+
return group.getMember(studentUuid) != null;
398+
} catch (GroupNotDefinedException gnde) {
399+
return false;
400+
}
401+
}).findAny();
402+
403+
if (groupId.isPresent()) {
404+
ownerId = groupId.get();
405+
} else {
406+
log.error("Assignment {} is a group assignment, but {} was not in any of the groups", assignmentId, studentUuid);
407+
}
408+
}
409+
} catch (Exception e) {
410+
log.error("Failed to determine ownerId for submission", e);
411+
}
412+
413+
String submissionId = rubricsService.getRubricEvaluationObjectId(assignmentId, ownerId, RubricsConstants.RBCS_TOOL_ASSIGNMENT);
386414
sakaiRubricButton.add(AttributeModifier.append("entity-id", assignmentId));
387415
sakaiRubricButton.add(AttributeModifier.append("evaluated-item-id", submissionId));
388416
} else {

rubrics/impl/src/main/java/org/sakaiproject/rubrics/logic/RubricsServiceImpl.java

-2
Original file line numberDiff line numberDiff line change
@@ -606,8 +606,6 @@ private Optional<EntityModel<ToolItemRubricAssociation>> getRubricAssociationRes
606606
return associationResource;
607607
}
608608

609-
//TODO generate a public String postRubricAssociation(String tool, String id, HashMap<String,String> params)
610-
611609
public String getRubricEvaluationObjectId(String associationId, String userId, String toolId) {
612610
try {
613611
URI apiBaseUrl = new URI(serverConfigurationService.getServerUrl() + RBCS_SERVICE_URL_PREFIX);

0 commit comments

Comments
 (0)