Пример #1
0
    def handle(self, *args, **options):
        dry_run = options['dry_run']
        creds_path = get_creds_path()

        key_file_location = os.path.join(creds_path,
                                         'open-canada-analytics.p12')

        if not os.path.isfile(key_file_location):
            raise ImproperlyConfigured(
                '{} must be a file which contains your api key.'.format(
                    key_file_location))

        scopes = ['https://www.googleapis.com/auth/analytics.readonly']
        service_account_email = get_service_account_email()

        service = utils.get_service('analytics', 'v3', scopes,
                                    key_file_location, service_account_email)

        profile = utils.get_first_profile_id(service)

        days = options['days']
        start_time = now() - datetime.timedelta(days)
        start_date = start_time.strftime('%Y-%m-%d')

        data = service.data().ga().get(
            ids='ga:' + profile,
            start_date=start_date,
            end_date='today',
            dimensions='ga:pagePath',
            metrics='ga:sessions',
            sort='-ga:sessions',
            filters='ga:sessions>=1',
        ).execute()

        if dry_run:
            for row in data['rows']:
                url, session = row
                print('{}: {}'.format(url, session))
            sys.exit(0)

        with transaction.atomic():
            pages = dict([(page.url, page) for page in Page.objects.live()])
            utils.reset_analytics(pages)
            for row in data['rows']:
                url, sessions = row
                if url not in pages:
                    continue

                page = pages[url]

                analytics = utils.get_analytics(page)
                analytics.last_period_views = sessions
                analytics.save()

        purge_url_from_cache(settings.BASE_URL + 'most-popular/')
        for page in HomePage.objects.live():
            purge_page_from_cache(page)
Пример #2
0
def invalidate_frontend_cache_for_blog_index_page(sender, instance, **kwargs):
    """Invalidate the frontend cache for the parent BlogIndexPage of a
    BlogPost."""
    blog_post = instance
    # Recommended way to get parent page from
    # https://github.com/wagtail/wagtail/issues/2779#issuecomment-228472829
    blog_index_page = blog_post.get_parent()
    if blog_index_page:
        purge_page_from_cache(blog_index_page)
Пример #3
0
    def handle(self, *args, **options):
        dry_run = options['dry_run']
        creds_path = get_creds_path()

        key_file_location = os.path.join(creds_path, 'open-canada-analytics.p12')

        if not os.path.isfile(key_file_location):
            raise ImproperlyConfigured(
                '{} must be a file which contains your api key.'.format(key_file_location)
            )

        scopes = ['https://www.googleapis.com/auth/analytics.readonly']
        service_account_email = get_service_account_email()

        service = utils.get_service(
            'analytics',
            'v3',
            scopes,
            key_file_location,
            service_account_email
        )

        profile = utils.get_first_profile_id(service)

        days = options['days']
        start_time = now() - datetime.timedelta(days)
        start_date = start_time.strftime('%Y-%m-%d')

        data = service.data().ga().get(
            ids='ga:' + profile,
            start_date=start_date,
            end_date='today',
            dimensions='ga:pagePath',
            metrics='ga:sessions',
            sort='-ga:sessions',
            filters='ga:sessions>=1',
        ).execute()

        if dry_run:
            for row in data['rows']:
                url, session = row
                print('{}: {}'.format(url, session))
            sys.exit(0)

        with transaction.atomic():
            pages = dict([(page.url, page) for page in Page.objects.live()])
            utils.reset_analytics(pages)
            for row in data['rows']:
                url, sessions = row
                if url not in pages:
                    continue

                page = pages[url]

                analytics = utils.get_analytics(page)
                analytics.last_period_views = sessions
                analytics.save()

        purge_url_from_cache(settings.BASE_URL + 'most-popular/')
        for page in HomePage.objects.live():
            purge_page_from_cache(page)
Пример #4
0
def page_published_signal_handler(instance, **kwargs):
    purge_page_from_cache(instance)
Пример #5
0
def page_published_signal_handler(instance, **kwargs):
    purge_page_from_cache(instance)