def test_get_unit_chat_link(self):
        """
        Test that pages in the site get the correct ask a librarian 
        link to their corresoinding AskPage and chat widget. Eckhart 
        and SCRC are treated differently since they're circumstances
        are slightly different.
        """
        ask_widgets = set(['law', 'crerar', 'ssa', 'uofc-ask', 'dissertation-office'])

        # Dictionary of tuples where the keys map to the ask_widget_name field  
        # of AskPages. The firs item of the tuple is a mixed dictionary of 
        # location/hours/unit information and the second item of the tuple is 
        # a random url belonging to a page of a given section of the site.
        data = {
            'law': (get_hours_and_location(StandardPage.objects.get(id=DANGELO_HOMEPAGE)), '/law/services/carrelslockers/'),
            'crerar': (get_hours_and_location(StandardPage.objects.get(id=CRERAR_HOMEPAGE)), '/crerar/science-research-services/data-support-services/'),
            'ssa': (get_hours_and_location(StandardPage.objects.get(id=SSA_HOMEPAGE)), '/ssa/about/'),
            'uofc-ask': (get_hours_and_location(StandardPage.objects.get(id=PUBLIC_HOMEPAGE)), '/research/help/offcampus/'),
            'dissertation-office': (get_hours_and_location(StandardPage.objects.get(id=DISSERTATION_HOMEPAGE)), '/research/scholar/phd/students/'),
            'eck': (get_hours_and_location(StandardPage.objects.get(id=ECKHART_HOMEPAGE)), '/eck/mathematics-research-services/'),
            'scrc': (get_hours_and_location(StandardPage.objects.get(id=SCRC_HOMEPAGE)), '/scrc/visiting/'),
        }

        # Normal chat links to regular AskPages
        for item in ask_widgets:
            request = HttpRequest()
            request.path = data[item][1]
            current_site = Site.find_for_request(request)

            a = get_unit_chat_link(data[item][0]['page_unit'], request)
            b = AskPage.objects.filter(ask_widget_name=item).first().relative_url(current_site)

            self.assertEqual(a, b)

        # Eckhart
        request_eck = HttpRequest()
        request_eck.path = data['eck'][1]
        current_site = Site.find_for_request(request_eck)
        eckurl = get_unit_chat_link(data['eck'][0]['page_unit'], request_eck)
        eckask = AskPage.objects.get(id=4646).relative_url(current_site)
        self.assertEqual(eckurl, eckask)


        # SCRC
        request_scrc = HttpRequest()
        request_scrc.path = data['scrc'][1]
        current_site = Site.find_for_request(request_scrc)
        scrcurl = get_unit_chat_link(data['scrc'][0]['page_unit'], request_scrc)
        scrcask = PublicRawHTMLPage.objects.get(id=4127).relative_url(current_site)
        self.assertEqual(scrcurl, scrcask)
Exemple #2
0
def test_test(rf, site):
    request = HttpRequest()
    request.path = '/'
    request.META['HTTP_HOST'] = 'localhost'
    request.META['SERVER_PORT'] = 8000

    assert Site.find_for_request(request) == site
def scan(request):
    site = Site.find_for_request(request)
    broken_links = broken_link_scan(site)

    return render(request, 'wagtaillinkchecker/results.html', {
        'broken_links': broken_links,
    })
Exemple #4
0
    def get_context(self, request):
        context = super(HomePage, self).get_context(request)

        this_site = Site.find_for_request(request)

        all_articles = ArticlePage.objects.live().order_by('-datum')

        site_articles = [
            article for article in all_articles
            if article.get_site() == this_site
        ]

        paginator = Paginator(site_articles, 5)

        page = request.GET.get('page')
        try:
            articles = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            articles = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            articles = paginator.page(paginator.num_pages)

        context['articles'] = articles
        context['naechster_termin'] = Termin.get_next(request)
        context['sites'] = Site.objects.order_by('site_name').all()

        return context
    def get_context(self, request):
        context = super(ConferenceSubPage, self).get_context(request)
        current_site = Site.find_for_request(request)
        parent = self.get_parent_of_type('conference page')
        has_sidebar = parent.has_left_sidebar(context) or bool(main_reg)

        # Set social media fields dynamically and
        # get all the values from the parent page.
        # This doesn't seem like a good practice
        # How else can this be done?
        social_media_fields = [f.name for f in SocialMediaFields._meta.get_fields()]
        for field in social_media_fields:
            exec('self.' + field + ' = ' + 'parent.' + field)

        context['primary_branding_color'] = parent.primary_branding_color
        context['secondary_branding_color'] = parent.secondary_branding_color
        context['conference_logo'] = parent.conference_logo 
        context['conference_title'] = parent.title
        context['has_social_media'] = parent.has_social_media
        context['main_registration'] = parent.main_registration.all()
        context['sponsors'] = parent.sponsors.all()
        context['organizers'] = parent.organizers.all()
        context['secondary_registration'] = parent.sub_registration.all()
        context['secondary_registration_heading'] = parent.secondary_registration_heading
        context['secondary_registration_description'] = parent.secondary_registration_description
        context['home'] = parent.relative_url(current_site)
        return context
Exemple #6
0
 def test_valid_headers_route_to_specific_site(self):
     # requests with a known Host: header should be directed to the specific site
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.events_site.hostname
     request.META['SERVER_PORT'] = self.events_site.port
     self.assertEqual(Site.find_for_request(request), self.events_site)
Exemple #7
0
 def test_unrecognised_port_and_default_host_routes_to_default_site(self):
     # requests to the default host on an unrecognised port should be directed to the default site
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.default_site.hostname
     request.META['SERVER_PORT'] = self.unrecognised_port
     self.assertEqual(Site.find_for_request(request), self.default_site)
def settings(request):
    site = Site.find_for_request(request)
    instance = SitePreferences.objects.filter(site=site).first()
    form = SitePreferencesForm(instance=instance)
    form.instance.site = site
    EditHandler = get_edit_handler(SitePreferences)

    if request.method == "POST":
        instance = SitePreferences.objects.filter(site=site).first()
        form = SitePreferencesForm(request.POST, instance=instance)
        if form.is_valid():
            edit_handler = EditHandler(instance=SitePreferences, form=form)
            form.save()
            messages.success(request, _('Link checker settings have been updated.'))
            return redirect('wagtaillinkchecker_settings')
        else:
            messages.error(request, _('The form could not be saved due to validation errors'))
    else:
        form = SitePreferencesForm(instance=instance)
        edit_handler = EditHandler(instance=SitePreferences, form=form)

    return render(request, 'wagtaillinkchecker/settings.html', {
        'form': form,
        'edit_handler': edit_handler,
    })
Exemple #9
0
 def test_unrecognised_host_header_routes_to_default_site(self):
     # requests with an unrecognised Host: header should be directed to the default site
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.unrecognised_hostname
     request.META['SERVER_PORT'] = '80'
     self.assertEqual(Site.find_for_request(request), self.default_site)
Exemple #10
0
 def test_unrecognised_port_and_default_host_routes_to_default_site(self):
     # requests to the default host on an unrecognised port should be directed to the default site
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.default_site.hostname
     request.META['SERVER_PORT'] = self.unrecognised_port
     self.assertEqual(Site.find_for_request(request), self.default_site)
Exemple #11
0
 def test_port_in_http_host_header_is_ignored(self):
     # port in the HTTP_HOST header is ignored
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = "%s:%s" % (self.events_site.hostname, self.events_site.port)
     request.META['SERVER_PORT'] = self.alternate_port_events_site.port
     self.assertEqual(Site.find_for_request(request), self.alternate_port_events_site)
 def get_context(self, request):
     context = super(ConferenceSubPage, self).get_context(request)
     current_site = Site.find_for_request(request)
     context['banner_image'] = self.get_parent().conferencepage.banner_image
     context['branding_color'] = self.get_parent().conferencepage.branding_color
     context['conference_logo'] = self.get_parent().conferencepage.conference_logo 
     context['conference_title'] = self.get_parent().title
     context['conference_subtitle'] = self.get_parent().conferencepage.subtitle
     context['conference_tagline'] = self.get_parent().conferencepage.tagline
     context['has_social_media'] = self.get_parent().conferencepage.has_social_media
     context['main_registration'] = self.get_parent().conferencepage.main_registration.all()
     context['sponsors'] = self.get_parent().conferencepage.sponsors.all()
     context['organizers'] = self.get_parent().conferencepage.organizers.all()
     context['twitter_page'] = self.get_parent().conferencepage.twitter_page 
     context['facebook_page'] = self.get_parent().conferencepage.facebook_page
     context['hashtag_page'] = self.get_parent().conferencepage.hashtag_page
     context['hashtag'] = self.get_parent().conferencepage.hashtag
     context['instagram_page'] = self.get_parent().conferencepage.instagram_page
     context['youtube_page'] = self.get_parent().conferencepage.youtube_page
     context['blog_page'] = self.get_parent().conferencepage.blog_page
     context['tumblr_page'] = self.get_parent().conferencepage.tumblr_page
     context['snapchat_page'] = self.get_parent().conferencepage.snapchat_page
     context['secondary_registration'] = self.get_parent().conferencepage.sub_registration.all()
     context['secondary_registration_heading'] = self.get_parent().conferencepage.secondary_registration_heading
     context['secondary_registration_description'] = self.get_parent().conferencepage.secondary_registration_description
     context['home'] = self.get_parent().conferencepage.relative_url(current_site)
     return context
def live_preview(request):

    try:
        if u'/' == request.path:
            page = Site.find_for_request(request).root_page.specific
        else:
            logger.info("path: %s", '//'+request.path)
            page = Page.objects.get(url_path='//'+request.path).specific
    except Page.DoesNotExist:
        return {}

    content_file = os.path.join(settings.BOOTSTRAP_CONTENT_DIR, 'pages', request.path.strip('/') + '.yml')
    if not os.path.isfile(content_file):
        return {}

    content_attributes = load_attributes_from_file(content_file)

    try:
        del content_attributes['type']
    except KeyError:
        pass

    SiteNode.set_page_attributes(page, content_attributes, get_relation_mappings())

    return {'self': page}
Exemple #14
0
 def test_valid_headers_route_to_specific_site(self):
     # requests with a known Host: header should be directed to the specific site
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.events_site.hostname
     request.META['SERVER_PORT'] = self.events_site.port
     self.assertEqual(Site.find_for_request(request), self.events_site)
Exemple #15
0
 def get_context(self, request):
     context = super(ConferencePage, self).get_context(request)
     current_site = Site.find_for_request(request)
     main_reg = self.main_registration.all()
     has_sidebar = self.has_left_sidebar(context) or bool(main_reg)
     context['has_left_sidebar'] = has_sidebar
     context['content_div_css'] = self.get_conditional_css_classes(
         'content', has_sidebar)
     context['breadcrumb_div_css'] = self.get_conditional_css_classes(
         'breadcrumbs', has_sidebar)
     context['has_banner'] = self.has_conf_banner(current_site)
     context['primary_branding_color'] = self.primary_branding_color
     context['secondary_branding_color'] = self.secondary_branding_color
     context['conference_logo'] = self.conference_logo
     context['conference_title'] = self.title
     context['has_social_media'] = self.has_social_media
     context['main_registration'] = main_reg
     context['sponsors'] = self.sponsors.all()
     context['organizers'] = self.organizers.all()
     context['secondary_registration'] = self.sub_registration.all()
     context[
         'secondary_registration_heading'] = self.secondary_registration_heading
     context[
         'secondary_registration_description'] = self.secondary_registration_description
     context['home'] = self.relative_url(current_site)
     return context
 def test_port_in_http_host_header_is_ignored(self):
     # port in the HTTP_HOST header is ignored
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = "%s:%s" % (self.events_site.hostname, self.events_site.port)
     request.META['SERVER_PORT'] = self.alternate_port_events_site.port
     self.assertEqual(Site.find_for_request(request), self.alternate_port_events_site)
Exemple #17
0
    def get_context(self, request):
        context = super(ConferenceSubPage, self).get_context(request)
        current_site = Site.find_for_request(request)
        parent = self.get_parent_of_type('conference page')
        main_reg = parent.main_registration.all()
        has_sidebar = parent.has_left_sidebar(context) or bool(main_reg)

        # Set social media fields dynamically and
        # get all the values from the parent page.
        # This doesn't seem like a good practice
        # How else can this be done?
        social_media_fields = [
            f.name for f in SocialMediaFields._meta.get_fields()
        ]
        for field in social_media_fields:
            exec('self.' + field + ' = ' + 'parent.' + field)

        context['primary_branding_color'] = parent.primary_branding_color
        context['secondary_branding_color'] = parent.secondary_branding_color
        context['conference_logo'] = parent.conference_logo
        context['conference_title'] = parent.title
        context['has_social_media'] = parent.has_social_media
        context['main_registration'] = parent.main_registration.all()
        context['sponsors'] = parent.sponsors.all()
        context['organizers'] = parent.organizers.all()
        context['secondary_registration'] = parent.sub_registration.all()
        context[
            'secondary_registration_heading'] = parent.secondary_registration_heading
        context[
            'secondary_registration_description'] = parent.secondary_registration_description
        context['home'] = parent.relative_url(current_site)
        return context
Exemple #18
0
 def test_with_server_name(self):
     request = HttpRequest()
     request.META = {
         'SERVER_NAME': 'example.com',
         'SERVER_PORT': 80
     }
     self.assertEqual(Site.find_for_request(request), self.site)
Exemple #19
0
 def test_unrecognised_host_header_routes_to_default_site(self):
     # requests with an unrecognised Host: header should be directed to the default site
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.unrecognised_hostname
     request.META['SERVER_PORT'] = '80'
     self.assertEqual(Site.find_for_request(request), self.default_site)
Exemple #20
0
    def get_context(self, request):
        this_site = Site.find_for_request(request)
        context = super(ArticlesIndexPage, self).get_context(request)

        all_articles = ArticlePage.objects.live().order_by(
            '-first_published_at')

        site_articles = [
            article for article in all_articles
            if article.get_site() == this_site
        ]

        paginator = Paginator(site_articles, 20)

        page = request.GET.get('page')
        try:
            articles = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            articles = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            articles = paginator.page(paginator.num_pages)

        context['articles'] = articles

        return context
 def test_ports_in_request_headers_are_respected(self):
     # ports in the Host: header should be respected
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.alternate_port_events_site.hostname
     request.META['SERVER_PORT'] = self.alternate_port_events_site.port
     self.assertEqual(Site.find_for_request(request), self.alternate_port_events_site)
Exemple #22
0
 def test_ports_in_request_headers_are_respected(self):
     # ports in the Host: header should be respected
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.alternate_port_events_site.hostname
     request.META['SERVER_PORT'] = self.alternate_port_events_site.port
     self.assertEqual(Site.find_for_request(request), self.alternate_port_events_site)
Exemple #23
0
 def test_unrecognised_port_on_known_hostname_routes_there_if_no_ambiguity(self):
     # requests on an unrecognised port should be directed to the site with
     # matching hostname if there is no ambiguity
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.about_site.hostname
     request.META['SERVER_PORT'] = self.unrecognised_port
     self.assertEqual(Site.find_for_request(request), self.about_site)
Exemple #24
0
    def setUp(self):
        self.home_page = Page.objects.get(id=2)
        self.routable_page = self.home_page.add_child(instance=RoutablePageTest(title="Routable Page", live=True))

        self.rf = RequestFactory()
        self.request = self.rf.get(self.routable_page.url)
        self.request.site = Site.find_for_request(self.request)
        self.context = {"request": self.request}
Exemple #25
0
 def __call__(self, request, *args, **kwargs):
     self.request = request
     self.site = Site.find_for_request(self.request)
     self.identity = IdentitySettings.for_site(self.site)
     self.meta = Metadata(request=request,
                          site=self.site,
                          page=kwargs.get('page', None))
     return super().__call__(request, *args, **kwargs)
 def test_unrecognised_port_on_known_hostname_routes_there_if_no_ambiguity(self):
     # requests on an unrecognised port should be directed to the site with
     # matching hostname if there is no ambiguity
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.about_site.hostname
     request.META['SERVER_PORT'] = self.unrecognised_port
     self.assertEqual(Site.find_for_request(request), self.about_site)
Exemple #27
0
    def test_tag(self):
        factory = RequestFactory()

        request = factory.get('/home/blog/tag/news/')
        request.site = Site.find_for_request(request)
        request.user = User.objects.create_user(username='******')

        response = self.bip.tag(request)
        self.assertEqual(200, response.status_code)
Exemple #28
0
    def test_get(self, rf, languages, sites):
        site = sites.get(hostname='es.localhost')

        request = HttpRequest()
        request.path = '/'
        request.META['HTTP_HOST'] = 'es.localhost'
        request.META['SERVER_PORT'] = 8000

        assert Site.find_for_request(request) == site
Exemple #29
0
    def get_context(self, request):
        context = super(FotoalbumIndexPage, self).get_context(request)
        this_site = Site.find_for_request(request)

        tags = FotoalbumTag.objects.all()

        context['tags'] = tags

        return context
Exemple #30
0
    def test_tag(self):
        factory = RequestFactory()

        request = factory.get('/home/blog/tag/news/')
        request.site = Site.find_for_request(request)
        request.user = User.objects.create_user(username='******')

        response = self.bip.tag(request)
        self.assertEqual(200, response.status_code)
Exemple #31
0
 def item_enclosure_url(self, item):
     if not getattr(item.featured_image, 'file', None):
         url = item.featured_image
     else:
         url = item.featured_image.file.url
         url = "{0}://{1}{2}".format(
             "http" + ("s" if self.request.is_secure() else ""),
             Site.find_for_request(self.request).hostname, url)
     return url
 def test_unrecognised_port_on_known_hostname_routes_to_default_site_if_ambiguity(self):
     # requests on an unrecognised port should be directed to the default
     # site, even if their hostname (but not port) matches more than one
     # other entry
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.events_site.hostname
     request.META['SERVER_PORT'] = self.unrecognised_port
     self.assertEqual(Site.find_for_request(request), self.default_site)
 def process_request(self, request):
     """
     Set request.site to contain the Site object responsible for handling this request,
     according to hostname matching rules
     """
     try:
         request.site = Site.find_for_request(request)
     except Site.DoesNotExist:
         request.site = None
Exemple #34
0
 def process_request(self, request):
     """
     Set request.site to contain the Site object responsible for handling this request,
     according to hostname matching rules
     """
     try:
         request.site = Site.find_for_request(request)
     except Site.DoesNotExist:
         request.site = None
def run_scan(request):
    site = Site.find_for_request(request)
    celery_status = get_celery_worker_status()
    if 'ERROR' not in celery_status:
        broken_link_scan(site)
    else:
        messages.warning(request, _('No celery workers are running, the scan was not conducted.'))

    return redirect('wagtaillinkchecker')
Exemple #36
0
 def test_unrecognised_port_on_known_hostname_routes_to_default_site_if_ambiguity(self):
     # requests on an unrecognised port should be directed to the default
     # site, even if their hostname (but not port) matches more than one
     # other entry
     request = HttpRequest()
     request.path = '/'
     request.META['HTTP_HOST'] = self.events_site.hostname
     request.META['SERVER_PORT'] = self.unrecognised_port
     self.assertEqual(Site.find_for_request(request), self.default_site)
Exemple #37
0
    def setUp(self):
        self.home_page = Page.objects.get(id=2)
        self.routable_page = self.home_page.add_child(instance=RoutablePageTest(
            title="Routable Page",
            live=True,
        ))

        self.rf = RequestFactory()
        self.request = self.rf.get(self.routable_page.url)
        self.request.site = Site.find_for_request(self.request)
        self.context = {'request': self.request}
Exemple #38
0
 def item_enclosure_url(self, item):
     if not getattr(item.featured_image, 'file', None):
         url = item.featured_image
     else:
         url = item.featured_image.file.url
         url = "{0}://{1}{2}".format(
             "http" + ("s" if self.request.is_secure() else ""),
             Site.find_for_request(self.request).hostname,
             url
         )
     return url
Exemple #39
0
def site_navigation( context ):
    sites = Site.objects.all().order_by('site_name')
    current = Site.find_for_request( context['request'] )
    sites_info = [{
        'active' : site == current,
        'name' : site.root_page.title,
        'root' : site.root_page,
    } for site in sites ]
    return{
        'sites' : sorted(sites_info, key=lambda site: site['name']) 
    }
Exemple #40
0
 def get_next(request):
     this_site = Site.find_for_request(request)
     alle_termine = Termin.objects.live().filter(
         datum__gte=datetime.datetime.now()).order_by('datum')
     termine = [
         termin for termin in alle_termine if termin.get_site() == this_site
     ]
     try:
         return termine[0]
     except IndexError:
         return []
    def process_request(self, request):
        """
        Overrides django settings based on request
        """
        base_url = urlunsplit((request.scheme, request.get_host(), '', '', ''))
        settings.BASE_URL = base_url

        try:
            site = Site.find_for_request(request)
            settings.WAGTAILADMIN_NOTIFICATION_FROM_EMAIL = site.siteconfiguration.from_email
        except ObjectDoesNotExist:
            pass
Exemple #42
0
    def test_find_site_for_request(self):
        default_site = Site.objects.get(is_default_site=True)
        events_page = Page.objects.get(url_path='/home/events/')
        events_site = Site.objects.create(hostname='events.example.com', root_page=events_page)

        # requests without a Host: header should be directed to the default site
        request = HttpRequest()
        request.path = '/'
        self.assertEqual(Site.find_for_request(request), default_site)

        # requests with a known Host: header should be directed to the specific site
        request = HttpRequest()
        request.path = '/'
        request.META['HTTP_HOST'] = 'events.example.com'
        self.assertEqual(Site.find_for_request(request), events_site)

        # requests with an unrecognised Host: header should be directed to the default site
        request = HttpRequest()
        request.path = '/'
        request.META['HTTP_HOST'] = 'unknown.example.com'
        self.assertEqual(Site.find_for_request(request), default_site)
Exemple #43
0
    def setUp(self):
        self.home_page = Page.objects.get(id=2)
        self.routable_page = self.home_page.add_child(instance=NewStyleRoutablePageTest(
            title="Routable Page",
            slug='routable-page',
            live=True,
        ))

        self.rf = RequestFactory()
        self.request = self.rf.get(self.routable_page.url)
        self.request.site = Site.find_for_request(self.request)
        self.context = {'request': self.request}
def flag_enabled(request, key):
    site = Site.find_for_request(request)

    try:
        return site.flag_states.get(flag_id=key).enabled
    except ObjectDoesNotExist:
        pass

    try:
        return Flag.objects.get(key=key).enabled_by_default
    except ObjectDoesNotExist:
        return False
def index(request):
    site = Site.find_for_request(request)
    scans = Scan.objects.filter(site=site).order_by('-scan_started')

    paginator, page = paginate(
        request,
        scans,
        per_page=8)

    return render(request, 'wagtaillinkchecker/index.html', {
        'page': page,
        'paginator': paginator,
        'scans': scans
    })
def index(request):
    instance = SitePreferences.objects.filter(site=Site.find_for_request(request)).first()
    form = SitePreferencesForm(instance=instance)
    EditHandler = get_edit_handler(SitePreferences)

    if request.method == "POST":
        instance = SitePreferences.objects.filter(site=Site.find_for_request(request)).first()
        form = SitePreferencesForm(request.POST, instance=instance)
        if form.is_valid():
            edit_handler = EditHandler(instance=SitePreferences, form=form)
            form.save()
            messages.success(request, 'The form has been successfully saved.')
            return redirect('wagtaillinkchecker')
        else:
            messages.error(request, 'The form could not be saved due to validation errors')
    else:
        form = SitePreferencesForm(instance=instance)
        edit_handler = EditHandler(instance=SitePreferences, form=form)

    return render(request, 'wagtaillinkchecker/index.html', {
        'form': form,
        'edit_handler': edit_handler,
    })
Exemple #47
0
    def process_request(self, request):
        # Connection needs first to be at the public schema, as this is where
        # the tenant metadata is stored.
        connection.set_schema_to_public()

        host = request.get_host()
        hostname = remove_www(host.split(':')[0])
        subdomain = None
        for allowed in settings.GEOKIT_HOSTS:
            if hostname == allowed:
                break
            elif hostname.endswith(allowed):
                parts = hostname.split('.', 1)
                if parts[1] == allowed:
                    subdomain = parts[0]
                    break

        TenantModel = get_tenant_model()

        if subdomain is None:
            subdomain = 'public'
            request.urlconf = settings.PUBLIC_SCHEMA_URLCONF
            request.tenant = None
            return

        try:
            request.tenant = TenantModel.objects.get(schema_name=subdomain)
            if request.tenant.status == 'disabled':
                raise TenantModel.DoesNotExist
            connection.set_tenant(request.tenant)
        except TenantModel.DoesNotExist:
            raise self.TENANT_NOT_FOUND_EXCEPTION('No tenant for name "%s"' %
                                                  subdomain)

        # Fix ignore wagtail sites
        try:
            from wagtail.wagtailcore.models import Site
            site = Site.find_for_request(request)
            request.site = site
        except Site.DoesNotExist:
            request.site = None

        # Content type can no longer be cached as public and tenant schemas
        # have different models. If someone wants to change this, the cache
        # needs to be separated between public and shared schemas. If this
        # cache isn't cleared, this can cause permission problems. For example,
        # on public, a particular model has id 14, but on the tenants it has
        # the id 15. if 14 is cached instead of 15, the permissions for the
        # wrong model will be fetched.
        ContentType.objects.clear_cache()
def flag_enabled(key):
    request = get_request()
    site = Site.find_for_request(request)
    state_for_site = site.flagstate_set.filter(flag_id=key, \
            ).first()
    if state_for_site is not None:
        return state_for_site.enabled

    else:
        try:
            flag = Flag.objects.get(pk=key)
            return flag.enabled_by_default
        except ObjectDoesNotExist:
            return False
def flag_enabled(key):
    request = get_request()
    site = Site.find_for_request(request)
    state_for_site = site.flagstate_set.filter(flag_id=key, \
            ).first()
    if state_for_site is not None:
        return state_for_site.enabled

    else:
        try:
            flag = Flag.objects.get(pk=key)
            return flag.enabled_by_default
        except ObjectDoesNotExist:
            return False
    def get_context(self, request):
        context = super(BasePageWithoutStaffPageForeignKeys, self).get_context(request)

        context['breadcrumbs'] = get_breadcrumbs(self)

        context['sidebartitle'] = 'Browse this Section'
        if self.specific_class.get_verbose_name() == 'Intranet Units Page':
            for p in list(reversed(self.get_ancestors(True))):
                try:
                    if p.specific.start_sidebar_from_here:
                        context['sidebartitle'] = p.title
                        break
                except:
                    pass
                
        # JEJ- fix this later to remove logic from the template.
        current_site = Site.find_for_request(request)
        sidebar = [] 
        if self.show_sidebar:
            ancestors = self.get_ancestors(True).specific()
            a = len(ancestors) - 1
            while a > 0:
                sidebar_parent = ancestors[a]
                if sidebar_parent.start_sidebar_from_here:
                    break
                a = a - 1

            children = sidebar_parent.get_children().in_menu().live().specific()
            for child in children:
                new_child = {
                    'title': child.title,
                    'url': child.relative_url(current_site),
                    'children': []
                }
                grandchildren = child.get_children().in_menu().live().specific()
                for grandchild in grandchildren:
                    new_child['children'].append({
                        'title': grandchild.title,
                        'url': grandchild.relative_url(current_site),
                        'children': [],
                    })

                sidebar.append(new_child)
        context['sidebar'] = sidebar
        
        return context
    def get_hours_page(self, request):
        """
        Get a link to the hours page from the ID set
        in the base config file.

        Args:
            request, object

        Return:
            String, url. 
        """
        try:
            current_site = Site.find_for_request(request)
            return Page.objects.get(id=HOURS_PAGE).relative_url(current_site)
        except(IndexError) as e:
            msg = 'HOURS_PAGE in settings.base is configured incorrectly. \
Either it is set to the ID of a non-existing page or it has an incorrect value.'
            raise IndexError(msg)
Exemple #52
0
    def get_context(self, request):
        """
        Override the page object's get context method.
        """
        context = super(StandardPage, self).get_context(request)
        current_site = Site.find_for_request(request) 
        has_featured_lib_expert = self.get_featured_lib_expert()[0]

        if has_featured_lib_expert:
            lib_expert_block = self.unpack_lib_expert_block(self.get_featured_lib_expert()[1], current_site)
            context['has_featured_lib_expert'] = has_featured_lib_expert
            context['featured_lib_expert'] = self.get_featured_lib_expert()[1]
            context['featured_lib_expert_name'] = lib_expert_block['person'] 
            context['featured_lib_expert_image'] = lib_expert_block['image']
            context['featured_lib_expert_profile'] = lib_expert_block['profile'] 
            context['featured_lib_expert_links'] = lib_expert_block['links']

        context['has_search_widget'] = self.enable_search_widget

        return context
    def get_context(self, request):
        """
        Override the page object's get context method.
        """
        context = super(StandardPage, self).get_context(request)
        current_site = Site.find_for_request(request) 
        has_featured_lib_expert = self.get_featured_lib_expert()[0]

        if has_featured_lib_expert:
            lib_expert_block = self.unpack_lib_expert_block(self.get_featured_lib_expert()[1], current_site)
            context['has_featured_lib_expert'] = has_featured_lib_expert
            context['featured_lib_expert'] = self.get_featured_lib_expert()[1]
            context['featured_lib_expert_name'] = lib_expert_block['person'] 
            context['featured_lib_expert_image'] = lib_expert_block['image']
            context['featured_lib_expert_profile'] = lib_expert_block['profile'] 
            context['featured_lib_expert_links'] = lib_expert_block['links']

        context['has_search_widget'] = self.enable_search_widget

        return context
 def get_context(self, request):
     context = super(ConferencePage, self).get_context(request)
     current_site = Site.find_for_request(request)
     main_reg = self.main_registration.all()
     has_sidebar = self.has_left_sidebar(context) or bool(main_reg)
     context['has_left_sidebar'] = has_sidebar
     context['content_div_css'] = self.get_conditional_css_classes('content', has_sidebar)
     context['breadcrumb_div_css'] = self.get_conditional_css_classes('breadcrumbs', has_sidebar)
     context['has_banner'] = self.has_conf_banner(current_site)
     context['primary_branding_color'] = self.primary_branding_color
     context['secondary_branding_color'] = self.secondary_branding_color
     context['conference_logo'] = self.conference_logo
     context['conference_title'] = self.title
     context['has_social_media'] = self.has_social_media
     context['main_registration'] = main_reg
     context['sponsors'] = self.sponsors.all()
     context['organizers'] = self.organizers.all()
     context['secondary_registration'] = self.sub_registration.all()
     context['secondary_registration_heading'] = self.secondary_registration_heading
     context['secondary_registration_description'] = self.secondary_registration_description
     context['home'] = self.relative_url(current_site)
     return context
    def get_related_collections(self, request):
        """
        Get the related collections for a web exhibit.
    
        Args:
            request: object

        Returns:
            A list of tuples where the first item in 
            the tuple is a collection title and the
            second item is a url. If no related 
            collections are found, returns None.
        """
        current_site = Site.find_for_request(request)
        collections = self.exhibit_page_related_collection_placement.all() 
        related_collections = '<ul>'
        if collections:
            for collection in collections:
                if collection.related_collection:
                    related_collections += '<li><a href="' + collection.related_collection.relative_url(current_site) + '">' + collection.related_collection.title + '</a></li>'
            return related_collections + '</ul>'
        return None
def json_hours(request):
    """
    View for rendering hours as json. 
    """
    current_site = Site.find_for_request(request)
    if request.method == 'GET':
        if request.GET.get('fallback'):
            fallback = request.GET['fallback']
            return JsonResponse(
                {
                    'llid': get_default_unit().location.libcal_library_id,
                }
            )
        else:
            libcalid = request.GET['libcalid']
            all_building_hours = json.dumps(get_building_hours_and_lid(current_site))
            return JsonResponse(
                {
                    'all_building_hours': all_building_hours,
                    'current_hours': get_json_hours_by_id(int(libcalid), all_building_hours),
                    'llid': libcalid,
                    'llid_fallback': get_default_unit().location.libcal_library_id,
                }
            )
Exemple #57
0
def get_unit_chat_link(unit, request):
    """
    Get a link to the Ask a Librarian page
    that corresponds to a given UnitPage.

    Args:
        unit: page object.

        request: object

    Returns:
        string, url. Returns an empty string 
        upon failure.
    """
    from .models import AskPage
    from wagtail.wagtailcore.models import Page
    current_site = Site.find_for_request(request)

    try:
        if unit.id == SCRC_MAIN_UNIT:
            return Page.objects.live().get(id=SCRC_ASK_PAGE).relative_url(current_site)    
        return AskPage.objects.live().get(unit=unit).relative_url(current_site)
    except:
        return AskPage.objects.live().get(unit=DEFAULT_UNIT).relative_url(current_site)
Exemple #58
0
 def dispatch(self, request, *args, **kwargs):
     site = Site.find_for_request(request)
     return redirect(
         self.model_admin.url_helper.get_action_url('edit', site.pk))
Exemple #59
0
 def test_no_host_header_routes_to_default_site(self):
     # requests without a Host: header should be directed to the default site
     request = HttpRequest()
     request.path = '/'
     self.assertEqual(Site.find_for_request(request), self.default_site)