Пример #1
0
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
Пример #2
0
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
Пример #3
0
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