2012-07-12 6 views
6

¿Alguien puede confirmar si es posible enviar una tarea mediante programación a Blackboard utilizando Blackboard WebServices? (Como se documenta here). Específicamente, me gustaría saber la forma correcta de utilizar Gradebook.WS, AttemptVO y el método de envío de estudiantes para enviar una tarea. Esto es lo que he probado hasta ahora que en su mayoría trabaja en el intento de que se puede ver en Bb libro de calificaciones, excepto el attemptVO.studentSubmission no es visible en la pizarra del libro de calificaciones:¿Es posible enviar mediante programación una asignación a Blackboard utilizando Blackboard WebServices

from suds.client import Client 
from suds.plugin import MessagePlugin 
from suds.wsse import Timestamp, UsernameToken, Security 

WS_BASE_URL = 'http://bbdev.bangor.ac.uk/webapps/ws/services/' 

class Learn9Plugin(MessagePlugin): 
    def marshalled(self, context): 
     password = context.envelope.childAtPath('Header/Security/UsernameToken/Password') 
     password.set('Type', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText') 

security = Security() 
security.tokens.append(Timestamp()) 
security.tokens.append(UsernameToken('session', 'nosession')) 
plugin = Learn9Plugin() 

context = Client( WS_BASE_URL + 'Context.WS?wsdl', 
location = WS_BASE_URL + 'Context.WS', 
autoblend = True, 
wsse = security, 
plugins = [plugin]) 

context.options.wsse.tokens[1].password = context.service.initialize() 

result = context.service.loginTool('xxxxx', 'xxxx', 'xxxxx', '', 500) 

course_id = '_15877_1' 

gradebook = Client(WS_BASE_URL + 'Gradebook.WS?wsdl', 
    location=WS_BASE_URL + 'Gradebook.WS', 
    autoblend=True, 
    wsse=security, 
    plugins=[plugin]) 


attemptVO = gradebook.factory.create('ns0:AttemptVO') 

attemptVO.override = False 
attemptVO.publicFeedbackToUser = False 
attemptVO.score = 0 
attemptVO.gradeId = '_169_1' # Smith 
attemptVO.studentSubmission = 'Some sample text representing an assignment' 
attemptVO.studentSubmissionTextType = 'PLAIN_TEXT' 
print attemptVO 
attempt_result = gradebook.service.saveAttempts(course_id, [attemptVO,]) 
print attempt_result 

Resultado:

(AttemptVO){ 
    attemptDate = None 
    creationDate = None 
    displayGrade = None 
    exempt = None 
    expansionData[] = <empty> 
    feedbackToUser = None 
    grade = None 
    gradeId = "_169_1" 
    groupAttemptId = None 
    id = None 
    instructorNotes = None 
    override = False 
    publicFeedbackToUser = False 
    score = 0 
    status = None 
    studentComments = None 
    studentSubmission = "Some sample text representing an assignment" 
    studentSubmissionTextType = "PLAIN_TEXT" 
} 
[_586_1] 

Muchos Gracias.

+0

¿Alguna actualización de esto? – skippr

+1

No se esperan actualizaciones, ya que no es posible utilizar la API mencionada anteriormente. Nunca revisé los documentos para ver si se habían actualizado. – Sion

Respuesta

4

Uno de los desarrolladores de Blackboard me respondió y dijo que no es posible enviar una tarea usando el servicio web ya que los métodos 'studentSubmission' y 'setStudentSubmissionTextType' son atributos de solo lectura.

Se ha hecho una solicitud a Blackboard para actualizar la documentación.

Cuestiones relacionadas