Пример #1
0
    def update_learn_api(self):
        if not self.pk:
            return
        try:
            learn_model.update_course_listing(**self.get_learn_api_data())
        except:
            learn_model.add_course_listing(**self.get_learn_api_data())

        course_url = reverse('projects_show', kwargs={'slug': self.slug})
        course_lists = learn_model.get_lists_for_course(course_url)
        list_names = [ l['name'] for l in course_lists ]
        if self.not_listed or self.test:
            for list_name in list_names:
                learn_model.remove_course_from_list(course_url, list_name)
        else:
            desired_list = 'drafts'
            if not (self.under_development or self.archived):
                desired_list = 'listed'
            elif self.archived:
                desired_list = 'archived'
            possible_lists = ['drafts', 'listed', 'archived']
            possible_lists.remove(desired_list)
            for l in possible_lists:
                if l in list_names:
                    learn_model.remove_course_from_list(course_url, l)
            if desired_list not in list_names:
                learn_model.add_course_to_list(course_url, desired_list)
Пример #2
0
    def update_learn_api(self):
        if not self.pk:
            return
        try:
            learn_model.update_course_listing(**self.get_learn_api_data())
        except:
            learn_model.add_course_listing(**self.get_learn_api_data())

        course_url = reverse('projects_show', kwargs={'slug': self.slug})
        course_lists = learn_model.get_lists_for_course(course_url)
        list_names = [ l['name'] for l in course_lists ]
        if self.not_listed or self.test:
            for list_name in list_names:
                learn_model.remove_course_from_list(course_url, list_name)
        else:
            desired_list = 'drafts'
            if not (self.under_development or self.archived):
                desired_list = 'listed'
            elif self.archived:
                desired_list = 'archived'
            possible_lists = ['drafts', 'listed', 'archived']
            possible_lists.remove(desired_list)
            for l in possible_lists:
                if l in list_names:
                    learn_model.remove_course_from_list(course_url, l)
            if desired_list not in list_names:
                learn_model.add_course_to_list(course_url, desired_list)
Пример #3
0
    def update_learn_api(self):
        if not self.pk:
            return
        try:
            learn_model.update_course_listing(**self.get_learn_api_data())
        except:
            learn_model.add_course_listing(**self.get_learn_api_data())

        course_url = reverse("projects_show", kwargs={"slug": self.slug})
        course_lists = learn_model.get_lists_for_course(course_url)
        list_names = [l["name"] for l in course_lists]
        if self.not_listed or self.test:
            for list_name in list_names:
                learn_model.remove_course_from_list(course_url, list_name)
        else:
            desired_list = "drafts"
            if not (self.under_development or self.archived):
                desired_list = "listed"
            elif self.archived:
                desired_list = "archived"
            possible_lists = ["drafts", "listed", "archived"]
            possible_lists.remove(desired_list)
            for l in possible_lists:
                if l in list_names:
                    learn_model.remove_course_from_list(course_url, l)
            if desired_list not in list_names:
                learn_model.add_course_to_list(course_url, desired_list)
Пример #4
0
def _populate_course_context( request, course_id, context ):
    course_uri = course_model.course_id2uri(course_id)
    course = _get_course_or_404(course_uri)
    course['author'] = course['author_uri'].strip('/').split('/')[-1]
    context['course'] = course
    context['course_url'] = reverse('courses_show',
        kwargs={'course_id': course['id'], 'slug': course['slug']}
    )
    if 'image_uri' in course:
        context['course']['image'] = media_model.get_image(course['image_uri'])

    #NOTE if performance becomes a problem dont fetch cohort
    cohort = course_model.get_course_cohort(course_uri)
    context['cohort'] = cohort
    user_uri = u"/uri/user/{0}".format(request.user.username)
    context['organizer'] = course_model.is_cohort_organizer(
        user_uri, cohort['uri']
    )
    context['organizer'] |= request.user.is_superuser
    context['admin'] = request.user.is_superuser
    context['can_edit'] = context['organizer'] and not course['status'] == 'archived'
    context['trusted_user'] = request.user.has_perm('users.trusted_user')
    if course_model.user_in_cohort(user_uri, cohort['uri']):
        if not context['organizer']:
            context['show_leave_course'] = True
        context['learner'] = True
    elif cohort['signup'] == "OPEN":
        context['show_signup'] = True

    try:
        course_lists = learn_model.get_lists_for_course(reverse(
            'courses_slug_redirect',
            kwargs={'course_id': course_id}
        ))
        f = lambda l: l['name'] not in ['drafts', 'listed', 'archived']
        context['lists'] = filter(f, course_lists)
    except:
        log.error("Could not get lists for course!")

    if 'based_on_uri' in course:
        course['based_on'] = course_model.get_course(course['based_on_uri'])

    context['meta_data'] = lrmi_model.get_tags(course_uri)
    if 'educational_alignment' in context['meta_data']:
        context['educational_alignment'] = json.loads(context['meta_data']['educational_alignment'])
        del context['meta_data']['educational_alignment']

    return context
Пример #5
0
def delete_spam_course(course_uri):
    """ Delete a course and remove listing from index """
    # TODO - this doesn't do anything special for spam, maybe rename the function
    course_id = course_uri2id(course_uri)
    course_db = db.Course.objects.get(id=course_id)
    course_db.deleted = True
    course_db.save()

    # remove the course listing
    course_url = reverse('courses_slug_redirect',
                         kwargs={'course_id': course_db.id})
    try:
        lists = learn_model.get_lists_for_course(course_url)
        for course_list in lists:
            learn_model.remove_course_from_list(course_url,
                                                course_list['name'])
        learn_model.remove_course_listing(course_url)
    except:
        pass
Пример #6
0
def delete_spam_course(course_uri):
    """ Delete a course and remove listing from index """
    # TODO - this doesn't do anything special for spam, maybe rename the function
    course_id = course_uri2id(course_uri)
    course_db = db.Course.objects.get(id=course_id)
    course_db.deleted = True
    course_db.save()

    # remove the course listing
    course_url = reverse(
        'courses_slug_redirect',
        kwargs={'course_id': course_db.id}
    )
    try:
        lists = learn_model.get_lists_for_course(course_url)
        for course_list in lists:
            learn_model.remove_course_from_list(course_url, course_list['name'])
        learn_model.remove_course_listing(course_url)
    except:
        pass