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 .models import Post, Comment from .forms import PostForm from datetime import datetime import logging from django.conf import settings import uuid # Create your views here. def index(request): latest_post_list = Post.objects.filter(state=1).order_by('-date')[:25] context = { 'latest_post_list' : latest_post_list } 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 submission(request): # return render(request, 'news/submission.html', {}) 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,)))