Ejemplo n.º 1
0
    def handle_search_results_redirect(self, request):
        """
        Used on search result pages, this returns a redirect to the
        appropriate url if:
            1. helpers.determine_redirect() supplies a redirect.
               The redirect rules that function uses are defined
               in the determine_redirect function.
            2. There are no facet_counts (Redirect to home page).
            3. There are no featured jobs, no default jobs, and
               no query term applied. This means there are either
               no jobs for the site or a series of filters that
               should not be able to be applied were applied
               (Redirects to home page).

        If there is no redirect, returns None.
        """

        filters = context_tools.get_filters(request)
        query_string = context_tools.get_query_string(request)

        redirect_url = helpers.determine_redirect(request, filters)
        if redirect_url:
            return redirect_url

        jobs_and_counts = context_tools.get_jobs_and_counts(request)
        default_jobs = jobs_and_counts[0]
        featured_jobs = jobs_and_counts[2]
        facet_counts = jobs_and_counts[4]
        if not facet_counts:
            return redirect("/")
        if (len(default_jobs) == 0 and len(featured_jobs) == 0
                and not query_string):
            return redirect("/")

        return
Ejemplo n.º 2
0
    def render_cache_prefix(self, request):
        """
        Combines the current domain, the page, the current path,
        the current query string, all of the blocks for a page, all
        of the rows for a page, the current site configuration,
        and all business units for the current site into a
        single string and then hashes it.

        This can be used as a cache key for a Page. It will be change any
        time any block, row, page, or configuration is updated.

        """
        domain = None
        if request.user.is_authenticated() and request.user.is_staff:
            domain = request.REQUEST.get('domain')
        if domain is None:
            domain = request.get_host()

        page = '%s::%s' % (self.pk, self.updated)
        path = request.path
        query_string = context_tools.get_query_string(request)
        blocks = self.all_blocks()
        blocks = ["%s::%s" % (block.id, str(block.updated)) for block in
                  blocks]
        blocks = '#'.join(blocks)
        rows = self.rows.all()
        rows = ["%s::%s" % (row.id, str(row.updated)) for row in rows]
        rows = '#'.join(rows)
        config = context_tools.get_site_config(request)
        config = '%s::%s' % (config.pk, config.revision)
        buids = [str(buid) for buid in getattr(settings, 'SITE_BUIDS', [])]
        buids = '#'.join(buids)
        key = '###'.join([page, path, query_string, config, blocks, rows,
                          buids, domain]).encode('utf-8')
        return hashlib.sha1(key).hexdigest()
Ejemplo n.º 3
0
 def context(self, request, **kwargs):
     return {
         'arranged_jobs': context_tools.get_arranged_jobs(request),
         'results_heading': context_tools.get_results_heading(request),
         'default_jobs': context_tools.get_default_jobs(request),
         'featured_jobs': context_tools.get_featured_jobs(request),
         'location_term': context_tools.get_location_term(request),
         'moc_term': context_tools.get_moc_term(request),
         'query_string': context_tools.get_query_string(request),
         'title_term': context_tools.get_title_term(request),
     }
Ejemplo n.º 4
0
 def context(self, request, **kwargs):
     return {
         'arranged_jobs': context_tools.get_arranged_jobs(request),
         'results_heading': context_tools.get_results_heading(request),
         'default_jobs': context_tools.get_default_jobs(request),
         'featured_jobs': context_tools.get_featured_jobs(request),
         'location_term': context_tools.get_location_term(request),
         'moc_term': context_tools.get_moc_term(request),
         'query_string': context_tools.get_query_string(request),
         'title_term': context_tools.get_title_term(request),
     }
Ejemplo n.º 5
0
 def context(self, request, **kwargs):
     return {
         'arranged_jobs': context_tools.get_arranged_jobs(request),
         'data_type': '',
         'default_jobs': context_tools.get_default_jobs(request),
         'featured_jobs': context_tools.get_featured_jobs(request),
         'location_term': context_tools.get_location_term(request),
         'moc_term': context_tools.get_moc_term(request),
         'query_string': context_tools.get_query_string(request),
         'results_heading': context_tools.get_results_heading(request),
         'site_commitments_string': context_tools.get_site_commitments_string(request),
         'site_config': context_tools.get_site_config(request),
         'site_tags': settings.SITE_TAGS,
         'title_term': context_tools.get_title_term(request),
     }
Ejemplo n.º 6
0
 def context(self, request, **kwargs):
     site_buid_objects = BusinessUnit.objects.filter(
         id__in=settings.SITE_BUIDS)
     return {
         'arranged_jobs':
         context_tools.get_arranged_jobs(request),
         'data_type':
         '',
         'default_jobs':
         context_tools.get_default_jobs(request),
         'featured_jobs':
         context_tools.get_featured_jobs(request),
         'location_term':
         context_tools.get_location_term(request),
         'moc_term':
         context_tools.get_moc_term(request),
         'query_string':
         context_tools.get_query_string(request),
         'results_heading':
         context_tools.get_results_heading(request),
         'site_commitments_string':
         context_tools.get_site_commitments_string(request),
         'site_config':
         context_tools.get_site_config(request),
         'site_tags':
         settings.SITE_TAGS,
         'title_term':
         context_tools.get_title_term(request),
         'analytics_info':
         json.dumps({
             'site_business_units': ([bu.title
                                      for bu in site_buid_objects]),
             'default_facet_names':
             ([df.name for df in settings.DEFAULT_FACET]),
             'featured_facet_names':
             ([ff.name for ff in settings.FEATURED_FACET])
         })
     }
Ejemplo n.º 7
0
    def handle_search_results_redirect(self, request):
        """
        Used on search result pages, this returns a redirect to the
        appropriate url if:

        1.  helpers.determine_redirect() supplies a redirect.
            The redirect rules that function uses are defined
            in the determine_redirect function.
        2.  There are no facet_counts (Redirect to home page).
        3.  There are no featured jobs, no default jobs, and
            no query term applied. This means there are either
            no jobs for the site or a series of filters that
            should not be able to be applied were applied
            (Redirects to home page).

        If there is no redirect, returns None.

        """

        filters = context_tools.get_filters(request)
        query_string = context_tools.get_query_string(request)

        redirect_url = helpers.determine_redirect(request, filters)
        if redirect_url:
            return redirect_url

        jobs_and_counts = context_tools.get_jobs_and_counts(request)
        default_jobs = jobs_and_counts[0]
        featured_jobs = jobs_and_counts[2]
        facet_counts = jobs_and_counts[4]
        if not facet_counts:
            return redirect("/")
        if (len(default_jobs) == 0 and len(featured_jobs) == 0
                and not query_string):
            return redirect("/")

        return
Ejemplo n.º 8
0
 def context(self, request, **kwargs):
     site_buid_objects = BusinessUnit.objects.filter(id__in=settings.SITE_BUIDS)
     return {
         'arranged_jobs': context_tools.get_arranged_jobs(request),
         'data_type': '',
         'default_jobs': context_tools.get_default_jobs(request),
         'featured_jobs': context_tools.get_featured_jobs(request),
         'location_term': context_tools.get_location_term(request),
         'moc_term': context_tools.get_moc_term(request),
         'query_string': context_tools.get_query_string(request),
         'results_heading': context_tools.get_results_heading(request),
         'site_commitments_string': context_tools.get_site_commitments_string(request),
         'site_config': context_tools.get_site_config(request),
         'site_tags': settings.SITE_TAGS,
         'title_term': context_tools.get_title_term(request),
         'analytics_info': json.dumps({
             'site_business_units': ([bu.title for bu in
                                                 site_buid_objects]),
             'default_facet_names': ([df.name for df in
                                                 settings.DEFAULT_FACET]),
             'featured_facet_names': ([ff.name for ff in
                                                 settings.FEATURED_FACET])
         })
     }