Website/blog/views.py

115 lines
3.1 KiB
Python

from django.shortcuts import render
from django.contrib.auth.mixins import *
from django.views.generic import *
from .models import *
from .forms import *
MAX_POSTS = 150
MARGIN = 20
# Create your views here.
def news(request):
allow_empty = True
queryset = None
model = Blog
paginate_by = None
paginate_orphans = 0
context_object_name = 'posts'
# paginator_class = Paginator
# page_kwarg = "page"
ordering = ['-date_posted']
if queryset is not None:
queryset = queryset
if isinstance(queryset, QuerySet):
queryset = queryset.all()
elif model is not None:
queryset = model._default_manager.all()
else:
raise ImproperlyConfigured(
"%(cls)s is missing a QuerySet. Define "
"%(cls)s.model, %(cls)s.queryset, or override "
"%(cls)s.get_queryset()." % {"cls": self.__class__.__name__}
)
if ordering:
if isinstance(ordering, str):
ordering = (ordering,)
queryset = queryset.order_by(*ordering)
return render(request, 'blog/home.html', { context_object_name: queryset, 'topics': ['No Updates...'] })
class BlogDetailView(DetailView):
model = Blog
template_name = 'blog/blogDetail.html'
class BlogCreateView(LoginRequiredMixin, CreateView):
model = Blog
template_name = 'blog/blogCreate.html'
fields = ['title', 'content']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form) and self.request.user.is_staff
class PostDetailView(DetailView):
model = Post
template_name = 'blog/postDetail.html'
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
template_name = 'blog/postCreate.html'
fields = ['content']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
def chat(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
print(Post.objects.count())
if Post.objects.count() > MAX_POSTS + MARGIN:
qs = Post.objects.order_by("-date_posted")
old_ids = qs.values_list("id", flat=True)[MAX_POSTS:]
if old_ids:
Post.objects.filter(id__in=old_ids).delete()
return render(request, "blog/partials/post.html", {"post": post})
posts = Post.objects.select_related("author").order_by("-date_posted")
form = PostForm()
return render(request, "blog/postList.html", {
"posts": posts,
"form": form
})
def posts_partial(request):
posts = Post.objects.select_related("author").order_by("-date_posted")[:40]
return render(request, "blog/partials/postList.html", {
"posts": posts
})
def dev(request):
return render(request, 'dev.html', {'title': 'Development'})
def support(request):
return render(request, 'support.html', {'title': 'Support Us'})
def home(request):
return render(request, 'index.html', {'title': 'Home'})