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'})