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)
def purge(request): if request.method == "POST": form = PurgePathForm(request.POST) if form.is_valid(): URL = form.cleaned_data["URL"] purge_url_from_cache(URL) messages.success(request, _("Purge request submitted for %s") % URL) return redirect("purge") else: form = PurgePathForm() return render( request, "index.html", { "form": form, }, )
def invalidate_frontend_cache_for_site(sender, instance, **kwargs): # Purge site-specific score breakdown page purge_url_from_cache(reverse(instance.site)) # Purge the leaderboard purge_url_from_cache(reverse('sites:index')) # Purge the home page because it displays a subset of # the leaderboard, as well as some summary statistics. purge_url_from_cache('/')
def purge_document_from_cache(instance, **kwargs): if not kwargs.get('created', False): base_url = get_base_url() purge_url_from_cache(base_url + reverse('wagtailapi_v2:documents:detail', args=(instance.id, )))
def purge_page_from_cache(instance, **kwargs): base_url = get_base_url() purge_url_from_cache(base_url + reverse('wagtailapi_v2:pages:detail', args=(instance.id, )))
def purge_cache_on_all_sites(path): if settings.DEBUG: return for site in Site.objects.all(): purge_url_from_cache("%s%s" % (site.root_url.rstrip("/"), path))
def handle(self, *args, **options): page_url = options['url'] purge_url_from_cache(page_url)
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)
def purge_cache_on_all_sites(path): if settings.DEBUG: return for site in Site.objects.all(): purge_url_from_cache('%s%s' % (site.root_url.rstrip('/'), path))
def purge_image_from_cache(instance, **kwargs): if not kwargs.get("created", False): base_url = get_base_url() purge_url_from_cache( base_url + reverse("wagtailapi_v2:images:detail", args=(instance.id, )))