Skip to content

Commit cf34e0a

Browse files
authored
Merge pull request #131 from Code-Institute-Org/add_sort_by_feature_to_bookmarks
Add sort by bookmark date feature
2 parents e250062 + d0b885f commit cf34e0a

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

lms/djangoapps/ci_program/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from django.conf.urls import url
22

3-
from .views import show_programs, show_program_bookmarks
3+
from .views import show_programs, show_program_bookmarks, set_bookmark_preference
44

55
urlpatterns = [
66
url(r'^(?P<program_name>[\w\-]+)$', show_programs, name='show_programs'),
77
url(r'^(?P<program_name>[\w\-]+)/bookmarks', show_program_bookmarks, name='show_program_bookmarks'),
8+
url(r'^(?P<program_name>[\w\-]+)/bookmark_preference', set_bookmark_preference, name='set_bookmark_preference'),
89
]

lms/djangoapps/ci_program/views.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from ci_program.models import Program
99
from openedx.core.djangoapps.bookmarks.models import Bookmark
1010
from django.http import Http404
11+
from django.http import HttpResponseRedirect
1112

1213

1314
@login_required
@@ -46,9 +47,13 @@ def show_program_bookmarks(request, program_name):
4647
page_size = int(request.GET.get('page_size', 10))
4748

4849
program = Program.objects.get(marketing_slug=program_name)
49-
bookmarks = Bookmark.objects.filter(
50-
# course_key__in=program.get_course_locators(),
51-
user=request.user)
50+
bookmark_sort_by_desc = request.COOKIES.get('bookmark_sort_by_desc', 'false')
51+
52+
if bookmark_sort_by_desc == 'true':
53+
bookmarks = Bookmark.objects.filter(user=request.user).order_by('-created')
54+
else:
55+
bookmarks = Bookmark.objects.filter(user=request.user)
56+
5257
page_data = bookmarks[(page - 1) * page_size: page * page_size]
5358

5459
return render_to_response('programs/program_bookmarks.html', {
@@ -57,4 +62,22 @@ def show_program_bookmarks(request, program_name):
5762
"page_size": page_size,
5863
"total_pages": math.ceil(len(bookmarks) / page_size),
5964
"program_name": program_name,
65+
"bookmark_sort_by_desc": bookmark_sort_by_desc,
6066
})
67+
68+
69+
@login_required
70+
def set_bookmark_preference(request, program_name):
71+
"""
72+
Set the bookmark preference for sort by date desc
73+
"""
74+
sort_by_desc = request.POST.get('bookmark_preference', 'false')
75+
76+
response = HttpResponseRedirect(reverse('show_program_bookmarks', args=[program_name]))
77+
78+
if sort_by_desc == 'true':
79+
response.set_cookie('bookmark_sort_by_desc', 'true', max_age=30 * 24 * 60 * 60) # Expires in 30 days
80+
else:
81+
response.set_cookie('bookmark_sort_by_desc', 'false', max_age=30 * 24 * 60 * 60)
82+
83+
return response

0 commit comments

Comments
 (0)