Skip to content

Commit 3ef7861

Browse files
author
Jasper Berghoef
committed
Use settings module
1 parent bbe0d4a commit 3ef7861

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

src/wagtail_personalisation/models.py

+33-28
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ class SegmentVisit(models.Model):
172172
max_length=64, editable=False, null=True, db_index=True)
173173
visit_date = models.DateTimeField(auto_now_add=True)
174174

175+
class Meta:
176+
ordering = ['-visit_date']
177+
175178
@classmethod
176179
def create_segment_visit(cls, page, request, metadata=None):
177180
"""Create a segment visit object.
@@ -185,37 +188,39 @@ def create_segment_visit(cls, page, request, metadata=None):
185188
:rtype: wagtail_personalisation.models.SegmentVisit
186189
"""
187190
from wagtail_personalisation.adapters import get_segment_adapter
191+
wxp_settings = PersonalisationSettings.for_site(request.site)
192+
193+
if wxp_settings.detailed_visits:
194+
adapter = get_segment_adapter(request)
195+
user_segments = adapter.get_segments()
196+
197+
if not metadata:
198+
metadata = page.personalisation_metadata
199+
metadata = metadata.metadata_for_segments(user_segments)
200+
201+
user = request.user if request.user.is_authenticated else None
202+
visit = cls.objects.create(
203+
user=user,
204+
page=page,
205+
served_segment=metadata.first().segment,
206+
served_variant=metadata.first().variant,
207+
session=request.session.session_key
208+
)
188209

189-
adapter = get_segment_adapter(request)
190-
user_segments = adapter.get_segments()
191-
192-
if not metadata:
193-
metadata = page.personalisation_metadata
194-
metadata = metadata.metadata_for_segments(user_segments)
195-
196-
user = request.user if request.user.is_authenticated() else None
197-
visit = cls.objects.create(
198-
user=user,
199-
page=page,
200-
served_segment=metadata.first().segment,
201-
served_variant=metadata.first().variant,
202-
session=request.session.session_key
203-
)
210+
for segment in user_segments:
211+
rules = [
212+
rule for rule in segment.get_rules() if rule.unique_encoded_name
213+
in request.matched_rules
214+
]
204215

205-
for segment in user_segments:
206-
rules = [
207-
rule for rule in segment.get_rules() if rule.unique_encoded_name
208-
in request.matched_rules
209-
]
210-
211-
SegmentVisitMetadata.objects.create(
212-
visit=visit,
213-
segment=segment,
214-
matched_rules=','.join(
215-
rule.unique_encoded_name for rule in rules)
216-
)
216+
SegmentVisitMetadata.objects.create(
217+
visit=visit,
218+
segment=segment,
219+
matched_rules=','.join(
220+
rule.unique_encoded_name for rule in rules)
221+
)
217222

218-
return visit
223+
return visit
219224

220225
@classmethod
221226
def reverse_match(cls, user):

0 commit comments

Comments
 (0)