def _traverse_upload(activity, parent=None, root=None, user=None): learning_activity = None #If root is None then this is the root activity, #it must be created in advance, so we get the activity. if root is None: root = LearningActivity.objects.get(pk=activity['id']) learning_activity = root print "upload root", root, root.id, activity['id'] else: learning_activity = LearningActivity( parent=parent, root=root, name=activity['learning_activity']['name'], uri=activity['learning_activity']['uri'], lom=activity['learning_activity']['lom'] or "", attempt_limit=activity['learning_activity']['attempt_limit'], available_until=activity['learning_activity']['available_until'], available_from=activity['learning_activity']['available_from'], description=activity['learning_activity']['description'], image=activity['learning_activity']['image'], pre_condition_rule=add_precondition( activity['learning_activity']['rules']) or "", rollup_rule=('rollup_rule' in activity['learning_activity'] and activity['learning_activity']['rollup_rule']) or "", is_container=activity['learning_activity']['is_container'], is_visible=activity['learning_activity']['is_visible'], rules=activity['learning_activity']['rules'] or "", order_in_container=activity['learning_activity'] ['order_in_container'], choice_exit=activity['learning_activity']['choice_exit'], rollup_progress=('rollup_progress' in activity['learning_activity'] and activity['learning_activity']['rollup_progress']) or "") learning_activity.save() print "upload activity", learning_activity if 'children' in activity: if activity['children']: for child in activity['children']: _traverse_upload(child, parent=learning_activity, root=root) else: pass
def create_empty_course(url, user, name='New Course', short_description="", is_private=False): learning_activity = LearningActivity(parent=None, root=None, is_container=True, name=name, uri='/activity/' + url) learning_activity.save() course = Course(short_description=short_description, root=learning_activity, private=is_private) course.save() auth = AuthorLearningActivity(user=user, learning_activity=learning_activity) auth.save() return learning_activity.id, learning_activity.uri
def _traverse_update(activity, parent=None, root=None, user=None): learning_activity = None #If root is None then this is the root activity, #it must be created in advance, so we get the activity. if root is None: root = LearningActivity.objects.get(pk=activity['id']) if 'state' not in activity['learning_activity']: print "Root:SAVE" root.name = activity['learning_activity']['name'] root.uri = activity['learning_activity']['uri'] root.lom = activity['learning_activity']['lom'] or "" root.attempt_limit = activity['learning_activity']['attempt_limit'] root.available_until = activity['learning_activity'][ 'available_until'] root.available_from = activity['learning_activity'][ 'available_from'] root.description = activity['learning_activity']['description'] root.image = activity['learning_activity']['image'] root.rules = activity['learning_activity']['rules'] or "" root.pre_condition_rule = add_precondition( activity['learning_activity']['rules']) or "" root.rollup_rule = ( 'rollup_rule' in activity['learning_activity'] and activity['learning_activity']['rollup_rule']) or "" root.save() learning_activity = root elif 'state' in activity['learning_activity'] and activity[ 'learning_activity']['state'] == 'Added': learning_activity = LearningActivity( parent=parent, root=root, name=activity['learning_activity']['name'], uri=activity['learning_activity']['uri'], lom=activity['learning_activity']['lom'] or "", attempt_limit=activity['learning_activity']['attempt_limit'], available_until=activity['learning_activity']['available_until'], available_from=activity['learning_activity']['available_from'], description=activity['learning_activity']['description'], image=activity['learning_activity']['image'], pre_condition_rule=add_precondition( activity['learning_activity']['rules']) or "", rollup_rule=activity['learning_activity']['rollup_rule'], is_container=activity['learning_activity']['is_container'], is_visible=activity['learning_activity']['is_visible'], rules=activity['learning_activity']['rules'] or "", order_in_container=activity['learning_activity'] ['order_in_container'], choice_exit=activity['learning_activity']['choice_exit'], rollup_progress=activity['learning_activity']['rollup_progress']) learning_activity.save() #Subscribe students taking the course to the new activity subscribed_users = root.activity_tree.all() for subscription in subscribed_users: ula = UserLearningActivity(user=subscription.user, learning_activity=learning_activity) ula.save() elif 'state' in activity['learning_activity'] and activity[ 'learning_activity']['state'] == "Deleted": learning_activity = LearningActivity.objects.get( pk=activity['learning_activity']['id']) learning_activity.delete() else: #We need to update the learning activity learning_activity = LearningActivity.objects.get( pk=activity['learning_activity']['id']) learning_activity.parent = parent learning_activity.root = root learning_activity.name = activity['learning_activity']['name'] learning_activity.uri = activity['learning_activity']['uri'] learning_activity.lom = activity['learning_activity']['lom'] or "" learning_activity.attempt_limit = activity['learning_activity'][ 'attempt_limit'] learning_activity.available_until = activity['learning_activity'][ 'available_until'] learning_activity.available_from = activity['learning_activity'][ 'available_from'] learning_activity.description = activity['learning_activity'][ 'description'] learning_activity.image = activity['learning_activity']['image'] learning_activity.pre_condition_rule = add_precondition( activity['learning_activity']['rules']) or "" learning_activity.rollup_rule = ( 'rollup_rule' in activity['learning_activity'] and activity['learning_activity']['rollup_rule']) or "" learning_activity.is_container = activity['learning_activity'][ 'is_container'] learning_activity.is_visible = activity['learning_activity'][ 'is_visible'] learning_activity.order_in_container = activity['learning_activity'][ 'order_in_container'] learning_activity.choice_exit = activity['learning_activity'][ 'choice_exit'] learning_activity.rules = activity['learning_activity']['rules'] or "" learning_activity.rollup_progress = ( 'rollup_progress' in activity['learning_activity'] and activity['learning_activity']['rollup_progress']) or "" print activity['learning_activity']['name'].encode( 'utf-8'), activity['learning_activity']['choice_exit'] learning_activity.save() if 'children' in activity: if activity['children']: for child in activity['children']: _traverse_update(child, parent=learning_activity, root=root) else: pass