115 lines
3.1 KiB
Python
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'})
|