def render_publication_row(context, publication_slug): try: publication = Publication.objects.get(slug=publication_slug) except Publication.DoesNotExist: return u'' else: user = context.get('user') # if not public => render only if saff user if publication.public or user.is_staff: edition = get_current_edition(publication) if edition: flatten_ctx = context.flatten() flatten_ctx.update( { 'publication_obj': publication, 'edition': edition, 'is_portada': True, # both should be set # force a blank first node because top_index should be > 0 'publication_destacados': [None] + edition.top_articles[:4], } ) if hasattr(user, 'subscriber') and user.subscriber.is_subscriber(publication.slug): flatten_ctx['publication_obj_is_subscriber'] = True return loader.render_to_string( getattr(settings, 'HOMEV3_PUBLICATION_ROW_TEMPLATE', 'publication_row.html'), flatten_ctx ) else: return u'' else: return u''
def render(self, context): try: category = Category.objects.get(slug=self.category_slug) except Category.DoesNotExist: return u'' else: latest_articles = category.latest_articles()[:4] if latest_articles: flatten_ctx = context.flatten() flatten_ctx.update( { 'category': category, # both next entries should be set 'edition': get_current_edition(), 'is_portada': True, # force a blank first node because top_index should be > 0 'category_destacados': [None] + latest_articles, } ) template = 'category_row.html' if category.slug in getattr(settings, 'HOMEV3_CATEGORIES_ROW_CUSTOM_TEMPLATES', ()): template = '%s/row/%s.html' % (settings.CORE_CATEGORIES_TEMPLATE_DIR, category.slug) return loader.render_to_string(template, flatten_ctx) else: return u''
def rawpic_cover(request): edition = get_current_edition() if not edition: response = HttpResponse("No hay foto disponible!", mimetype="text/plain") else: rawpic = open(edition.cover.path) response = HttpResponse(rawpic.read(), mimetype="image/jpeg") return response
def rawpic_cover(request): edition = get_current_edition() if not edition: raise Http404 else: try: return HttpResponse(open(edition.cover.path).read(), content_type="image/jpeg") except IOError: raise Http404
class HomeArticleViewSet(viewsets.ModelViewSet): try: edition = get_current_edition() or get_latest_edition() except Exception: edition = None pk_list = [a.id for a in edition.top_articles] if edition else [] clauses = ' '.join(['WHEN id=%s THEN %s' % (pk, i) for i, pk in enumerate(pk_list)]) ordering = 'CASE %s END' % clauses queryset = Article.objects.filter(id__in=pk_list).extra(select={'ordering': ordering}, order_by=('ordering', )) serializer_class = ArticleSerializer http_method_names = ['get', 'head'] filter_fields = ('headline', 'sections')
def items(self, obj): edition = get_current_edition() return Article.objects.filter( type=self.type, is_published=True, edition__id__lte=edition.id).order_by('-date_published')[:10]
def items(self, obj): edition = get_current_edition() return obj.articles.filter( is_published=True, edition__id__lte=edition.id).order_by('-date_published')[:10]
def items(self): edition = get_current_edition() query = Supplement.objects.filter(edition__id__lte=edition.id)[:10] result = query.exclude(public=False) return result
def items(self): print('items') edition = get_current_edition() return Edition.objects.filter(id__lte=edition.id)[:10]
def index(request, year=None, month=None, day=None, domain_slug=None): """ View to display the current edition page. Or the edition in the date and publication matching domain_slug. If domain_slug is a Category slug this view will return the matching category detail view. """ if domain_slug: # if domain_slug is one of the "root url" publications => redirect to home (only if no edition date given) if domain_slug in settings.CORE_PUBLICATIONS_USE_ROOT_URL and not ( year or month or day): return HttpResponsePermanentRedirect(reverse('home')) try: publication = Publication.objects.get(slug=domain_slug) # if not public => only allow staff members if not (publication.public or request.user.is_staff): raise Http404 except Publication.DoesNotExist: # if domain_slug is an area slug (or a slug to redirect) => return area detail view category_redirections = getattr(settings, 'CORE_CATEGORY_REDIRECT', {}) if domain_slug in category_redirections: # removed, changed or force-404 categories redirects by settings redirect_slug = category_redirections[domain_slug] if redirect_slug: return HttpResponsePermanentRedirect( reverse( 'home', args=(settings.CORE_CATEGORY_REDIRECT[domain_slug], ))) else: raise Http404 return category_detail( request, get_object_or_404(Category, slug=domain_slug).slug) else: publication = Publication.objects.get(slug=settings.DEFAULT_PUB) # Primer día desde el que se muestran ediciones. # TODO: explain better this setting first_day = getattr(settings, 'FIRST_DAY') edition = None publishing_hour, publishing_minute = [ int(i) for i in settings.PUBLISHING_TIME.split(':') ] # Context variables for publication, featured publications, sections "grids" and "big photo". context = { 'publication': publication, 'featured_publications': [], 'featured_sections': getattr(settings, 'HOMEV3_FEATURED_SECTIONS', {}).get(publication.slug, ()), 'bigphoto_template': getattr(settings, 'HOMEV3_BIGPHOTO_TEMPLATE', 'bigphoto.html'), } is_authenticated = request.user.is_authenticated() if is_authenticated: context.update({ 'restricteds': [], 'restricteds_allowed': [], 'compute_follows': [], 'follows': [] }) user_has_subscriber = hasattr(request.user, 'subscriber') follow_set = request.user.follow_set.filter( content_type=ContentType.objects.get_for_model( Article)).values_list('object_id', flat=True) for publication_slug in getattr(settings, 'HOMEV3_FEATURED_PUBLICATIONS', ()): try: ftop_articles = \ get_current_edition(publication=Publication.objects.get(slug=publication_slug)).top_articles if ftop_articles: if is_authenticated: ctx_update_article_extradata(context, request.user, user_has_subscriber, follow_set, ftop_articles) fcover_article = ftop_articles[0] ftop_articles.pop(0) else: fcover_article = None except Publication.DoesNotExist: pass else: context['featured_publications'].append( (publication_slug, ftop_articles, fcover_article)) # Context variables for the featured category component featured_category_slug = getattr(settings, 'HOMEV3_FEATURED_CATEGORY', None) if featured_category_slug: category = get_object_or_404(Category, slug=featured_category_slug) category_home = get_object_or_404(CategoryHome, category=category) category_cover_article, category_destacados = category_home.cover( ), category_home.non_cover_articles() if is_authenticated: ctx_update_article_extradata(context, request.user, user_has_subscriber, follow_set, [category_cover_article]) ctx_update_article_extradata(context, request.user, user_has_subscriber, follow_set, category_destacados) context.update({ 'fcategory': category, 'category_cover_article': category_cover_article, 'category_destacados': category_destacados, }) questions_topic_slug = getattr(settings, 'HOMEV3_QUESTIONS_TOPIC_SLUG', None) if questions_topic_slug: question_list = Question.published.filter( topic__slug=questions_topic_slug) try: questions_topic = Topic.objects.get(slug=questions_topic_slug) except Topic.DoesNotExist: questions_topic = None else: question_list, questions_topic = [], None if publication.slug != settings.DEFAULT_PUB: if year and month and day: date_published = datetime(year=int(year), month=int(month), day=int(day), hour=publishing_hour, minute=publishing_minute) if first_day.date() > date_published.date(): raise Http404 if date_published >= datetime.now() and not request.user.is_staff: raise Http404 edition = get_object_or_404(Edition, date_published=date_published, publication=publication) else: edition = get_current_edition(publication=publication) top_articles = edition.top_articles if edition else [] context.update({ 'edition': edition, 'mas_leidos': False, 'allow_ads': getattr(settings, 'HOMEV3_NON_DEFAULT_PUB_ALLOW_ADS', True), }) template = 'index_pubs.html' else: if year and month and day: date_published = datetime(year=int(year), month=int(month), day=int(day), hour=publishing_hour, minute=publishing_minute) if first_day.date() > date_published.date(): raise Http404 if date_published >= datetime.now() and not request.user.is_staff: raise Http404 ld_edition = get_object_or_404( Edition, date_published=date_published, publication__slug__in=settings.CORE_PUBLICATIONS_USE_ROOT_URL) else: # get edition as usual ld_edition = get_current_edition() top_articles = ld_edition.top_articles if ld_edition else [] try: context['event'] = LiveEmbedEvent.objects.get(active=True, in_home=True) except LiveEmbedEvent.DoesNotExist: pass if settings.DEBUG: print(u'DEBUG: Default home page view called.') context.update({ 'edition': ld_edition, 'mas_leidos': True, 'allow_ads': True, 'publications': Publication.objects.filter(public=True), 'home_publications': settings.HOME_PUBLICATIONS, }) template = 'index.html' if top_articles: if is_authenticated: ctx_update_article_extradata(context, request.user, user_has_subscriber, follow_set, top_articles) cover_article = top_articles[0] top_articles.pop(0) else: cover_article = None context.update({ 'is_portada': True, 'cover_article': cover_article, 'destacados': top_articles, 'question_list': question_list, 'questions_topic': questions_topic, 'big_photo': publication.full_width_cover_image, }) if publication.slug in getattr(settings, 'CORE_PUBLICATIONS_CUSTOM_TEMPLATES', ()): template_dir = getattr(settings, 'CORE_PUBLICATIONS_TEMPLATE_DIR', None) if template_dir: template = '%s/%s.html' % (template_dir, publication.slug) return render(request, template, context)
def items(self): edition = get_current_edition() return Supplement.objects.filter(edition__id__lte=edition.id, public=True)[:10]
def index(request, year=None, month=None, day=None, domain_slug=None): """ View to display the current edition page. Or the edition in the date and publication matching domain_slug. If domain_slug is a Category slug this view will return the matching category detail view. """ if domain_slug: # if domain_slug is one of the "root url" publications => redirect to home if domain_slug in settings.CORE_PUBLICATIONS_USE_ROOT_URL: return HttpResponsePermanentRedirect(reverse('home')) try: publication = Publication.objects.get(slug=domain_slug) # if not public => only allow staff members if not (publication.public or request.user.is_staff): raise Http404 except Publication.DoesNotExist: # if domain_slug is an area slug (or a slug to redirect) => return area detail view if domain_slug in getattr(settings, 'CORE_CATEGORY_REDIRECT', {}): # removed or changed categories redirects by settings return HttpResponsePermanentRedirect( reverse('home', args=(settings.CORE_CATEGORY_REDIRECT[domain_slug], ))) return category_detail(request, get_object_or_404(Category, slug=domain_slug).slug) else: publication = Publication.objects.get(slug=settings.DEFAULT_PUB) # Primer día desde el que se muestran ediciones. # TODO: explain better this setting first_day = getattr(settings, 'FIRST_DAY') edition = None publishing_hour, publishing_minute = [int(i) for i in settings.PUBLISHING_TIME.split(':')] # Context variables for featured publication "grids" context = {'publication': publication, 'featured_publications': []} for publication_slug in getattr(settings, 'HOMEV3_FEATURED_PUBLICATIONS', ()): try: ftop_articles = \ get_current_edition(publication=Publication.objects.get(slug=publication_slug)).top_articles if ftop_articles: fcover_article = ftop_articles[0] ftop_articles.pop(0) else: fcover_article = None except Publication.DoesNotExist: pass else: context['featured_publications'].append((publication_slug, ftop_articles, fcover_article)) # Context variables for the featured category component featured_category_slug = getattr(settings, 'HOMEV3_FEATURED_CATEGORY', None) if featured_category_slug: category = get_object_or_404(Category, slug=featured_category_slug) category_home = get_object_or_404(Home, category=category) cat_modules = category_home.modules.all() context.update({ 'fcategory': category, 'category_cover_article': category_home.cover, 'category_destacados': cat_modules[0].articles_as_list if cat_modules else []}) question_list = Question.published.filter(topic__slug='coronavirus') try: questions_topic = Topic.objects.get(slug="coronavirus") except Topic.DoesNotExist: questions_topic = None if publication.slug != settings.DEFAULT_PUB: if year and month and day: date_published = datetime( year=int(year), month=int(month), day=int(day), hour=publishing_hour, minute=publishing_minute) if first_day.date() > date_published.date(): raise Http404 if date_published >= datetime.now() and not request.user.is_staff: raise Http404 edition = get_object_or_404(Edition, date_published=date_published, publication=publication) else: edition = get_current_edition(publication=publication) top_articles = edition.top_articles if top_articles: cover_article = top_articles[0] top_articles.pop(0) else: cover_article = None context.update({ 'cover_article': cover_article, 'edition': edition, 'destacados': top_articles, 'mas_leidos': False, 'big_photo': publication.full_width_cover_image, 'is_portada': True, 'question_list': question_list, 'questions_topic': questions_topic, 'featured_sections': getattr(settings, 'HOMEV3_FEATURED_SECTIONS', {}).get(publication.slug, ())}) return 'index_pubs.html', context else: if year and month and day: date_published = datetime( year=int(year), month=int(month), day=int(day), hour=publishing_hour, minute=publishing_minute) if first_day.date() > date_published.date(): raise Http404 if date_published >= datetime.now() and not request.user.is_staff: raise Http404 ld_edition = get_object_or_404( Edition, date_published=date_published, publication__slug__in=settings.CORE_PUBLICATIONS_USE_ROOT_URL) else: # get edition as usual ld_edition = get_current_edition() top_articles = ld_edition.top_articles if ld_edition else [] if top_articles: cover_article = top_articles[0] top_articles.pop(0) else: cover_article = None try: context['event'] = LiveEmbedEvent.objects.get(active=True, in_home=True) except LiveEmbedEvent.DoesNotExist: pass try: context['photo_section'] = Section.objects.get(slug='fotografia') except Section.DoesNotExist: pass if settings.DEBUG: print(u'DEBUG: Default home page view called.') context.update({ 'edition': ld_edition, 'destacados': top_articles, 'is_portada': True, 'cover_article': cover_article, 'big_photo': publication.full_width_cover_image, 'mas_leidos': True, 'publications': Publication.objects.filter(public=True), 'home_publications': settings.HOME_PUBLICATIONS, 'question_list': question_list, 'questions_topic': questions_topic}) return 'index.html', context