diff --git a/conference/models.py b/conference/models.py index 02d25008..a96676b1 100644 --- a/conference/models.py +++ b/conference/models.py @@ -136,11 +136,8 @@ class Conference(TranslatableModel, EventMixin, ExpoMixin): #return list(Service.objects.language().filter(url__in=ids, type=Service.type.conference).order_by('sort')) def get_services_detail(self): - excluded = ['tickets'] - country_ids = [item for item, bool in self.country.services if bool==True] - ids = [item for item, bool in self.services if bool==True] - qs = Service.objects.language().exclude(url__in=excluded).filter(Q(Q(url__in=country_ids) & Q(type=Service.type.conference)) | Q(url__in=ids)) - return list(qs) + # excluded = ['tickets'] + return super(Conference, self).get_services_detail(None, Service.type.conference) def get_nearest_events(self): if self.theme.all(): @@ -242,4 +239,4 @@ class TimeTable(TranslatableModel): pre_save.connect(pre_save_handler, sender=Conference) post_save.connect(post_save_handler, sender=Conference) post_save.connect(post_save_handler, sender=TimeTable) -post_save.connect(post_save_handler, sender=Statistic) \ No newline at end of file +post_save.connect(post_save_handler, sender=Statistic) diff --git a/exposition/models.py b/exposition/models.py index 5b191871..0942e1be 100644 --- a/exposition/models.py +++ b/exposition/models.py @@ -179,11 +179,8 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin): return list(qs) def get_services_detail(self): - excluded = ['visit', 'tickets'] - country_ids = [item for item, bool in self.country.services if bool==True] - ids = [item for item, bool in self.services if bool==True] - qs = Service.objects.language().exclude(url__in=excluded).filter(Q(Q(url__in=country_ids) & Q(type=Service.type.expo)) | Q(url__in=ids)) - return list(qs) + excluded = ['visit'] + return super(Exposition, self).get_services_detail(excluded, Service.type.expo) def get_parent(self): return {} @@ -359,4 +356,4 @@ pre_save.connect(pre_save_handler, sender=Exposition) post_save.connect(post_save_handler, sender=Exposition) post_save.connect(post_save_handler, sender=TimeTable) post_save.connect(post_save_handler, sender=TmpTimeTable) -post_save.connect(post_save_handler, sender=Statistic) \ No newline at end of file +post_save.connect(post_save_handler, sender=Statistic) diff --git a/functions/model_mixin.py b/functions/model_mixin.py index d612a507..7386aa93 100644 --- a/functions/model_mixin.py +++ b/functions/model_mixin.py @@ -88,6 +88,18 @@ class EventMixin(object): return list(Service.objects.language().filter(url__in=ids).order_by('sort')) + def get_services_detail(self, exluded, _type): + if not isinstance(getattr(self, '_get_services_detail', None), list): + # excluded = ['visit', 'tickets'] + country_ids = [item for item, bool in self.country.services if bool==True] + ids = [item for item, bool in self.services if bool==True] + qs = Service.objects.language() + if exluded is not None: + qs = qs.exclude(url__in=excluded) + qs = qs.filter(Q(Q(url__in=country_ids) & Q(type=_type)) | Q(url__in=ids)) + self._get_services_detail = list(qs) + return self._get_services_detail + def duration_days(self, month=None): if not month: d = self.data_end - self.data_begin @@ -177,4 +189,4 @@ class EventMixin(object): for item in source.all(): destination.add(item) - return duplicate \ No newline at end of file + return duplicate