Skip to content

Commit 9705947

Browse files
committed
Use the Segment Adapter for retrieving page visits
This fixes the last occurence of directly accessing the session in the codebase
1 parent 31f8a32 commit 9705947

2 files changed

Lines changed: 13 additions & 15 deletions

File tree

src/wagtail_personalisation/adapters.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,15 @@ def add_page_visit(self, page):
144144
'count': 1,
145145
})
146146

147+
def get_visit_count(self, page=None):
148+
"""Return the number of visits on the current request or given page"""
149+
path = page.path if page else self.request.path
150+
visit_count = self.request.session.setdefault('visit_count', [])
151+
for visit in visit_count:
152+
if visit['path'] == path:
153+
return visit['count']
154+
return 0
155+
147156
def update_visit_count(self):
148157
"""Update the visit count for all segments in the request session."""
149158
segments = self.request.session['segments']

src/wagtail_personalisation/rules.py

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -226,23 +226,12 @@ def test_user(self, request):
226226
operator = self.operator
227227
segment_count = self.count
228228

229-
def get_visit_count(request):
230-
"""Search through the request sessions to get the page visit count
231-
corresponding to the request.
229+
# Local import for cyclic import
230+
from wagtail_personalisation.adapters import get_segment_adapter
232231

233-
:param request: The http request
234-
:type request: django.http.HttpRequest
235-
:returns: A number indicating the amount of visits
236-
to the requested page
237-
:rtype: int
238-
239-
"""
240-
for page in request.session['visit_count']:
241-
if page['path'] == request.path:
242-
return page['count']
243-
244-
visit_count = get_visit_count(request)
232+
adapter = get_segment_adapter(request)
245233

234+
visit_count = adapter.get_visit_count()
246235
if visit_count and operator == "more_than":
247236
if visit_count > segment_count:
248237
return True

0 commit comments

Comments
 (0)