You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.5 KiB
75 lines
2.5 KiB
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,)))
|
|
|