Merge branch 'analytics' into 'v2.9.x'

Analytics Improvements

See merge request allianceauth/allianceauth!1340
This commit is contained in:
Ariel Rin 2021-10-17 09:26:11 +00:00
commit 7f3492f978
4 changed files with 42 additions and 3 deletions

View File

@ -4,6 +4,8 @@ from django.utils.deprecation import MiddlewareMixin
from .models import AnalyticsTokens, AnalyticsIdentifier from .models import AnalyticsTokens, AnalyticsIdentifier
from .tasks import send_ga_tracking_web_view from .tasks import send_ga_tracking_web_view
import re
class AnalyticsMiddleware(MiddlewareMixin): class AnalyticsMiddleware(MiddlewareMixin):
def process_response(self, request, response): def process_response(self, request, response):
@ -20,7 +22,13 @@ class AnalyticsMiddleware(MiddlewareMixin):
if token.send_page_views is False: if token.send_page_views is False:
continue continue
# Check Exclusions # Check Exclusions
if request.path in token.ignore_paths.all(): ignore = False
for ignore_path in token.ignore_paths.values():
ignore_path_regex = re.compile(ignore_path["ignore_path"])
if re.search(ignore_path_regex, request.path) is not None:
ignore = True
if ignore is True:
continue continue
tracking_id = token.token tracking_id = token.token

View File

@ -0,0 +1,31 @@
# Generated by Django 3.1.13 on 2021-10-15 05:02
from django.db import migrations
def modify_aa_team_token_add_page_ignore_paths(apps, schema_editor):
# We can't import the Person model directly as it may be a newer
# version than this migration expects. We use the historical version.
AnalyticsPath = apps.get_model('analytics', 'AnalyticsPath')
admin = AnalyticsPath.objects.create(ignore_path=r"^\/admin\/.*")
user_notifications_count = AnalyticsPath.objects.create(ignore_path=r"^\/user_notifications_count\/.*")
Tokens = apps.get_model('analytics', 'AnalyticsTokens')
token = Tokens.objects.get(token="UA-186249766-2")
token.ignore_paths.add(admin, user_notifications_count)
def undo_modify_aa_team_token_add_page_ignore_paths(apps, schema_editor):
# nothing should need to migrate away here?
return True
class Migration(migrations.Migration):
dependencies = [
('analytics', '0003_Generate_Identifier'),
]
operations = [migrations.RunPython(modify_aa_team_token_add_page_ignore_paths, undo_modify_aa_team_token_add_page_ignore_paths)
]

View File

@ -20,7 +20,7 @@ class AnalyticsIdentifier(models.Model):
class AnalyticsPath(models.Model): class AnalyticsPath(models.Model):
ignore_path = models.CharField(max_length=254, default="/example/") ignore_path = models.CharField(max_length=254, default="/example/", help_text="Regex Expression, If matched no Analytics Page View is sent")
class AnalyticsTokens(models.Model): class AnalyticsTokens(models.Model):

View File

@ -20,7 +20,7 @@ def process_failure_signal(
action = sender.__name__ action = sender.__name__
label = f"{exception.__class__.__name__}: {str(exception)}" label = f"{exception.__class__.__name__}"
analytics_event(category=category, analytics_event(category=category,
action=action, action=action,