Sort courses announcement date
If there is no announcement date (in the policy metadata) then use a heuristic to sort them. If there is an announcement date, the use it in the heuristic to determine if the course is new or not.
This commit is contained in:
@@ -64,6 +64,7 @@ def course_image_url(course):
|
||||
path = course.metadata['data_dir'] + "/images/course_image.jpg"
|
||||
return try_staticfiles_lookup(path)
|
||||
|
||||
|
||||
def find_file(fs, dirs, filename):
|
||||
"""
|
||||
Looks for a filename in a list of dirs on a filesystem, in the specified order.
|
||||
@@ -80,6 +81,7 @@ def find_file(fs, dirs, filename):
|
||||
return filepath
|
||||
raise ResourceNotFoundError("Could not find {0}".format(filename))
|
||||
|
||||
|
||||
def get_course_about_section(course, section_key):
|
||||
"""
|
||||
This returns the snippet of html to be rendered on the course about page,
|
||||
@@ -234,4 +236,18 @@ def get_courses(user, domain=None):
|
||||
courses = [c for c in courses if has_access(user, c, 'see_exists')]
|
||||
|
||||
courses = sorted(courses, key=lambda course:course.number)
|
||||
|
||||
return courses
|
||||
|
||||
|
||||
def sort_by_announcement(courses):
|
||||
"""
|
||||
Sorts a list of courses by their announcement date. If the date is
|
||||
not available, sort them by their start date.
|
||||
"""
|
||||
|
||||
# Sort courses by how far are they from they start day
|
||||
key = lambda course: course.sorting_score
|
||||
courses = sorted(courses, key=key)
|
||||
|
||||
return courses
|
||||
|
||||
@@ -17,7 +17,8 @@ from django.views.decorators.cache import cache_control
|
||||
|
||||
from courseware import grades
|
||||
from courseware.access import has_access
|
||||
from courseware.courses import (get_courses, get_course_with_access, get_courses_by_university)
|
||||
from courseware.courses import (get_courses, get_course_with_access,
|
||||
get_courses_by_university, sort_by_announcement)
|
||||
import courseware.tabs as tabs
|
||||
from courseware.models import StudentModuleCache
|
||||
from module_render import toc_for_course, get_module, get_instance_module
|
||||
@@ -67,11 +68,8 @@ def courses(request):
|
||||
'''
|
||||
Render "find courses" page. The course selection work is done in courseware.courses.
|
||||
'''
|
||||
courses = get_courses(request.user, domain=request.META.get('HTTP_HOST'))
|
||||
|
||||
# Sort courses by how far are they from they start day
|
||||
key = lambda course: course.days_until_start
|
||||
courses = sorted(courses, key=key, reverse=True)
|
||||
courses = get_courses(request.user, request.META.get('HTTP_HOST'))
|
||||
courses = sort_by_announcement(courses)
|
||||
|
||||
return render_to_response("courseware/courses.html", {'courses': courses})
|
||||
|
||||
@@ -438,10 +436,7 @@ def university_profile(request, org_id):
|
||||
# Only grab courses for this org...
|
||||
courses = get_courses_by_university(request.user,
|
||||
domain=request.META.get('HTTP_HOST'))[org_id]
|
||||
|
||||
# Sort courses by how far are they from they start day
|
||||
key = lambda course: course.days_until_start
|
||||
courses = sorted(courses, key=key, reverse=True)
|
||||
courses = sort_by_announcement(courses)
|
||||
|
||||
context = dict(courses=courses, org_id=org_id)
|
||||
template_file = "university_profile/{0}.html".format(org_id).lower()
|
||||
|
||||
Reference in New Issue
Block a user