def insert_comment(user, post_id, comment_id, comment_message, comment_created_time, unit, platform, platform_url, parent_user=None, parent_user_external=None, other_contexts=[]): if check_ifnotinlocallrs(unit, platform, comment_id): lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) statement_id = get_uuid4() # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=xapi_settings.VERB_COMMENTED, platform=platform, # user=user, platformid=comment_id, platformparentid=post_id, parent_user=parent_user, # parent_user_external=parent_user_external, message=comment_message, # datetimestamp=comment_created_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=xapi_settings.VERB_COMMENTED, platform=platform, user=user, platformid=comment_id, platformparentid=post_id, parent_user=parent_user, datetimestamp=comment_created_time) lrs.save() sr = SocialRelationship(verb=xapi_settings.VERB_COMMENTED, from_user=user, to_user=parent_user, to_external_user=parent_user_external, platform=platform, message=comment_message, datetimestamp=comment_created_time, unit=unit, platformid=comment_id) sr.save() stm = socialmedia_builder(statement_id=statement_id, verb=xapi_settings.VERB_COMMENTED, platform=platform, account_name=account_name, account_homepage=platform_url, object_type=xapi_settings.OBJECT_NOTE, object_id=comment_id, message=comment_message, parent_id=post_id, parent_object_type=xapi_settings.OBJECT_NOTE, timestamp=comment_created_time, unit=unit, other_contexts=other_contexts) jsn = stm.to_json() status, content = lrs_client.transfer_statement(user.id, statement=jsn)
def insert_like(user, object_id, message, unit, platform, platform_url, parent_id, parent_object_type, created_time=None, parent_user=None, parent_user_external=None): verb = xapi_settings.VERB_LIKED if check_ifnotinlocallrs(unit, platform, object_id, user, verb): lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) statement_id = get_uuid4() # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, # platformid=object_id, message=message, platformparentid=object_id, parent_user=parent_user, # parent_user_external=parent_user_external, datetimestamp=created_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, platformid=object_id, platformparentid=object_id, parent_user=parent_user, datetimestamp=created_time) lrs.save() sr = SocialRelationship(verb=verb, from_user=user, to_user=parent_user, to_external_user=parent_user_external, platform=platform, message=message, datetimestamp=created_time, unit=unit, platformid=object_id) sr.save() # Send xAPI to LRS stm = socialmedia_builder(statement_id=statement_id, verb=verb, platform=platform, account_name=account_name, account_homepage=platform_url, object_type=xapi_settings.OBJECT_NOTE, object_id=object_id, message=message, parent_id=parent_id, parent_object_type=parent_object_type, timestamp=created_time, unit=unit) jsn = stm.to_json() status, content = lrs_client.transfer_statement(user.id, statement=jsn)
def insert_issue(user, issue_id, verb, object_type, parent_object_type, message, from_name, from_uid, created_time, unit, parent_id, platform, platform_id, account_homepage, shared_displayname=None, tags=[], other_contexts=[]): if check_ifnotinlocallrs(unit, platform, platform_id): lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) statement_id = get_uuid4() # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, # platformid=platform_id, platformparentid=parent_id, # message=message, datetimestamp=created_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, platformid=platform_id, platformparentid=parent_id, datetimestamp=created_time) lrs.save() stm = socialmedia_builder(statement_id=statement_id, verb=verb, platform=platform, account_name=from_uid, account_homepage=account_homepage, object_type=object_type, object_id=issue_id, message=message, parent_id=parent_id, parent_object_type=parent_object_type, timestamp=created_time, unit=unit, tags=tags, other_contexts=other_contexts) jsn = stm.to_json() status, content = lrs_client.transfer_statement(user.id, statement=jsn) """
def insert_closedopen_object(user, object_id, object_message, obj_update_time, unit, platform, platform_url, obj_type, verb, parent_id=None, obj_parent_type=None, other_contexts=[], platform_id=None): check_id = object_id if platform_id: check_id = platform_id if check_ifnotinlocallrs(unit, platform, check_id): lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) statement_id = get_uuid4() # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, # platform=platform, user=user, platformid=object_id, platformparentid=parent_id, # message=object_message, datetimestamp=obj_update_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, platformid=object_id, platformparentid=parent_id, datetimestamp=obj_update_time) lrs.save() stm = socialmedia_builder(statement_id=statement_id, verb=verb, platform=platform, account_name=account_name, account_homepage=platform_url, object_type=obj_type, object_id=object_id, message=object_message, parent_id=parent_id, parent_object_type=obj_parent_type, timestamp=obj_update_time, unit=unit, other_contexts=other_contexts) jsn = stm.to_json() status, content = lrs_client.transfer_statement(user.id, statement=jsn)
def insert_file(user, parent_id, file_id, message, committed_time, unit, platform, platform_url, verb, tags=[], other_contexts=[]): if check_ifnotinlocallrs(unit, platform, file_id): obj = xapi_settings.OBJECT_FILE parent_obj_type = xapi_settings.OBJECT_COLLECTION lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) statement_id = get_uuid4() # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, # user=user, platformid=file_id, platformparentid=parent_id, # message=message, datetimestamp=committed_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, platformid=file_id, platformparentid=parent_id, datetimestamp=committed_time) lrs.save() stm = socialmedia_builder(statement_id=statement_id, verb=verb, platform=platform, account_name=account_name, account_homepage=platform_url, object_type=obj, object_id=file_id, message=message, parent_id=parent_id, parent_object_type=parent_obj_type, timestamp=committed_time, unit=unit, tags=tags, other_contexts=other_contexts) jsn = stm.to_json() status, content = lrs_client.transfer_statement(user.id, statement=jsn)
def get(self): from xapi.oauth_consumer.operative import LRS_Auth session = requests.Session() r = requests.Request lrs = LRS_Auth()
def insert_added_object(user, target_id, object_id, object_text, obj_created_time, unit, platform, platform_url, obj_type, parent_user_external=None, other_contexts=[]): if check_ifnotinlocallrs(unit, platform, object_id): lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) statement_id = get_uuid4() # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=xapi_settings.VERB_ADDED, # platform=platform, user=user, platformid=object_id, platformparentid=target_id, # message=object_text, datetimestamp=obj_created_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=xapi_settings.VERB_ADDED, platform=platform, user=user, platformid=object_id, platformparentid=target_id, datetimestamp=obj_created_time) lrs.save() stm = socialmedia_builder(statement_id=statement_id, verb=xapi_settings.VERB_ADDED, platform=platform, account_name=account_name, account_homepage=platform_url, object_type=obj_type, object_id=object_id, message=object_text, parent_id=target_id, parent_object_type=xapi_settings.OBJECT_TASK, timestamp=obj_created_time, unit=unit, other_contexts=other_contexts) jsn = stm.to_json() status, content = lrs_client.transfer_statement(user.id, statement=jsn)
def get_xapi_statements(self, course_id, user_id=None, xapi_filters=None, more_path=None): unit = UnitOffering.objects.get(id=course_id) lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) user_list = [] if user_id is None: # When user is admin or staff memberships = UnitOfferingMembership.objects.filter(unit=unit) for ms in memberships: # Save all users' IDs in the unit user_list.append(ms.user.id) else: user_list.append(user_id) statement_list = [] for uid in user_list: # Access to LRS to retrieve xAPI statements stmts = lrs_client.get_statement(uid, filters=xapi_filters.to_dict(), more_path=more_path) # print stmts if stmts is None: continue if 'statements' in stmts: statement_list += stmts['statements'] # for stmt in stmts['statements']: # statement_list.append(stmt) else: statement_list.append(stmts) # print 'user %s - num of stmts = %s' % (uid, str(len(stmts['statements']))) # When there are more statements if 'more' in stmts and stmts['more'] != '': # print 'Getting more xapi stmts for user id %s. more_path = %s' % (uid, stmts['more']) statement_list += self.get_xapi_statements( course_id, uid, xapi_filters, stmts['more']) # print statement_list return self.filter_result(statement_list, xapi_filters)
def get_xapi_statements(self, course_id, user_id = None, xapi_filters = None, more_path = None): unit = UnitOffering.objects.get(id = course_id) lrs_client = LRS_Auth(provider_id = unit.get_lrs_id()) user_list = [] if user_id is None: # When user is admin or staff memberships = UnitOfferingMembership.objects.filter(unit = unit) for ms in memberships: # Save all users' IDs in the unit user_list.append(ms.user.id) else: user_list.append(user_id) statement_list = [] for uid in user_list: # Access to LRS to retrieve xAPI statements stmts = lrs_client.get_statement(uid, filters = xapi_filters.to_dict(), more_path = more_path) # print stmts if stmts is None: continue if 'statements' in stmts: statement_list += stmts['statements'] # for stmt in stmts['statements']: # statement_list.append(stmt) else: statement_list.append(stmts) # print 'user %s - num of stmts = %s' % (uid, str(len(stmts['statements']))) # When there are more statements if 'more' in stmts and stmts['more'] != '': # print 'Getting more xapi stmts for user id %s. more_path = %s' % (uid, stmts['more']) statement_list += self.get_xapi_statements(course_id, uid, xapi_filters, stmts['more']) # print statement_list return self.filter_result(statement_list, xapi_filters)
def insert_post(user, post_id, message, created_time, unit, platform, platform_url, tags=()): # verb = 'created' verb = xapi_settings.VERB_CREATED #TODO: update for lrs connection as it happens if check_ifnotinlocallrs(unit, platform, post_id, user, verb): #Setup statment builder with param and build lrs using defualt rs lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) statement_id = get_uuid4() # #lrs.xapi = the "transaction" uuid # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, # platformid=post_id, message=message, datetimestamp=created_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=verb, platform=platform, user=user, platformid=post_id, datetimestamp=created_time) lrs.save() #Transfer xapi to lrs of cache for later stm = socialmedia_builder(statement_id=statement_id, verb=verb, platform=platform, account_name=account_name, account_homepage=platform_url, object_type=xapi_settings.OBJECT_NOTE, object_id=post_id, message=message, timestamp=created_time, unit=unit, tags=tags) jsn = stm.to_json() # print 'sending xapi... ' # print jsn status, content = lrs_client.transfer_statement(user.id, statement=jsn) # print 'in insert_post(): Response status/code from LRS: %s/%s' % (status, content) for tag in tags: if tag[0] == "@": # If the user exists, use their user object else reference them as an external user if username_exists(tag[1:], unit, platform): to_user = get_user_from_screen_name(tag[1:], platform) external_user = None else: to_user = None external_user = tag[1:] sr = SocialRelationship(verb=xapi_settings.VERB_MENTIONED, from_user=user, to_user=to_user, to_external_user=external_user, platform=platform, message=message, datetimestamp=created_time, unit=unit, platformid=post_id) sr.save()
def insert_share(user, post_id, share_id, comment_message, comment_created_time, unit, platform, platform_url, tags=(), parent_user=None, parent_external_user=None): if check_ifnotinlocallrs(unit, platform, share_id): # Setup statement builder parameters and lrs using default lrs. TODO: Institutions required in xapi maybe? lrs_client = LRS_Auth(provider_id=unit.get_lrs_id()) account_name = user.userprofile.get_username_for_platform(platform) _parent_user = parent_user if parent_user else parent_external_user statement_id = get_uuid4() # #lrs.xapi = the "transaction" uuid # lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=xapi_settings.VERB_SHARED, platform=platform, user=user, # platformid=share_id, platformparentid=post_id, parent_user=parent_user, # parent_user_external=parent_external_user, message=comment_message, # datetimestamp=comment_created_time) lrs = LearningRecord(statement_id=statement_id, unit=unit, verb=xapi_settings.VERB_SHARED, platform=platform, user=user, platformid=share_id, platformparentid=post_id, parent_user=parent_user, datetimestamp=comment_created_time) lrs.save() #Send xapi to lrs or cache for later stm = socialmedia_builder(statement_id=statement_id, verb=xapi_settings.VERB_SHARED, platform=platform, account_name=account_name, account_homepage=platform_url, object_type=xapi_settings.OBJECT_NOTE, object_id=share_id, message=comment_message, parent_id=post_id, parent_object_type=xapi_settings.OBJECT_NOTE, timestamp=comment_created_time, unit=unit, tags=tags) jsn = stm.to_json() #Transfer xapi to lrs TODO: Handle caching for failed sends # print 'Sending xapi..' status, content = lrs_client.transfer_statement(user.id, statement=jsn) # print 'Tried to send xapi to lrs: status %s, response: %s' % (status,content) sr = SocialRelationship(verb=xapi_settings.VERB_SHARED, from_user=user, to_user=parent_user, to_external_user=parent_external_user, platform=platform, message=comment_message, datetimestamp=comment_created_time, unit=unit, platformid=share_id) sr.save()