예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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')
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
 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
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
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)
예제 #12
0
    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)
예제 #13
0
    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
예제 #14
0
    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)
예제 #15
0
    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')
        }
    }
예제 #17
0
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)
예제 #18
0
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)
예제 #19
0
 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
예제 #20
0
 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
예제 #21
0
 def back_page(self):
     from site_search.models import SearchLandingPage
     return get_page_for_language(self.get_language(),
                                  SearchLandingPage.objects.all())
예제 #22
0
 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
예제 #23
0
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)