|
View:
New views
14 Messages
—
Rating Filter:
Alert me
|
|
|
[Building Sakai] Use of GradebookService as a web serviceDear Sakai Developers,
I'm trying to develop a new web service for getting information from Gradebook, but I have been struggling from using GradebookService. For example, I can call gradebookService.isGradebookDefined successfully when I use gradebookService = (GradebookService) ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); as seen in the following simple code. But, it is failed when I use gradebookService = (GradebookService) ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); in line 31. I'm probably misunderstanding something. I really appreciate if someone gives me any pointer to address this. Best regards, Shoji Kajita Kyoto University ---- 01: import org.apache.axis.AxisFault; 02: import org.apache.commons.logging.Log; 03: import org.apache.commons.logging.LogFactory; 04: import org.sakaiproject.service.gradebook.shared.GradebookService; 05: import org.sakaiproject.tool.api.Session; 06: import org.sakaiproject.tool.api.SessionManager; 07: import org.sakaiproject.component.cover.ComponentManager; 08: 09: public class CourseGradebook { 10: 11: private GradebookService gradebookService; 12: private SessionManager sessionManager; 13: 14: private static Log LOG = LogFactory.getLog(CourseGradebook.class); 15: 16: private Session establishSession(String sessionId) throws AxisFault 17: { 18: Session s = sessionManager.getSession(sessionId); 19: 20: if (s == null) 21: { 22: throw new AxisFault("Session \""+sessionId+"\" is not active"); 23: } 24: s.setActive(); 25: sessionManager.setCurrentSession(s); 26: return s; 27: } 28: 29: public CourseGradebook() { 30: // gradebookService = (GradebookService) ComponentManager.get(GradebookService.class.getName()); 31: gradebookService = (GradebookService) ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); 32: // gradebookService = (GradebookService) ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); 33: sessionManager = (SessionManager) ComponentManager.get(SessionManager.class.getName()); 34: } 35: 36: public String getCompletedDate(String sessionId, String siteId) throws AxisFault { 37: 38: Session session = establishSession(sessionId); 39: 40: String gbID = siteId; 41: if (!gradebookService.isGradebookDefined(gbID)) { 42: System.out.println("Debug: Not found."); 43: return "No gradebook found for this site."; 44: } 45: return "Gradebook found for this site."; 46: } 47: 48: } ----- _______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceHi Shoji! For gradebook, they're probably just named differently, for whatever reason. Look at this webservice for some example gradebook code for getting gradebooks and grades. Hopefully you can use this for whatever you need.
And I think this one on confluence still works too? -Matthew On Sat, May 19, 2012 at 10:13 PM, Shoji Kajita <kajita@...> wrote: Dear Sakai Developers, _______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceShoji,
If you look here You will find some simple calls to the gradebook service to set grades. Here It makes gradebook items. I borrowed the code from the Assignments tool/ /Chuck On May 19, 2012, at 10:13 PM, Shoji Kajita wrote:
_______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceHi Chuck and Matthew,
Thank you for your advices. I'm now taking a look on these pointers and getting close to work. However, I'm still getting the following exception: java.lang.SecurityException : User shoji attempted to access grade information for student kajita without permission in gb 8e328a23-c343-40cc-bcb0-547553b9cd46 using gradebookService.getGradesForStudentsForItem As far as I see, "shoji" has the permission to grade because he has the maintain role. Any thoughts? Best regards, Shoji At Sun, 20 May 2012 12:59:33 -0400, Charles Severance wrote: > > [1 <text/plain; us-ascii (quoted-printable)>] > Shoji, > > If you look here > > https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-blis/src/java/org/sakaiproject/blti/ServiceServlet.java > > You will find some simple calls to the gradebook service to set grades. > > Here > > https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-portlet/src/java/org/sakaiproject/portlets/IMSBLTIPortlet.java > > It makes gradebook items. > > I borrowed the code from the Assignments tool/ > > /Chuck > At Sat, 19 May 2012 23:50:30 -0400, Matthew Jones wrote: > > Hi Shoji! > > This probably just looks like a confusing special case. You have to use > component manager to get the beans from the spring components, then cast it > to the interfaces (apis) that are in shared. > > For gradebook, they're probably just named differently, for whatever reason. > > Look at this webservice for some example gradebook code for getting > gradebooks and grades. Hopefully you can use this for whatever you need. > https://source.sakaiproject.org/svn/msub/longsight.com/webservices/webservices-1.0.x/axis/src/webapp/WSLongsight.jws > > > And I think this one on confluence still works too? > https://confluence.sakaiproject.org/display/~steve.swinsburg/Additional+web+services+for+Sakai#AdditionalwebservicesforSakai-SakaiGradebook > > -Matthew > > On Sat, May 19, 2012 at 10:13 PM, Shoji Kajita <kajita@...> wrote: > > > Dear Sakai Developers, > > > > I'm trying to develop a new web service for getting information from > > Gradebook, but I have been struggling from using GradebookService. > > > > For example, I can call > > > > gradebookService.isGradebookDefined > > > > successfully when I use > > > > gradebookService = (GradebookService) > > ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); > > > > as seen in the following simple code. But, it is failed when I use > > > > gradebookService = (GradebookService) > > ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); > > > > in line 31. I'm probably misunderstanding something. > > > > I really appreciate if someone gives me any pointer to address this. > > > > Best regards, > > Shoji Kajita > > Kyoto University > > ---- > > 01: import org.apache.axis.AxisFault; > > 02: import org.apache.commons.logging.Log; > > 03: import org.apache.commons.logging.LogFactory; > > 04: import org.sakaiproject.service.gradebook.shared.GradebookService; > > 05: import org.sakaiproject.tool.api.Session; > > 06: import org.sakaiproject.tool.api.SessionManager; > > 07: import org.sakaiproject.component.cover.ComponentManager; > > 08: > > 09: public class CourseGradebook { > > 10: > > 11: private GradebookService gradebookService; > > 12: private SessionManager sessionManager; > > 13: > > 14: private static Log LOG = LogFactory.getLog(CourseGradebook.class); > > 15: > > 16: private Session establishSession(String sessionId) throws AxisFault > > 17: { > > 18: Session s = sessionManager.getSession(sessionId); > > 19: > > 20: if (s == null) > > 21: { > > 22: throw new AxisFault("Session \""+sessionId+"\" is > > not active"); > > 23: } > > 24: s.setActive(); > > 25: sessionManager.setCurrentSession(s); > > 26: return s; > > 27: } > > 28: > > 29: public CourseGradebook() { > > 30: // gradebookService = (GradebookService) > > ComponentManager.get(GradebookService.class.getName()); > > 31: gradebookService = (GradebookService) > > ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); > > 32: // gradebookService = (GradebookService) > > ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); > > 33: sessionManager = (SessionManager) > > ComponentManager.get(SessionManager.class.getName()); > > 34: } > > 35: > > 36: public String getCompletedDate(String sessionId, String siteId) > > throws AxisFault { > > 37: > > 38: Session session = establishSession(sessionId); > > 39: > > 40: String gbID = siteId; > > 41: if (!gradebookService.isGradebookDefined(gbID)) { > > 42: System.out.println("Debug: Not found."); > > 43: return "No gradebook found for this site."; > > 44: } > > 45: return "Gradebook found for this site."; > > 46: } > > 47: > > 48: } > > ----- > > _______________________________________________ > > sakai-dev mailing list > > sakai-dev@... > > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > > > TO UNSUBSCRIBE: send email to > > sakai-dev-unsubscribe@... with a subject of > > "unsubscribe" > > sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceHmm, It's possible that could be a bug, try it in a course site with an instructor. It looks like the call for isUserAbleToGrade checks specific INSTRUCTOR and QA roles, so might not work in a project site. It should probably check against the specific maintain role defined on the site as well.
public boolean isUserAbleToGrade(String gradebookUid, String userUid) { return (getSectionAwareness().isSiteMemberInRole(gradebookUid, userUid, Role.INSTRUCTOR) || getSectionAwareness().isSiteMemberInRole(gradebookUid, userUid, Role.TA));
} On Mon, May 21, 2012 at 7:16 AM, Shoji Kajita <kajita@...> wrote: Hi Chuck and Matthew, _______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web service
Also assuming that Role.INSTRUCTOR is "Instructor" this fails on
systems that use other role names (for localisation or i18n)
D On 05/21/2012 04:32 PM, Matthew Jones wrote:
_______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceYeah, that should probably check a permission like site.upd or
section.role.instructor or something to that effect. Checking the role directly is definitely not the way to go. -AZ On Mon, May 21, 2012 at 10:42 AM, David Horwitz <david.horwitz@...> wrote: > Also assuming that Role.INSTRUCTOR is "Instructor" this fails on systems > that use other role names (for localisation or i18n) > > D > > > On 05/21/2012 04:32 PM, Matthew Jones wrote: > > Hmm, > > It's possible that could be a bug, try it in a course site with an > instructor. > > It looks like the call for isUserAbleToGrade checks specific INSTRUCTOR and > QA roles, so might not work in a project site. It should probably check > against the specific maintain role defined on the site as well. > > public boolean isUserAbleToGrade(String gradebookUid, String userUid) { > return (getSectionAwareness().isSiteMemberInRole(gradebookUid, > userUid, Role.INSTRUCTOR) || > getSectionAwareness().isSiteMemberInRole(gradebookUid, userUid, Role.TA)); > } > > Otherwise verify that in that realm that user has all permissions to grade. > This looks suspicious though. > > On Mon, May 21, 2012 at 7:16 AM, Shoji Kajita <kajita@...> wrote: >> >> Hi Chuck and Matthew, >> >> Thank you for your advices. >> >> I'm now taking a look on these pointers and getting close to >> work. However, I'm still getting the following exception: >> >> java.lang.SecurityException : User shoji attempted to access grade >> information for student kajita without permission in gb >> 8e328a23-c343-40cc-bcb0-547553b9cd46 using >> gradebookService.getGradesForStudentsForItem >> >> As far as I see, "shoji" has the permission to grade because he has the >> maintain role. >> >> Any thoughts? >> >> Best regards, >> Shoji >> >> At Sun, 20 May 2012 12:59:33 -0400, >> Charles Severance wrote: >> > >> > [1 <text/plain; us-ascii (quoted-printable)>] >> > Shoji, >> > >> > If you look here >> > >> > >> > https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-blis/src/java/org/sakaiproject/blti/ServiceServlet.java >> > >> > You will find some simple calls to the gradebook service to set grades. >> > >> > Here >> > >> > >> > https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-portlet/src/java/org/sakaiproject/portlets/IMSBLTIPortlet.java >> > >> > It makes gradebook items. >> > >> > I borrowed the code from the Assignments tool/ >> > >> > /Chuck >> > >> >> At Sat, 19 May 2012 23:50:30 -0400, >> Matthew Jones wrote: >> > >> > Hi Shoji! >> > >> > This probably just looks like a confusing special case. You have to use >> > component manager to get the beans from the spring components, then cast >> > it >> > to the interfaces (apis) that are in shared. >> > >> > For gradebook, they're probably just named differently, for whatever >> > reason. >> > >> > Look at this webservice for some example gradebook code for getting >> > gradebooks and grades. Hopefully you can use this for whatever you need. >> > >> > https://source.sakaiproject.org/svn/msub/longsight.com/webservices/webservices-1.0.x/axis/src/webapp/WSLongsight.jws >> > >> > >> > And I think this one on confluence still works too? >> > >> > https://confluence.sakaiproject.org/display/~steve.swinsburg/Additional+web+services+for+Sakai#AdditionalwebservicesforSakai-SakaiGradebook >> > >> > -Matthew >> > >> > On Sat, May 19, 2012 at 10:13 PM, Shoji Kajita <kajita@...> >> > wrote: >> > >> > > Dear Sakai Developers, >> > > >> > > I'm trying to develop a new web service for getting information from >> > > Gradebook, but I have been struggling from using GradebookService. >> > > >> > > For example, I can call >> > > >> > > gradebookService.isGradebookDefined >> > > >> > > successfully when I use >> > > >> > > gradebookService = (GradebookService) >> > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); >> > > >> > > as seen in the following simple code. But, it is failed when I use >> > > >> > > gradebookService = (GradebookService) >> > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); >> > > >> > > in line 31. I'm probably misunderstanding something. >> > > >> > > I really appreciate if someone gives me any pointer to address this. >> > > >> > > Best regards, >> > > Shoji Kajita >> > > Kyoto University >> > > ---- >> > > 01: import org.apache.axis.AxisFault; >> > > 02: import org.apache.commons.logging.Log; >> > > 03: import org.apache.commons.logging.LogFactory; >> > > 04: import org.sakaiproject.service.gradebook.shared.GradebookService; >> > > 05: import org.sakaiproject.tool.api.Session; >> > > 06: import org.sakaiproject.tool.api.SessionManager; >> > > 07: import org.sakaiproject.component.cover.ComponentManager; >> > > 08: >> > > 09: public class CourseGradebook { >> > > 10: >> > > 11: private GradebookService gradebookService; >> > > 12: private SessionManager sessionManager; >> > > 13: >> > > 14: private static Log LOG = >> > > LogFactory.getLog(CourseGradebook.class); >> > > 15: >> > > 16: private Session establishSession(String sessionId) throws >> > > AxisFault >> > > 17: { >> > > 18: Session s = sessionManager.getSession(sessionId); >> > > 19: >> > > 20: if (s == null) >> > > 21: { >> > > 22: throw new AxisFault("Session \""+sessionId+"\" >> > > is >> > > not active"); >> > > 23: } >> > > 24: s.setActive(); >> > > 25: sessionManager.setCurrentSession(s); >> > > 26: return s; >> > > 27: } >> > > 28: >> > > 29: public CourseGradebook() { >> > > 30: // gradebookService = (GradebookService) >> > > ComponentManager.get(GradebookService.class.getName()); >> > > 31: gradebookService = (GradebookService) >> > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); >> > > 32: // gradebookService = (GradebookService) >> > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); >> > > 33: sessionManager = (SessionManager) >> > > ComponentManager.get(SessionManager.class.getName()); >> > > 34: } >> > > 35: >> > > 36: public String getCompletedDate(String sessionId, String >> > > siteId) >> > > throws AxisFault { >> > > 37: >> > > 38: Session session = establishSession(sessionId); >> > > 39: >> > > 40: String gbID = siteId; >> > > 41: if (!gradebookService.isGradebookDefined(gbID)) { >> > > 42: System.out.println("Debug: Not found."); >> > > 43: return "No gradebook found for this site."; >> > > 44: } >> > > 45: return "Gradebook found for this site."; >> > > 46: } >> > > 47: >> > > 48: } >> > > ----- >> > > _______________________________________________ >> > > sakai-dev mailing list >> > > sakai-dev@... >> > > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev >> > > >> > > TO UNSUBSCRIBE: send email to >> > > sakai-dev-unsubscribe@... with a subject of >> > > "unsubscribe" >> > > > > > > > _______________________________________________ > sakai-dev mailing list > sakai-dev@... > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... > with a subject of "unsubscribe" > > > > _______________________________________________ > sakai-dev mailing list > sakai-dev@... > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... > with a subject of "unsubscribe" -- Aaron Zeckoski - Software Architect - http://tinyurl.com/azprofile _______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceThe code that does the permission check looks fine to me:
public boolean isUserAbleToGrade(String gradebookUid) {
81 return (hasPermission(gradebookUid, PERMISSION_GRADE_ALL) || hasPermission(gradebookUid, PERMISSION_GRADE_SECTION));
82 }
83
where those permissions are: PERMISSION_GRADE_ALL = "gradebook.gradeAll", PERMISSION_GRADE_SECTION = "gradebook.gradeSection", and: private boolean hasPermission(User user, String gradebookUid, String permission) {
132 return SecurityService.unlock(user, permission, SiteService.siteReference(gradebookUid));
133 }
So I'd check that your user's role has the correct permissions as above. ref: http://source.sakaiproject.org/release/edu-services/1.1.5/xref/ cheers, Steve
On Tue, May 22, 2012 at 12:50 AM, Aaron Zeckoski <azeckoski@...> wrote: Yeah, that should probably check a permission like site.upd or _______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceHi there,
Thank you for your suggestions. I think that Aaron is getting the point, i.e., the worksite I'm using is a project site, not a course site. So, I think that isUserAbleToGrade should be true even if in Maintain Role to reduce this kind of confusion. Shoji at Kyoto (not Nagoya) At Mon, 21 May 2012 10:50:43 -0400, Aaron Zeckoski wrote: > > Yeah, that should probably check a permission like site.upd or > section.role.instructor or something to that effect. Checking the role > directly is definitely not the way to go. > > -AZ > > > On Mon, May 21, 2012 at 10:42 AM, David Horwitz <david.horwitz@...> wrote: > > Also assuming that Role.INSTRUCTOR is "Instructor" this fails on systems > > that use other role names (for localisation or i18n) > > > > D > > > > > > On 05/21/2012 04:32 PM, Matthew Jones wrote: > > > > Hmm, > > > > It's possible that could be a bug, try it in a course site with an > > instructor. > > > > It looks like the call for isUserAbleToGrade checks specific INSTRUCTOR and > > QA roles, so might not work in a project site. It should probably check > > against the specific maintain role defined on the site as well. > > > > public boolean isUserAbleToGrade(String gradebookUid, String userUid) { > > return (getSectionAwareness().isSiteMemberInRole(gradebookUid, > > userUid, Role.INSTRUCTOR) || > > getSectionAwareness().isSiteMemberInRole(gradebookUid, userUid, Role.TA)); > > } > > > > Otherwise verify that in that realm that user has all permissions to grade. > > This looks suspicious though. > > > > On Mon, May 21, 2012 at 7:16 AM, Shoji Kajita <kajita@...> wrote: > >> > >> Hi Chuck and Matthew, > >> > >> Thank you for your advices. > >> > >> I'm now taking a look on these pointers and getting close to > >> work. However, I'm still getting the following exception: > >> > >> java.lang.SecurityException : User shoji attempted to access grade > >> information for student kajita without permission in gb > >> 8e328a23-c343-40cc-bcb0-547553b9cd46 using > >> gradebookService.getGradesForStudentsForItem > >> > >> As far as I see, "shoji" has the permission to grade because he has the > >> maintain role. > >> > >> Any thoughts? > >> > >> Best regards, > >> Shoji > >> > >> At Sun, 20 May 2012 12:59:33 -0400, > >> Charles Severance wrote: > >> > > >> > [1 <text/plain; us-ascii (quoted-printable)>] > >> > Shoji, > >> > > >> > If you look here > >> > > >> > > >> > https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-blis/src/java/org/sakaiproject/blti/ServiceServlet.java > >> > > >> > You will find some simple calls to the gradebook service to set grades. > >> > > >> > Here > >> > > >> > > >> > https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-portlet/src/java/org/sakaiproject/portlets/IMSBLTIPortlet.java > >> > > >> > It makes gradebook items. > >> > > >> > I borrowed the code from the Assignments tool/ > >> > > >> > /Chuck > >> > > >> > >> At Sat, 19 May 2012 23:50:30 -0400, > >> Matthew Jones wrote: > >> > > >> > Hi Shoji! > >> > > >> > This probably just looks like a confusing special case. You have to use > >> > component manager to get the beans from the spring components, then cast > >> > it > >> > to the interfaces (apis) that are in shared. > >> > > >> > For gradebook, they're probably just named differently, for whatever > >> > reason. > >> > > >> > Look at this webservice for some example gradebook code for getting > >> > gradebooks and grades. Hopefully you can use this for whatever you need. > >> > > >> > https://source.sakaiproject.org/svn/msub/longsight.com/webservices/webservices-1.0.x/axis/src/webapp/WSLongsight.jws > >> > > >> > > >> > And I think this one on confluence still works too? > >> > > >> > https://confluence.sakaiproject.org/display/~steve.swinsburg/Additional+web+services+for+Sakai#AdditionalwebservicesforSakai-SakaiGradebook > >> > > >> > -Matthew > >> > > >> > On Sat, May 19, 2012 at 10:13 PM, Shoji Kajita <kajita@...> > >> > wrote: > >> > > >> > > Dear Sakai Developers, > >> > > > >> > > I'm trying to develop a new web service for getting information from > >> > > Gradebook, but I have been struggling from using GradebookService. > >> > > > >> > > For example, I can call > >> > > > >> > > gradebookService.isGradebookDefined > >> > > > >> > > successfully when I use > >> > > > >> > > gradebookService = (GradebookService) > >> > > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); > >> > > > >> > > as seen in the following simple code. But, it is failed when I use > >> > > > >> > > gradebookService = (GradebookService) > >> > > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); > >> > > > >> > > in line 31. I'm probably misunderstanding something. > >> > > > >> > > I really appreciate if someone gives me any pointer to address this. > >> > > > >> > > Best regards, > >> > > Shoji Kajita > >> > > Kyoto University > >> > > ---- > >> > > 01: import org.apache.axis.AxisFault; > >> > > 02: import org.apache.commons.logging.Log; > >> > > 03: import org.apache.commons.logging.LogFactory; > >> > > 04: import org.sakaiproject.service.gradebook.shared.GradebookService; > >> > > 05: import org.sakaiproject.tool.api.Session; > >> > > 06: import org.sakaiproject.tool.api.SessionManager; > >> > > 07: import org.sakaiproject.component.cover.ComponentManager; > >> > > 08: > >> > > 09: public class CourseGradebook { > >> > > 10: > >> > > 11: private GradebookService gradebookService; > >> > > 12: private SessionManager sessionManager; > >> > > 13: > >> > > 14: private static Log LOG = > >> > > LogFactory.getLog(CourseGradebook.class); > >> > > 15: > >> > > 16: private Session establishSession(String sessionId) throws > >> > > AxisFault > >> > > 17: { > >> > > 18: Session s = sessionManager.getSession(sessionId); > >> > > 19: > >> > > 20: if (s == null) > >> > > 21: { > >> > > 22: throw new AxisFault("Session \""+sessionId+"\" > >> > > is > >> > > not active"); > >> > > 23: } > >> > > 24: s.setActive(); > >> > > 25: sessionManager.setCurrentSession(s); > >> > > 26: return s; > >> > > 27: } > >> > > 28: > >> > > 29: public CourseGradebook() { > >> > > 30: // gradebookService = (GradebookService) > >> > > ComponentManager.get(GradebookService.class.getName()); > >> > > 31: gradebookService = (GradebookService) > >> > > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); > >> > > 32: // gradebookService = (GradebookService) > >> > > > >> > > ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); > >> > > 33: sessionManager = (SessionManager) > >> > > ComponentManager.get(SessionManager.class.getName()); > >> > > 34: } > >> > > 35: > >> > > 36: public String getCompletedDate(String sessionId, String > >> > > siteId) > >> > > throws AxisFault { > >> > > 37: > >> > > 38: Session session = establishSession(sessionId); > >> > > 39: > >> > > 40: String gbID = siteId; > >> > > 41: if (!gradebookService.isGradebookDefined(gbID)) { > >> > > 42: System.out.println("Debug: Not found."); > >> > > 43: return "No gradebook found for this site."; > >> > > 44: } > >> > > 45: return "Gradebook found for this site."; > >> > > 46: } > >> > > 47: > >> > > 48: } > >> > > ----- > >> > > _______________________________________________ > >> > > sakai-dev mailing list > >> > > sakai-dev@... > >> > > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > >> > > > >> > > TO UNSUBSCRIBE: send email to > >> > > sakai-dev-unsubscribe@... with a subject of > >> > > "unsubscribe" > >> > > > > > > > > > > > > _______________________________________________ > > sakai-dev mailing list > > sakai-dev@... > > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > > > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... > > with a subject of "unsubscribe" > > > > > > > > _______________________________________________ > > sakai-dev mailing list > > sakai-dev@... > > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > > > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... > > with a subject of "unsubscribe" > > > > -- > Aaron Zeckoski - Software Architect - http://tinyurl.com/azprofile > _______________________________________________ > sakai-dev mailing list > sakai-dev@... > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceIt works via the permission I sent earlier. So tick that in the role for the realm and you should be set.
I'm not near a computer but it would be good to verify the permissions for grade book in the default project site realm roles. I use the grade book in project sites. Cheers Steve Sent from my iPhone On 23/05/2012, at 0:59, Shoji Kajita <kajita@...> wrote: > Hi there, > > Thank you for your suggestions. > > I think that Aaron is getting the point, i.e., the worksite I'm using > is a project site, not a course site. > > So, I think that isUserAbleToGrade should be true even if in Maintain > Role to reduce this kind of confusion. > > Shoji at Kyoto (not Nagoya) > > At Mon, 21 May 2012 10:50:43 -0400, > Aaron Zeckoski wrote: >> >> Yeah, that should probably check a permission like site.upd or >> section.role.instructor or something to that effect. Checking the role >> directly is definitely not the way to go. >> >> -AZ >> >> >> On Mon, May 21, 2012 at 10:42 AM, David Horwitz <david.horwitz@...> wrote: >>> Also assuming that Role.INSTRUCTOR is "Instructor" this fails on systems >>> that use other role names (for localisation or i18n) >>> >>> D >>> >>> >>> On 05/21/2012 04:32 PM, Matthew Jones wrote: >>> >>> Hmm, >>> >>> It's possible that could be a bug, try it in a course site with an >>> instructor. >>> >>> It looks like the call for isUserAbleToGrade checks specific INSTRUCTOR and >>> QA roles, so might not work in a project site. It should probably check >>> against the specific maintain role defined on the site as well. >>> >>> public boolean isUserAbleToGrade(String gradebookUid, String userUid) { >>> return (getSectionAwareness().isSiteMemberInRole(gradebookUid, >>> userUid, Role.INSTRUCTOR) || >>> getSectionAwareness().isSiteMemberInRole(gradebookUid, userUid, Role.TA)); >>> } >>> >>> Otherwise verify that in that realm that user has all permissions to grade. >>> This looks suspicious though. >>> >>> On Mon, May 21, 2012 at 7:16 AM, Shoji Kajita <kajita@...> wrote: >>>> >>>> Hi Chuck and Matthew, >>>> >>>> Thank you for your advices. >>>> >>>> I'm now taking a look on these pointers and getting close to >>>> work. However, I'm still getting the following exception: >>>> >>>> java.lang.SecurityException : User shoji attempted to access grade >>>> information for student kajita without permission in gb >>>> 8e328a23-c343-40cc-bcb0-547553b9cd46 using >>>> gradebookService.getGradesForStudentsForItem >>>> >>>> As far as I see, "shoji" has the permission to grade because he has the >>>> maintain role. >>>> >>>> Any thoughts? >>>> >>>> Best regards, >>>> Shoji >>>> >>>> At Sun, 20 May 2012 12:59:33 -0400, >>>> Charles Severance wrote: >>>>> >>>>> [1 <text/plain; us-ascii (quoted-printable)>] >>>>> Shoji, >>>>> >>>>> If you look here >>>>> >>>>> >>>>> https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-blis/src/java/org/sakaiproject/blti/ServiceServlet.java >>>>> >>>>> You will find some simple calls to the gradebook service to set grades. >>>>> >>>>> Here >>>>> >>>>> >>>>> https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-portlet/src/java/org/sakaiproject/portlets/IMSBLTIPortlet.java >>>>> >>>>> It makes gradebook items. >>>>> >>>>> I borrowed the code from the Assignments tool/ >>>>> >>>>> /Chuck >>>>> >>>> >>>> At Sat, 19 May 2012 23:50:30 -0400, >>>> Matthew Jones wrote: >>>>> >>>>> Hi Shoji! >>>>> >>>>> This probably just looks like a confusing special case. You have to use >>>>> component manager to get the beans from the spring components, then cast >>>>> it >>>>> to the interfaces (apis) that are in shared. >>>>> >>>>> For gradebook, they're probably just named differently, for whatever >>>>> reason. >>>>> >>>>> Look at this webservice for some example gradebook code for getting >>>>> gradebooks and grades. Hopefully you can use this for whatever you need. >>>>> >>>>> https://source.sakaiproject.org/svn/msub/longsight.com/webservices/webservices-1.0.x/axis/src/webapp/WSLongsight.jws >>>>> >>>>> >>>>> And I think this one on confluence still works too? >>>>> >>>>> https://confluence.sakaiproject.org/display/~steve.swinsburg/Additional+web+services+for+Sakai#AdditionalwebservicesforSakai-SakaiGradebook >>>>> >>>>> -Matthew >>>>> >>>>> On Sat, May 19, 2012 at 10:13 PM, Shoji Kajita <kajita@...> >>>>> wrote: >>>>> >>>>>> Dear Sakai Developers, >>>>>> >>>>>> I'm trying to develop a new web service for getting information from >>>>>> Gradebook, but I have been struggling from using GradebookService. >>>>>> >>>>>> For example, I can call >>>>>> >>>>>> gradebookService.isGradebookDefined >>>>>> >>>>>> successfully when I use >>>>>> >>>>>> gradebookService = (GradebookService) >>>>>> >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); >>>>>> >>>>>> as seen in the following simple code. But, it is failed when I use >>>>>> >>>>>> gradebookService = (GradebookService) >>>>>> >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); >>>>>> >>>>>> in line 31. I'm probably misunderstanding something. >>>>>> >>>>>> I really appreciate if someone gives me any pointer to address this. >>>>>> >>>>>> Best regards, >>>>>> Shoji Kajita >>>>>> Kyoto University >>>>>> ---- >>>>>> 01: import org.apache.axis.AxisFault; >>>>>> 02: import org.apache.commons.logging.Log; >>>>>> 03: import org.apache.commons.logging.LogFactory; >>>>>> 04: import org.sakaiproject.service.gradebook.shared.GradebookService; >>>>>> 05: import org.sakaiproject.tool.api.Session; >>>>>> 06: import org.sakaiproject.tool.api.SessionManager; >>>>>> 07: import org.sakaiproject.component.cover.ComponentManager; >>>>>> 08: >>>>>> 09: public class CourseGradebook { >>>>>> 10: >>>>>> 11: private GradebookService gradebookService; >>>>>> 12: private SessionManager sessionManager; >>>>>> 13: >>>>>> 14: private static Log LOG = >>>>>> LogFactory.getLog(CourseGradebook.class); >>>>>> 15: >>>>>> 16: private Session establishSession(String sessionId) throws >>>>>> AxisFault >>>>>> 17: { >>>>>> 18: Session s = sessionManager.getSession(sessionId); >>>>>> 19: >>>>>> 20: if (s == null) >>>>>> 21: { >>>>>> 22: throw new AxisFault("Session \""+sessionId+"\" >>>>>> is >>>>>> not active"); >>>>>> 23: } >>>>>> 24: s.setActive(); >>>>>> 25: sessionManager.setCurrentSession(s); >>>>>> 26: return s; >>>>>> 27: } >>>>>> 28: >>>>>> 29: public CourseGradebook() { >>>>>> 30: // gradebookService = (GradebookService) >>>>>> ComponentManager.get(GradebookService.class.getName()); >>>>>> 31: gradebookService = (GradebookService) >>>>>> >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); >>>>>> 32: // gradebookService = (GradebookService) >>>>>> >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); >>>>>> 33: sessionManager = (SessionManager) >>>>>> ComponentManager.get(SessionManager.class.getName()); >>>>>> 34: } >>>>>> 35: >>>>>> 36: public String getCompletedDate(String sessionId, String >>>>>> siteId) >>>>>> throws AxisFault { >>>>>> 37: >>>>>> 38: Session session = establishSession(sessionId); >>>>>> 39: >>>>>> 40: String gbID = siteId; >>>>>> 41: if (!gradebookService.isGradebookDefined(gbID)) { >>>>>> 42: System.out.println("Debug: Not found."); >>>>>> 43: return "No gradebook found for this site."; >>>>>> 44: } >>>>>> 45: return "Gradebook found for this site."; >>>>>> 46: } >>>>>> 47: >>>>>> 48: } >>>>>> ----- >>>>>> _______________________________________________ >>>>>> sakai-dev mailing list >>>>>> sakai-dev@... >>>>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev >>>>>> >>>>>> TO UNSUBSCRIBE: send email to >>>>>> sakai-dev-unsubscribe@... with a subject of >>>>>> "unsubscribe" >>>>>> >>> >>> >>> >>> >>> _______________________________________________ >>> sakai-dev mailing list >>> sakai-dev@... >>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev >>> >>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... >>> with a subject of "unsubscribe" >>> >>> >>> >>> _______________________________________________ >>> sakai-dev mailing list >>> sakai-dev@... >>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev >>> >>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... >>> with a subject of "unsubscribe" >> >> >> >> -- >> Aaron Zeckoski - Software Architect - http://tinyurl.com/azprofile >> _______________________________________________ >> sakai-dev mailing list >> sakai-dev@... >> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev >> >> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" > _______________________________________________ > sakai-dev mailing list > sakai-dev@... > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceHi Steve,
Thank you for your detailed analysis. After setting the proper role (gradebook.gradeAll) as you suggested, I have faced another similar exception: java.lang.SecurityException : User d14275f2-bd9b-4b9d-99e1-91869bfc1fc1 attempted to access grade information for student student0162 without permission in gb 0279a90b-61ab-4b58-86ce-70e4ef937906 using gradebookService.getGradesForStudentsForItem As far as I digged by remote debugging using eclipse, the above exception is caused because studentIdEnrRecMap() is null at http://source.sakaiproject.org/release/edu-services/1.1.5/xref/org/sakaiproject/component/gradebook/GradebookServiceHibernateImpl.html#1575 and this null is caused because enrRecFunctionMap() is also null at http://source.sakaiproject.org/release/edu-services/1.1.5/xref/org/sakaiproject/component/gradebook/GradebookServiceHibernateImpl.html#1560 ... I need to trace more but do you have any suggestions at this moment? Shoji At Wed, 23 May 2012 08:06:37 +1000, Steve Swinsburg wrote: > > It works via the permission I sent earlier. So tick that in the role for the realm and you should be set. > > I'm not near a computer but it would be good to verify the permissions for grade book in the default project site realm roles. I use the grade book in project sites. > > Cheers > Steve > > Sent from my iPhone > > On 23/05/2012, at 0:59, Shoji Kajita <kajita@...> wrote: > > > Hi there, > > > > Thank you for your suggestions. > > > > I think that Aaron is getting the point, i.e., the worksite I'm using > > is a project site, not a course site. > > > > So, I think that isUserAbleToGrade should be true even if in Maintain > > Role to reduce this kind of confusion. > > > > Shoji at Kyoto (not Nagoya) > > > > At Mon, 21 May 2012 10:50:43 -0400, > > Aaron Zeckoski wrote: > >> > >> Yeah, that should probably check a permission like site.upd or > >> section.role.instructor or something to that effect. Checking the role > >> directly is definitely not the way to go. > >> > >> -AZ > >> > >> > >> On Mon, May 21, 2012 at 10:42 AM, David Horwitz <david.horwitz@...> wrote: > >>> Also assuming that Role.INSTRUCTOR is "Instructor" this fails on systems > >>> that use other role names (for localisation or i18n) > >>> > >>> D > >>> > >>> > >>> On 05/21/2012 04:32 PM, Matthew Jones wrote: > >>> > >>> Hmm, > >>> > >>> It's possible that could be a bug, try it in a course site with an > >>> instructor. > >>> > >>> It looks like the call for isUserAbleToGrade checks specific INSTRUCTOR and > >>> QA roles, so might not work in a project site. It should probably check > >>> against the specific maintain role defined on the site as well. > >>> > >>> public boolean isUserAbleToGrade(String gradebookUid, String userUid) { > >>> return (getSectionAwareness().isSiteMemberInRole(gradebookUid, > >>> userUid, Role.INSTRUCTOR) || > >>> getSectionAwareness().isSiteMemberInRole(gradebookUid, userUid, Role.TA)); > >>> } > >>> > >>> Otherwise verify that in that realm that user has all permissions to grade. > >>> This looks suspicious though. > >>> > >>> On Mon, May 21, 2012 at 7:16 AM, Shoji Kajita <kajita@...> wrote: > >>>> > >>>> Hi Chuck and Matthew, > >>>> > >>>> Thank you for your advices. > >>>> > >>>> I'm now taking a look on these pointers and getting close to > >>>> work. However, I'm still getting the following exception: > >>>> > >>>> java.lang.SecurityException : User shoji attempted to access grade > >>>> information for student kajita without permission in gb > >>>> 8e328a23-c343-40cc-bcb0-547553b9cd46 using > >>>> gradebookService.getGradesForStudentsForItem > >>>> > >>>> As far as I see, "shoji" has the permission to grade because he has the > >>>> maintain role. > >>>> > >>>> Any thoughts? > >>>> > >>>> Best regards, > >>>> Shoji > >>>> > >>>> At Sun, 20 May 2012 12:59:33 -0400, > >>>> Charles Severance wrote: > >>>>> > >>>>> [1 <text/plain; us-ascii (quoted-printable)>] > >>>>> Shoji, > >>>>> > >>>>> If you look here > >>>>> > >>>>> > >>>>> https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-blis/src/java/org/sakaiproject/blti/ServiceServlet.java > >>>>> > >>>>> You will find some simple calls to the gradebook service to set grades. > >>>>> > >>>>> Here > >>>>> > >>>>> > >>>>> https://source.sakaiproject.org/svn//basiclti/trunk/basiclti-portlet/src/java/org/sakaiproject/portlets/IMSBLTIPortlet.java > >>>>> > >>>>> It makes gradebook items. > >>>>> > >>>>> I borrowed the code from the Assignments tool/ > >>>>> > >>>>> /Chuck > >>>>> > >>>> > >>>> At Sat, 19 May 2012 23:50:30 -0400, > >>>> Matthew Jones wrote: > >>>>> > >>>>> Hi Shoji! > >>>>> > >>>>> This probably just looks like a confusing special case. You have to use > >>>>> component manager to get the beans from the spring components, then cast > >>>>> it > >>>>> to the interfaces (apis) that are in shared. > >>>>> > >>>>> For gradebook, they're probably just named differently, for whatever > >>>>> reason. > >>>>> > >>>>> Look at this webservice for some example gradebook code for getting > >>>>> gradebooks and grades. Hopefully you can use this for whatever you need. > >>>>> > >>>>> https://source.sakaiproject.org/svn/msub/longsight.com/webservices/webservices-1.0.x/axis/src/webapp/WSLongsight.jws > >>>>> > >>>>> > >>>>> And I think this one on confluence still works too? > >>>>> > >>>>> https://confluence.sakaiproject.org/display/~steve.swinsburg/Additional+web+services+for+Sakai#AdditionalwebservicesforSakai-SakaiGradebook > >>>>> > >>>>> -Matthew > >>>>> > >>>>> On Sat, May 19, 2012 at 10:13 PM, Shoji Kajita <kajita@...> > >>>>> wrote: > >>>>> > >>>>>> Dear Sakai Developers, > >>>>>> > >>>>>> I'm trying to develop a new web service for getting information from > >>>>>> Gradebook, but I have been struggling from using GradebookService. > >>>>>> > >>>>>> For example, I can call > >>>>>> > >>>>>> gradebookService.isGradebookDefined > >>>>>> > >>>>>> successfully when I use > >>>>>> > >>>>>> gradebookService = (GradebookService) > >>>>>> > >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); > >>>>>> > >>>>>> as seen in the following simple code. But, it is failed when I use > >>>>>> > >>>>>> gradebookService = (GradebookService) > >>>>>> > >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); > >>>>>> > >>>>>> in line 31. I'm probably misunderstanding something. > >>>>>> > >>>>>> I really appreciate if someone gives me any pointer to address this. > >>>>>> > >>>>>> Best regards, > >>>>>> Shoji Kajita > >>>>>> Kyoto University > >>>>>> ---- > >>>>>> 01: import org.apache.axis.AxisFault; > >>>>>> 02: import org.apache.commons.logging.Log; > >>>>>> 03: import org.apache.commons.logging.LogFactory; > >>>>>> 04: import org.sakaiproject.service.gradebook.shared.GradebookService; > >>>>>> 05: import org.sakaiproject.tool.api.Session; > >>>>>> 06: import org.sakaiproject.tool.api.SessionManager; > >>>>>> 07: import org.sakaiproject.component.cover.ComponentManager; > >>>>>> 08: > >>>>>> 09: public class CourseGradebook { > >>>>>> 10: > >>>>>> 11: private GradebookService gradebookService; > >>>>>> 12: private SessionManager sessionManager; > >>>>>> 13: > >>>>>> 14: private static Log LOG = > >>>>>> LogFactory.getLog(CourseGradebook.class); > >>>>>> 15: > >>>>>> 16: private Session establishSession(String sessionId) throws > >>>>>> AxisFault > >>>>>> 17: { > >>>>>> 18: Session s = sessionManager.getSession(sessionId); > >>>>>> 19: > >>>>>> 20: if (s == null) > >>>>>> 21: { > >>>>>> 22: throw new AxisFault("Session \""+sessionId+"\" > >>>>>> is > >>>>>> not active"); > >>>>>> 23: } > >>>>>> 24: s.setActive(); > >>>>>> 25: sessionManager.setCurrentSession(s); > >>>>>> 26: return s; > >>>>>> 27: } > >>>>>> 28: > >>>>>> 29: public CourseGradebook() { > >>>>>> 30: // gradebookService = (GradebookService) > >>>>>> ComponentManager.get(GradebookService.class.getName()); > >>>>>> 31: gradebookService = (GradebookService) > >>>>>> > >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.shared.GradebookService"); > >>>>>> 32: // gradebookService = (GradebookService) > >>>>>> > >>>>>> ComponentManager.get("org.sakaiproject.service.gradebook.GradebookService"); > >>>>>> 33: sessionManager = (SessionManager) > >>>>>> ComponentManager.get(SessionManager.class.getName()); > >>>>>> 34: } > >>>>>> 35: > >>>>>> 36: public String getCompletedDate(String sessionId, String > >>>>>> siteId) > >>>>>> throws AxisFault { > >>>>>> 37: > >>>>>> 38: Session session = establishSession(sessionId); > >>>>>> 39: > >>>>>> 40: String gbID = siteId; > >>>>>> 41: if (!gradebookService.isGradebookDefined(gbID)) { > >>>>>> 42: System.out.println("Debug: Not found."); > >>>>>> 43: return "No gradebook found for this site."; > >>>>>> 44: } > >>>>>> 45: return "Gradebook found for this site."; > >>>>>> 46: } > >>>>>> 47: > >>>>>> 48: } > >>>>>> ----- > >>>>>> _______________________________________________ > >>>>>> sakai-dev mailing list > >>>>>> sakai-dev@... > >>>>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > >>>>>> > >>>>>> TO UNSUBSCRIBE: send email to > >>>>>> sakai-dev-unsubscribe@... with a subject of > >>>>>> "unsubscribe" > >>>>>> > >>> > >>> > >>> > >>> > >>> _______________________________________________ > >>> sakai-dev mailing list > >>> sakai-dev@... > >>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > >>> > >>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... > >>> with a subject of "unsubscribe" > >>> > >>> > >>> > >>> _______________________________________________ > >>> sakai-dev mailing list > >>> sakai-dev@... > >>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > >>> > >>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... > >>> with a subject of "unsubscribe" > >> > >> > >> > >> -- > >> Aaron Zeckoski - Software Architect - http://tinyurl.com/azprofile > >> _______________________________________________ > >> sakai-dev mailing list > >> sakai-dev@... > >> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > >> > >> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" > > _______________________________________________ > > sakai-dev mailing list > > sakai-dev@... > > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev > > > > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceI think that error message is a red herring. Its not the correct reason anyway.
In this: There are two places where that is thrown: if (!authz.isUserAbleToGrade(gradebook.getUid())) {
1554 throw new SecurityException("User " + authn.getUserUid() +
1555 " attempted to access grade information without permission in gb " +
1556 gradebook.getUid() + " using gradebookService.getGradesForStudentsForItem");
1557 }which is above this section: if (!studentIdEnrRecMap.containsKey(studentId)) {
1576 throw new SecurityException("User " + authn.getUserUid() +
1577 " attempted to access grade information for student " + studentId +
1578 " without permission in gb " + gradebook.getUid() +
1579 " using gradebookService.getGradesForStudentsForItem");
1580 }The first is correct since it is checking the permissions, the second is actually just checking if an enrolment record exists in a map, but the error is the same. The cause of this being empty is probably here: 1560 Map enrRecFunctionMap = authz.findMatchingEnrollmentsForItem(gradebook.getUid(), categoryId, gradebook.getCategory_type(), null, null); And in checking through that it ends up at: AuthzSakai2Impl.findMatchingEnrollmentsForItemOrCourseGrade which again does permission checks, so take a look through there and check you have all of the permissions set. Can you perhaps post the grade book related permissions for this role and we can compare them with a standard set? cheers, Steve On 30/05/2012, at 8:00 PM, Shoji Kajita wrote:
_______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web service
Hi Steve,
Have you jira'ed this? D On 05/30/2012 02:08 PM, Steve Swinsburg wrote: I think that error message is a red herring. Its not the correct reason anyway. _______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
|
|
Re: [Building Sakai] Use of GradebookService as a web serviceNot yet, was going to see how it played out, it was just from a high level read of the code. But it probably needs a Jira to make the error message more correct.
On 30/05/2012, at 10:35 PM, David Horwitz wrote:
_______________________________________________ sakai-dev mailing list sakai-dev@... http://collab.sakaiproject.org/mailman/listinfo/sakai-dev TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe@... with a subject of "unsubscribe" |
| Free embeddable forum powered by Nabble | Forum Help |