mirror of
https://github.com/Rushilwiz/NewViewsNews.git
synced 2025-04-18 10:30:16 -04:00
78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
from django.shortcuts import render, get_object_or_404
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
|
from django.views.generic import (
|
|
ListView,
|
|
DetailView,
|
|
CreateView,
|
|
UpdateView,
|
|
DeleteView,
|
|
)
|
|
|
|
from .models import Article
|
|
from users.models import Profile
|
|
|
|
|
|
# Create your views here.
|
|
|
|
def about (request):
|
|
return render (request, 'news/about.html')
|
|
|
|
def home (request):
|
|
if request.user.is_authenticated and Profile.objects.filter(user=request.user).count() < 1:
|
|
Profile.objects.create(user=request.user).save()
|
|
|
|
context = {
|
|
'articles': Article.objects.all()
|
|
}
|
|
|
|
return render (request, 'news/home.html', context)
|
|
|
|
class ArticleListView(ListView):
|
|
model = Article
|
|
template_name = "news/home.html"
|
|
context_object_name='articles'
|
|
ordering = ['-date_posted']
|
|
paginate_by = 8
|
|
|
|
class UserArticleListView(ListView):
|
|
model = Article
|
|
template_name = "news/user_articles.html"
|
|
context_object_name='articles'
|
|
paginate_by = 8
|
|
|
|
def get_queryset(self):
|
|
user = get_object_or_404(User, username=self.kwargs.get('username'))
|
|
return Article.objects.filter(author=user).order_by('-date_posted')
|
|
|
|
class ArticleDetailView(DetailView):
|
|
model = Article
|
|
|
|
class ArticleCreateView(LoginRequiredMixin, CreateView):
|
|
model = Article
|
|
fields=['content']
|
|
|
|
def form_valid(self, form):
|
|
form.instance.author = self.request.user
|
|
return super().form_valid(form)
|
|
|
|
class ArticleUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
|
model = Article
|
|
fields=['content']
|
|
|
|
def form_valid(self, form):
|
|
form.instance.author = self.request.user
|
|
return super().form_valid(form)
|
|
|
|
def test_func(self):
|
|
article = self.get_object()
|
|
return self.request.user == article.author
|
|
|
|
class ArticleDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
|
|
model = Article
|
|
success_url='/'
|
|
|
|
def test_func(self):
|
|
article = self.get_object()
|
|
return self.request.user == article.author
|