def courses_detail(request, institution_id, course_id, kis_mode, language=enums.languages.ENGLISH): course, error = Course.find(institution_id, course_id, kis_mode, language) if error: return render(request, '500.html') page = get_page_for_language(language, CourseDetailPage.objects.all()) page.uni_site_links_header = page.uni_site_links_header.replace('{{institution_name}}', course.institution.pub_ukprn_name) comparison_page = get_page_for_language(language, CourseComparisonPage.objects.all()) bookmark_page = get_page_for_language(language, CourseManagePage.objects.all()) if not page: return render(request, '404.html') full_path = '%s?%s' % (request.path, request.environ.get('QUERY_STRING')) welsh_url = '/cy' + full_path if language == enums.languages.ENGLISH else full_path english_url = full_path.replace('/cy/', '/') context = { 'page': page, 'course': course, 'comparison_link': comparison_page.url if comparison_page else '#', 'manage_link': bookmark_page.url if bookmark_page else '#', 'english_url': english_url, 'welsh_url': welsh_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies') } return render(request, 'courses/course_detail_page.html', context)
def results(request, language=enums.languages.ENGLISH): query_params = request.GET search_form = SearchForm(query_params) course_search = CourseSearch(query_params.get('subject_query', ""), query_params.get('institution_query', ""), query_params.get('page', 1), query_params.get('count', 20)) error = course_search.execute() if error: return render(request, '500.html') page = get_page_for_language(language, CourseFinderResults.objects.all()) if not page: return render(request, '404.html') comparison_page = get_page_for_language(language, CourseComparisonPage.objects.all()) bookmark_page = get_page_for_language(language, CourseManagePage.objects.all()) full_path = '%s?%s' % (request.path, request.environ.get('QUERY_STRING')) welsh_url = '/cy' + full_path if language == enums.languages.ENGLISH else full_path english_url = full_path.replace('/cy/', '/') context = { 'page': page, 'search': course_search, 'pagination_url': 'results', 'comparison_link': comparison_page.url if comparison_page else '#', 'manage_link': bookmark_page.url if bookmark_page else '#', 'english_url': english_url, 'welsh_url': welsh_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies'), 'filter_form': search_form } return render(request, 'coursefinder/course_finder_results.html', context)
def results(request, language=enums.languages.ENGLISH): query_params = request.POST search_form = FilterForm({ "course_query": query_params.get('subject_query', ""), "institution_query": query_params.get('institution_query', ""), }) course_search = CourseSearch(query_params.get('subject_query', ""), query_params.get('institution_query', ""), query_params.get('page', 1), query_params.get('count', 20), language) error = course_search.execute() if error: redirect_page = get_new_landing_page_for_language(language) # redirect_page = get_page_for_language(language, SearchLandingPage.objects.all()).url return redirect(redirect_page + '?load_error=true&error_type=1') page = get_page_for_language(language, CourseFinderResults.objects.all()) if not page: return render(request, '404.html') comparison_page = get_page_for_language(language, CourseComparisonPage.objects.all()) bookmark_page = get_page_for_language(language, CourseManagePage.objects.all()) full_path = '%s?%s' % (request.path, request.environ.get('QUERY_STRING')) welsh_url = '/cy' + full_path if language == enums.languages.ENGLISH else full_path english_url = full_path.replace('/cy/', '/') context = page.get_context(request) context.update({ 'page': page, 'search': course_search, 'pagination_url': 'results', 'comparison_link': comparison_page.url if comparison_page else '#', 'manage_link': bookmark_page.url if bookmark_page else '#', 'english_url': english_url, 'welsh_url': welsh_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies'), }) return render(request, 'coursefinder/course_finder_results.html', context)
def narrow_search(request, language=enums.languages.ENGLISH): post_body = request.POST selection = post_body.get('radioGroup', None) if selection == "uni": page = get_page_for_language(language, CourseFinderUni.objects.all()) elif selection == "home": page = get_page_for_language(language, CourseFinderPostcode.objects.all()) else: page = get_page_for_language(language, CourseFinderSummary.objects.all()) if page: return HttpResponseRedirect(page.url) return render(request, '404.html')
def course_finder_results(request, language=enums.languages.ENGLISH): query_params = request.POST countries_query = ','.join(query_params.getlist('countries_query')) if 'countries_query' in query_params else None filter_form = FilterForm(query_params) filters = build_filters(query_params) course_finder_search = CourseFinderSearch(query_params.get('subject_query', None), query_params.get('institution_query', None), countries_query, query_params.get('postcode_query', None), filters, query_params.get('course_query', None), query_params.get('page', 1), query_params.get('count', 20), language) error = course_finder_search.execute() if error: redirect_page = get_new_landing_page_for_language(language) #redirect_page = get_page_for_language(language, SearchLandingPage.objects.all()).url return redirect(redirect_page + '?load_error=true&error_type=1') page = get_page_for_language(language, CourseFinderResults.objects.all()) comparison_page = get_page_for_language(language, CourseComparisonPage.objects.all()) bookmark_page = get_page_for_language(language, CourseManagePage.objects.all()) welsh_url = '/cy' + request.path if language == enums.languages.ENGLISH else request.path english_url = request.path.replace('/cy/', '/') if not page: return render(request, '404.html') context = page.get_context(request) context.update({ 'page': page, 'search': course_finder_search, 'pagination_url': 'course_finder_results', 'comparison_link': comparison_page.url if comparison_page else '#', 'manage_link': bookmark_page.url if bookmark_page else '#', 'english_url': english_url, 'welsh_url': welsh_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies'), 'filter_form': filter_form }) return render(request, 'coursefinder/course_finder_results.html', context)
def institution_detail(request, institution_id, language=enums.languages.ENGLISH): institution, error = Institution.find(institution_id, language) if error: redirect_page = get_new_landing_page_for_language(language) #redirect_page = get_page_for_language(language, SearchLandingPage.objects.all()).url return redirect(redirect_page + '?load_error=true&error_type=0') page = get_page_for_language(language, InstitutionDetailPage.objects.all()) if not page: return render(request, '404.html') page.tef_report_link = page.tef_report_link.replace('{{institution_name}}', institution.pub_ukprn_name) full_path = '%s?%s' % (request.path, request.environ.get('QUERY_STRING')) if language == enums.languages.ENGLISH: translated_url = '/cy' + request.path if language == enums.languages.ENGLISH else request.path else: translated_url = request.path.replace('/cy/', '/') context = page.get_context(request) context.update({ 'page': page, 'institution': institution, 'translated_url': translated_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies') }) return render(request, 'institutions/institution_detail_page.html', context)
def institution_detail(request, institution_id, language=enums.languages.ENGLISH): institution, error = Institution.find(institution_id, language) if error: return render(request, '500.html') page = get_page_for_language(language, InstitutionDetailPage.objects.all()) if not page: return render(request, '404.html') page.tef_report_link = page.tef_report_link.replace( '{{institution_name}}', institution.pub_ukprn_name) full_path = '%s?%s' % (request.path, request.environ.get('QUERY_STRING')) welsh_url = '/cy' + full_path if language == enums.languages.ENGLISH else full_path english_url = full_path.replace('/cy/', '/') context = { 'page': page, 'institution': institution, 'english_url': english_url, 'welsh_url': welsh_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies') } return render(request, 'institutions/institution_detail_page.html', context)
def manage_link(self): from courses.models import CourseManagePage bookmark_page = get_page_for_language(self.get_language(), CourseManagePage.objects.all()) if not bookmark_page: return '#' return bookmark_page.url
def test_get_page_for_language_returns_no_page_for_english_if_no_english_exists( self): pages = SearchLandingPage.objects.all() self.assertEquals(len(pages), 0) found_page = get_page_for_language(enums.languages.ENGLISH, SearchLandingPage.objects.all()) self.assertIsNone(found_page)
def test_get_page_for_language_returns_no_page_for_welsh_if_no_english_exists( self): pages = CourseFinderChooseCountry.objects.all() self.assertEquals(len(pages), 0) found_page = get_page_for_language( enums.languages.WELSH, CourseFinderChooseCountry.objects.all()) self.assertIsNone(found_page)
def courses_detail(request, institution_id, course_id, kis_mode, language=enums.languages.ENGLISH): course, error = Course.find(institution_id, course_id, kis_mode, language) if error: redirect_page = get_new_landing_page_for_language(language) # redirect_page = get_page_for_language(language, SearchLandingPage.objects.all()).url return redirect(redirect_page + '?load_error=true&error_type=0') page = get_page_for_language(language, CourseDetailPage.objects.all()) page.uni_site_links_header = page.uni_site_links_header.replace( '{{institution_name}}', course.institution.pub_ukprn_name) comparison_page = get_page_for_language(language, CourseComparisonPage.objects.all()) bookmark_page = get_page_for_language(language, CourseManagePage.objects.all()) if not page: return render(request, '404.html') if language == enums.languages.ENGLISH: translated_url = '/cy' + request.path if language == enums.languages.ENGLISH else request.path else: translated_url = request.path.replace('/cy/', '/') context = page.get_context(request) context.update({ 'page': page, 'course': course, 'comparison_link': comparison_page.url if comparison_page else '#', 'manage_link': bookmark_page.url if bookmark_page else '#', 'translated_url': translated_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies') }) return render(request, 'courses/course_detail_page.html', context)
def test_get_page_for_language_returns_english_page_if_it_exists(self): created_page = PageFactory.create_search_landing_page( 'English course finder') self.assertIsNotNone(created_page) found_page = get_page_for_language(enums.languages.ENGLISH, SearchLandingPage.objects.all()) self.assertIsNotNone(found_page) self.assertEquals(created_page.id, found_page.id)
def get_context(self, request): context = super(SearchLandingPage, self).get_context(request) context['search_url'] = self.get_search_url() context['course_finder_url'] = get_page_for_language( self.get_language(), CourseFinderChooseCountry.objects.all()).url context['institutions_list'] = InstitutionList.get_options()[ self.get_language()] return context
def test_get_page_for_language_returns_welsh_page_if_it_exists(self): welsh_root = PageFactory.create_search_landing_page('cy') created_page = PageFactory.create_country_finder_page( 'Welsh course finder', parent_page=welsh_root) self.assertIsNotNone(created_page) self.assertIsTrue('cy' in created_page.url) found_page = get_page_for_language( enums.languages.WELSH, CourseFinderChooseCountry.objects.all()) self.assertIsNotNone(found_page) self.assertEquals(created_page.id, found_page.id)
def test_get_page_for_language_returns_english_page_for_welsh_if_no_welsh_page_exists( self): created_page = PageFactory.create_country_finder_page( 'English course finder') self.assertIsNotNone(created_page) self.assertIsTrue('cy' not in created_page.url) pages = CourseFinderChooseCountry.objects.all() self.assertEquals(len(pages), 1) found_page = get_page_for_language( enums.languages.WELSH, CourseFinderChooseCountry.objects.all()) self.assertIsNotNone(found_page) self.assertEquals(created_page.id, found_page.id)
def nav_menu_render(request): url = request.get_full_path() language = get_language(url) search_page = get_page_for_language(language, HomePage.objects.all()) comparison_page = get_page_for_language(language, CourseComparisonPage.objects.all()) bookmark_page = get_page_for_language(language, CourseManagePage.objects.all()) brand_logo = { 'img': 'images/logos/nav_logo_english.svg', 'url': '/' } if language == enums.languages.ENGLISH else { 'img': 'images/logos/nav_logo_welsh.svg', 'url': '/cy/' } return { 'navigation': { 'brand_logo': brand_logo, 'primary_menu': get_menu(Menu, language, 'menu_items'), 'comp_menu': [ {'label': translations.term_for_key(key='search', language=language), 'img': static('images/search_icon.svg'), 'url': search_page.url if search_page else None, 'alt': 'Search Page'}, {'label': translations.term_for_key(key='compare', language=language), 'img': static('images/compare_icon.svg'), 'url': comparison_page.url if comparison_page else None, 'alt': 'Comparison'}, {'label': translations.term_for_key(key='saved', language=language), 'img': static('images/white-bookmark.svg'), 'url': bookmark_page.url if bookmark_page else None, 'alt': 'Saved', 'additional': True} ], 'footer_menu': get_menu(Footer, language, 'footer_items') } }
def compare_courses(request, language=enums.languages.ENGLISH): page = get_page_for_language(language, CourseComparisonPage.objects.all()) if not page: return render(request, '404.html') context = page.get_context(request) context.update( dict( page=page, cookies_accepted=request.COOKIES.get('discoverUniCookies'), )) return render(request, 'courses/course_comparison_page.html', context)
def compare_courses(request, language=enums.languages.ENGLISH): get_params = request.GET error1 = None error2 = None course1 = None course2 = None course1_params = get_params.get('course1').split(',') if 'course1' in get_params else None course2_params = get_params.get('course2').split(',') if 'course2' in get_params else None page = get_page_for_language(language, CourseComparisonPage.objects.all()) if course1_params: course1, error1 = Course.find(course1_params[0], course1_params[1], course1_params[2], language) if course2_params: course2, error2 = Course.find(course2_params[0], course2_params[1], course2_params[2], language) if error1 or error2: return render(request, '500.html') if not page: return render(request, '404.html') full_path = '%s?%s' % (request.path, request.environ.get('QUERY_STRING')) welsh_url = '/cy' + full_path if language == enums.languages.ENGLISH else full_path english_url = full_path.replace('/cy/', '/') context = { 'page': page, 'course1': course1, 'course2': course2, 'english_url': english_url, 'welsh_url': welsh_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies') } return render(request, 'courses/course_comparison_page.html', context)
def url_for_language(self): language = enums.languages.WELSH if self.is_english( ) else enums.languages.ENGLISH return self.translated_page.url if self.translated_page else get_page_for_language( language, self.__class__.objects.all()).url
def get_welsh_url(self): from home.models import HomePage if self.is_english(): return self.translated_page.url if self.translated_page \ else get_page_for_language(enums.languages.WELSH, HomePage.objects.all()).url return self.url
def back_page(self): from site_search.models import SearchLandingPage return get_page_for_language(self.get_language(), SearchLandingPage.objects.all())
def get_context(self, request): context = super(SearchLandingPage, self).get_context(request) context['search_url'] = self.get_search_url() context['course_finder_url'] = get_page_for_language( self.get_language(), CourseFinderChooseCountry.objects.all()).url return context
def course_finder_results(request, language=enums.languages.ENGLISH): query_params = request.POST filter_form = FilterForm(query_params) filters = build_filters(query_params) if "distance" in filters and "campus" not in filters: countries_query = '' else: countries_query = ','.join(query_params.getlist( 'countries_query')) if 'countries_query' in query_params else None institution_query = '@'.join(query_params.getlist( 'institution_query')) if 'institution_query' in query_params else None institution_array = institution_query.split( "@") if institution_query else None postcode = query_params.get( 'postcode') if 'postcode' in query_params else None distance_query = query_params.get( 'distance') if 'distance' in query_params else None postcode_query = (postcode + ',' + distance_query) if postcode and distance_query else {} sort_by_subject_enabled = query_params.get('sort_by_subject', 'false') sort_by_subject_limit = int(os.environ.get('SORT_BY_SUBJECT_LIMIT', 5000)) count = sort_by_subject_limit if sort_by_subject_enabled == 'true' else 20 course_finder_search = CourseFinderSearch( query_params.get('subject_query', None), institution_query, countries_query, postcode_query, filters, sort_by_subject_enabled, sort_by_subject_limit, query_params.get('course_query', None), query_params.get('page', 1), count, language) error = course_finder_search.execute() if error: redirect_page = get_new_landing_page_for_language(language) # redirect_page = get_page_for_language(language, SearchLandingPage.objects.all()).url return redirect(redirect_page + '?load_error=true&error_type=1') page = get_page_for_language(language, CourseFinderResults.objects.all()) comparison_page = get_page_for_language(language, CourseComparisonPage.objects.all()) bookmark_page = get_page_for_language(language, CourseManagePage.objects.all()) if language == enums.languages.ENGLISH: translated_url = '/cy' + request.path if language == enums.languages.ENGLISH else request.path else: translated_url = request.path.replace('/cy/', '/') if not page: return render(request, '404.html') context = page.get_context(request) context.update({ 'page': page, 'search': course_finder_search, 'pagination_url': 'course_finder_results', 'comparison_link': comparison_page.url if comparison_page else '#', 'manage_link': bookmark_page.url if bookmark_page else '#', 'translated_url': translated_url, 'cookies_accepted': request.COOKIES.get('discoverUniCookies'), 'filter_form': filter_form, 'filters': filters, 'postcode_query': postcode_query, 'sort_by_subject_enabled': sort_by_subject_enabled, 'sort_by_subject_limit': sort_by_subject_limit, 'institution_array': institution_array, 'search_info': { 'institutions': filter_form.institutions, 'number_options_selected': translations.term_for_key('number_options_selected', language), 'institution_name': translations.term_for_key('institution_name', language), 'select_all_results': translations.term_for_key('select_all_results', language), 'select_all_institutions': translations.term_for_key('select_all_institutions', language) } }) return render(request, 'coursefinder/course_finder_results.html', context)