Exemplo n.º 1
0
def publish_course(course_uri):
    """ publish the course - also add course to the 'listed' list in the learn index """

    course_db = _get_course_db(course_uri)
    if not (course_db.draft or course_db.archived):
        return get_course(course_uri)

    course_db.draft = False
    course_db.archived = False
    course_db.save()

    course = get_course(course_uri)
    course_url = reverse("courses_slug_redirect", kwargs={"course_id": course["id"]})
    try:
        learn_model.remove_course_from_list(course_url, "drafts")
    except:
        try:
            learn_model.remove_course_from_list(course_url, "archived")
        except:
            pass

    learn_model.add_course_to_list(course_url, "listed")

    # TODO: Notify interested people in new course
    return course
Exemplo n.º 2
0
def unpublish_course(course_uri):
    course_db = _get_course_db(course_uri)

    if course_db.draft and not course_db.archived:
        return get_course(course_uri)

    course_db.archived = False
    course_db.draft = True
    course_db.save()

    course = get_course(course_uri)
    course_url = reverse('courses_slug_redirect',
                         kwargs={'course_id': course["id"]})

    try:
        learn_model.remove_course_from_list(course_url, 'listed')
    except:
        try:
            learn_model.remove_course_from_list(course_url, 'archived')
        except:
            log.error('Course not in any lists')

    learn_model.add_course_to_list(course_url, "drafts")

    return course
Exemplo n.º 3
0
def unpublish_course(course_uri):
    course_db = _get_course_db(course_uri)

    if course_db.draft and not course_db.archived:
        return get_course(course_uri)

    course_db.archived = False
    course_db.draft = True
    course_db.save()

    course = get_course(course_uri)
    course_url = reverse(
        'courses_slug_redirect',
        kwargs={'course_id': course["id"]}
    )

    try:
        learn_model.remove_course_from_list(course_url, 'listed')
    except:
        try:
            learn_model.remove_course_from_list(course_url, 'archived')
        except:
            log.error('Course not in any lists')

    learn_model.add_course_to_list(course_url, "drafts")

    return course
Exemplo n.º 4
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)
Exemplo n.º 5
0
def archive_course(course_uri):
    """ mark a course as archived - this will also disable editing of the course """
    course_db = _get_course_db(course_uri)
    if course_db.archived:
        return get_course(course_uri)

    course_db.archived = True
    course_db.save()

    course = get_course(course_uri)
    course_url = reverse(
        'courses_slug_redirect',
        kwargs={'course_id': course["id"]}
    )

    try:
        learn_model.remove_course_from_list(course_url, "listed")
    except:
        try: 
            learn_model.remove_course_from_list(course_url, "drafts")
        except:
            log.error('Course not in any lists')

    learn_model.add_course_to_list(course_url, "archived")
    return course
Exemplo n.º 6
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)
Exemplo n.º 7
0
def publish_course(course_uri):
    """ publish the course - also add course to the 'listed' list in the learn index """

    course_db = _get_course_db(course_uri)
    if not (course_db.draft or course_db.archived):
        return get_course(course_uri)

    course_db.draft = False
    course_db.archived = False
    course_db.save()

    course = get_course(course_uri)
    course_url = reverse('courses_slug_redirect',
                         kwargs={'course_id': course["id"]})
    try:
        learn_model.remove_course_from_list(course_url, "drafts")
    except:
        try:
            learn_model.remove_course_from_list(course_url, "archived")
        except:
            pass

    learn_model.add_course_to_list(course_url, "listed")

    # TODO: Notify interested people in new course
    return course
Exemplo n.º 8
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)
Exemplo n.º 9
0
def edit_membership_delete(request, slug):
    school = get_object_or_404(School, slug=slug)
    if request.method == 'POST':
        course_url = request.POST.get('course_url')
        try:
            remove_course_from_list(course_url, slug)
            messages.success(request,
                             _("The course is no longer part of this school."))
        except:
            messages.error(request, _("Could not remove course from school"))
    return http.HttpResponseRedirect(
        reverse('schools_edit_membership', kwargs={'slug': school.slug}))
Exemplo n.º 10
0
def edit_membership_delete(request, slug):
    school = get_object_or_404(School, slug=slug)
    if request.method == 'POST':
        course_url = request.POST.get('course_url')
        try:
            remove_course_from_list(course_url, slug)
            messages.success(request, _(
                "The course is no longer part of this school."))
        except:
            messages.error(request, _("Could not remove course from school"))
    return http.HttpResponseRedirect(reverse('schools_edit_membership',
        kwargs={'slug': school.slug}))
Exemplo n.º 11
0
def edit_featured_delete(request, slug):
    school = get_object_or_404(School, slug=slug)
    if request.method == 'POST':
        course_url = request.POST.get('course_url')
        try:
            remove_course_from_list(course_url, '{0}_featured'.format(slug))
            msg = _("The course stopped being featured for this school.")
            messages.success(request, msg)
        except:
            messages.error(request, _('Could not remove course from featured list'))
    return http.HttpResponseRedirect(reverse('schools_edit_featured', kwargs={
        'slug': school.slug,
    }))
Exemplo n.º 12
0
    def test_course_list(self):
        """ test that course can be added to and removed from a list """

        add_course_listing(**self.test_course)
        create_list("test_list", "Test List", "")
        add_course_to_list(self.test_course["course_url"], "test_list")
        course_list = get_courses_by_list("test_list")

        self.assertTrue(len(course_list) == 1)

        remove_course_from_list(self.test_course["course_url"], "test_list")
        course_list = get_courses_by_list("test_list")

        self.assertTrue(len(course_list) == 0)
Exemplo n.º 13
0
    def test_course_list(self):
        """ test that course can be added to and removed from a list """

        add_course_listing(**self.test_course)
        create_list("test_list", "Test List", "")
        add_course_to_list(self.test_course["course_url"], "test_list")
        course_list = get_courses_by_list("test_list")

        self.assertTrue(len(course_list) == 1)

        remove_course_from_list(self.test_course["course_url"], "test_list")
        course_list = get_courses_by_list("test_list")

        self.assertTrue(len(course_list) == 0)
Exemplo n.º 14
0
def edit_featured_delete(request, slug):
    school = get_object_or_404(School, slug=slug)
    if request.method == 'POST':
        course_url = request.POST.get('course_url')
        try:
            remove_course_from_list(course_url, '{0}_featured'.format(slug))
            msg = _("The course stopped being featured for this school.")
            messages.success(request, msg)
        except:
            messages.error(request,
                           _('Could not remove course from featured list'))
    return http.HttpResponseRedirect(
        reverse('schools_edit_featured', kwargs={
            'slug': school.slug,
        }))
Exemplo n.º 15
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
Exemplo n.º 16
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
Exemplo n.º 17
0
def archive_course(course_uri):
    """ mark a course as archived - this will also disable editing of the course """
    course_db = _get_course_db(course_uri)
    if course_db.archived:
        return get_course(course_uri)

    course_db.archived = True
    course_db.save()

    course = get_course(course_uri)
    course_url = reverse('courses_slug_redirect',
                         kwargs={'course_id': course["id"]})

    try:
        learn_model.remove_course_from_list(course_url, "listed")
    except:
        try:
            learn_model.remove_course_from_list(course_url, "drafts")
        except:
            log.error('Course not in any lists')

    learn_model.add_course_to_list(course_url, "archived")
    return course