7

Optimize query for the segment visits

This commit is contained in:
Michael van Tellingen
2017-05-31 16:33:24 +02:00
committed by Michael van Tellingen
parent 361f0b1700
commit 63d5de9803
3 changed files with 65 additions and 15 deletions

View File

@ -166,17 +166,13 @@ class SessionSegmentsAdapter(BaseSegmentsAdapter):
def update_visit_count(self):
"""Update the visit count for all segments in the request session."""
segments = self.request.session['segments']
for seg in segments:
try:
segment = Segment.objects.get(pk=seg['id'])
segment.visit_count = F('visit_count') + 1
segment.save()
segment_pks = [s['id'] for s in segments]
except Segment.DoesNotExist:
# The segment no longer exists.
# Remove it from the request session.
self.request.session['segments'][:] = [
item for item in segments if item.get('id') != seg['id']]
# Update counts
(Segment.objects
.enabled()
.filter(pk__in=segment_pks)
.update(visit_count=F('visit_count') + 1))
def refresh(self):
"""Retrieve the request session segments and verify whether or not they