You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

73 lines
2.3 KiB

from django.contrib import messages
from django.contrib.sitemaps import Sitemap
from django.core.mail import mail_managers
from django.shortcuts import render, get_object_or_404, redirect
from django.views.generic import ListView, DetailView
from django.views.generic.edit import FormView, CreateView
from news.forms import CommentForm
from news.models import *
class NewsList(ListView):
model = News
template_name = 'news/list.jinja'
queryset = News.objects.filter(is_public=True).order_by('-pk')
def get_queryset(self):
tag = self.request.GET.get('tag', None)
retval = self.queryset
if tag:
retval = self.queryset.filter(
tags_list__slug__iexact=tag, is_public=True).order_by('-pk')
return retval
def get_context_data(self, **kwargs):
retval = super(NewsList, self).get_context_data()
tag = self.request.GET.get('tag', None)
if tag:
try:
retval['tag'] = NewsTag.objects.get(slug=tag)
except:
pass
return retval
def news_detail(request, slug):
object = get_object_or_404(News, slug__iexact=slug, is_public=True)
form = CommentForm(request.POST or None)
if form.is_valid():
comment = form.save(commit=False)
comment.news = object
comment.save()
mail_managers('Новый комментарий к новости', '''
Имя: {}
Email: {}
Комментарий: {}
Новость: {}
Ссылка на новость: http://batiskaf-kz.kz{}
'''.format(
form.cleaned_data['name'],
form.cleaned_data['email'],
form.cleaned_data['text'],
object.title,
object.get_absolute_url(),
))
messages.success(request, 'Ваш комментарий успешно опубликован!')
return redirect(object.get_absolute_url() + '#comment{}'.format(comment.pk))
c = dict(
object=object,
form=form
)
return render(request, 'news/detail.jinja', c)
class NewsSitemap(Sitemap):
changefreq = "never"
priority = 0.7
def items(self):
return News.objects.filter(is_public=True)
def lastmod(self, obj):
return obj.created