From 4d2b13de5be993cbe26b52d4e50d464f72fc28e5 Mon Sep 17 00:00:00 2001 From: Slava Date: Thu, 10 Aug 2017 15:59:14 +0300 Subject: [PATCH] recommend expos --- apps/functions/model_mixin.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/functions/model_mixin.py b/apps/functions/model_mixin.py index 55a354fc..11da16c1 100644 --- a/apps/functions/model_mixin.py +++ b/apps/functions/model_mixin.py @@ -139,7 +139,7 @@ class EventMixin(object): exclude_pks) def get_nearest_events(self): - if getattr(self, '_nearest_events', None) is None: + if getattr(self, '_nearest_events', None) is None or self._nearest_events == []: model = self.__class__ result = [] tags = list(self.tag.all().values_list('pk', flat=True)) @@ -172,19 +172,22 @@ class EventMixin(object): return (list(sorted(list(chain(*zip(*[x for x in [events_m2, events_m, events] if x])))[3:5], key=lambda x: x.data_begin)), exclude_pks) def get_recommend_expos(self): - if getattr(self, '_nearest_events', None) is None: + if getattr(self, '_recommend_expos', None) is None or self._recommend_expos == []: model = self.__class__ result = [] tags = list(self.tag.all().values_list('pk', flat=True)) themes = list(self.theme.all().values_list('pk', flat=True)) qs = model.objects.language().filter(country_id=self.country_id) - result, exclude = self.get_nearest_events_incl(qs, tags, themes) + result, exclude = self.get_recommend_expos_incl(qs, tags, themes) if len(result) > 5: qs = model.objects.language() - r, e = self.get_nearest_events_incl(qs, tags, themes, exclude) + r, e = self.get_recommend_expos_incl(qs, tags, themes, exclude) result += r - self._nearest_events = result[3:5] - return self._nearest_events + if len(result) < 5: + self._recommend_expos = result[:3] + else: + self._recommend_expos = result[3:5] + return self._recommend_expos def get_nearest_events_url(self): url_params = QueryDict('', mutable=True)