from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse, Http404, HttpResponseRedirect from django.template import loader from django.urls import reverse from django.core.paginator import Paginator from django.conf import settings from .models import Post, Comment from .forms import PostForm from datetime import datetime import logging import uuid def index(request): latest_post_list = Post.objects.filter(state=1).order_by('-date') paginator = Paginator(latest_post_list, 25) page = request.GET.get('page') posts = paginator.get_page(page) context = { 'latest_post_list' : posts } return render(request, 'news/index.html', context) def post(request, post_id): post = get_object_or_404(Post, pk=post_id) return render(request, 'news/post.html', {'post': post}) def createaccount(request): return render(request, 'news/createaccount.html', {}) def submission(request): if request.method == 'POST': form = PostForm(request.POST, request.FILES) if form.is_valid(): post = Post.objects.create(author=request.user,date=datetime.today()) post.title = form.cleaned_data['title'] post.body = form.cleaned_data['body'] post.url = form.cleaned_data['url'] filename = str(uuid.uuid4()) handle_uploaded_file(filename, request.FILES['image']) post.image_url = filename post.state = 1 post.save() return HttpResponseRedirect(reverse('news:submitted')) # if a GET (or any other method) we'll create a blank form else: form = PostForm() return render(request, 'news/submission.html', {'form': form}) # title = forms.CharField(label='Title', max_length=200) # body = forms.CharField(label='Optional text', max_length=10000) # url = forms.CharField(label='URL', max_length=200) # # date = forms.DateTimeField('date published') # # state = forms.IntegerField(label='State', default=1) # image = forms.FileField() def handle_uploaded_file(filename, f): with open(settings.MEDIA_ROOT + filename, 'wb+') as destination: for chunk in f.chunks(): destination.write(chunk) def submitted(request): return render(request, 'news/submitted.html', {}) def comment(request, post_id): comment = Comment(author=request.user,date=datetime.today()) comment.post = get_object_or_404(Post, pk=post_id) comment.body = request.POST['body'] comment.save() return HttpResponseRedirect(reverse('news:post', args=(post_id,)))