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
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
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
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)
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
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)
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
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}))
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}))
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, }))
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)
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, }))
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
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
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