def test_all_sorting_fields(self): """Test all_sorting_fields method""" self.assertEqual(LoreSortingFields.all_sorting_fields(), [ LoreSortingFields.SORT_BY_NR_VIEWS[0], LoreSortingFields.SORT_BY_NR_ATTEMPTS[0], LoreSortingFields.SORT_BY_AVG_GRADE[0], LoreSortingFields.SORT_BY_TITLE[0], ])
def test_all_sorting_fields(self): """Test all_sorting_fields method""" self.assertEqual( LoreSortingFields.all_sorting_fields(), [ LoreSortingFields.SORT_BY_NR_VIEWS[0], LoreSortingFields.SORT_BY_NR_ATTEMPTS[0], LoreSortingFields.SORT_BY_AVG_GRADE[0], LoreSortingFields.SORT_BY_TITLE[0], ] )
def repository_view(request, repo_slug): """ View for repository page. """ try: repo = get_repo(repo_slug, request.user.id) except NotFound: raise Http404 except LorePermissionDenied: raise PermissionDenied exports = request.session.get( 'learning_resource_exports', {}).get(repo.slug, []) sortby = dict(request.GET.copy()).get('sortby', []) if (len(sortby) > 0 and sortby[0] in LoreSortingFields.all_sorting_fields()): sortby_field = sortby[0] else: # default value sortby_field = LoreSortingFields.DEFAULT_SORTING_FIELD sorting_options = { "current": LoreSortingFields.get_sorting_option( sortby_field), "all": LoreSortingFields.all_sorting_options_but( sortby_field) } try: page_size = int(request.GET.get(LorePagination.page_size_query_param)) except (ValueError, KeyError, TypeError): page_size = LorePagination.page_size if page_size <= 0: page_size = LorePagination.page_size elif page_size > LorePagination.max_page_size: page_size = LorePagination.max_page_size context = { "repo": repo, "perms_on_cur_repo": get_perms(request.user, repo), "sorting_options_json": json.dumps(sorting_options), "exports_json": json.dumps(exports), "page_size_json": json.dumps(page_size) } return render( request, "repository.html", context )
def repository_view(request, repo_slug): """ View for repository page. """ try: repo = get_repo(repo_slug, request.user.id) except NotFound: raise Http404 except LorePermissionDenied: raise PermissionDenied exports = request.session.get('learning_resource_exports', {}).get(repo.slug, []) sortby = dict(request.GET.copy()).get('sortby', []) if (len(sortby) > 0 and sortby[0] in LoreSortingFields.all_sorting_fields()): sortby_field = sortby[0] else: # default value sortby_field = LoreSortingFields.DEFAULT_SORTING_FIELD sorting_options = { "current": LoreSortingFields.get_sorting_option(sortby_field), "all": LoreSortingFields.all_sorting_options_but(sortby_field) } try: page_size = int(request.GET.get(LorePagination.page_size_query_param)) except (ValueError, KeyError, TypeError): page_size = LorePagination.page_size if page_size <= 0: page_size = LorePagination.page_size elif page_size > LorePagination.max_page_size: page_size = LorePagination.max_page_size context = { "repo": repo, "perms_on_cur_repo": get_perms(request.user, repo), "sorting_options_json": json.dumps(sorting_options), "exports_json": json.dumps(exports), "page_size_json": json.dumps(page_size) } return render(request, "repository.html", context)
def __call__(self, request, repo_slug): # Get arguments from the URL # It's a subclass of an external class, so we don't have # repo_slug in __init__. # pylint: disable=attribute-defined-outside-init try: self.repo = get_repo(repo_slug, request.user.id) except NotFound: raise Http404() except LorePermissionDenied: raise PermissionDenied('unauthorized') # get sorting from params if it's there sortby = dict(request.GET.copy()).get('sortby', []) if (len(sortby) > 0 and sortby[0] in LoreSortingFields.all_sorting_fields()): self.sortby = sortby[0] else: # default value self.sortby = LoreSortingFields.DEFAULT_SORTING_FIELD return super(RepositoryView, self).__call__(request)