def get_game_list(site_id, strict=False): from cursesite.portals.models import RelatedObject cfilter = None related_objects = cache.get('site_related_objects_%s' % site_id) if not related_objects: related_objects = RelatedObject.objects.filter(site=site_id).select_related() cache.set('site_related_objects_%s' % site_id, related_objects) games = cache.get('site_games_%s' % site_id) if not games: ids = [] for obj in related_objects: if obj.content_type.model_class() == Game: ids.append(str(obj.object_id)) games = Game.objects if len(ids) > 0: games = games.filter(id__in=ids).order_by('name') elif not strict: games = games.all().order_by('name') else: games = [] cache.set('site_games_%s' % site_id, games) return games