54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
||
|
|
from django.http import HttpResponse
|
||
|
|
from django.utils import timezone
|
||
|
|
from django.core.files.storage import default_storage
|
||
|
|
from django.core.paginator import Paginator
|
||
|
|
from .models import File, Message
|
||
|
|
from .forms import FileUploadForm, MessageForm
|
||
|
|
from django.utils.timezone import timedelta
|
||
|
|
|
||
|
|
def home(request):
|
||
|
|
# 获取最近一周的留言
|
||
|
|
one_week_ago = timezone.now() - timedelta(days=7)
|
||
|
|
messages = Message.objects.filter(created_at__gte=one_week_ago).order_by('-created_at')
|
||
|
|
|
||
|
|
# 获取公开文件
|
||
|
|
files = File.objects.filter(is_public=True).order_by('-created_at')
|
||
|
|
|
||
|
|
return render(request, 'main/home.html', {
|
||
|
|
'messages': messages,
|
||
|
|
'files': files
|
||
|
|
})
|
||
|
|
|
||
|
|
def upload_file(request):
|
||
|
|
if request.method == 'POST':
|
||
|
|
form = FileUploadForm(request.POST, request.FILES)
|
||
|
|
if form.is_valid():
|
||
|
|
file = form.save(commit=False)
|
||
|
|
if request.user.is_authenticated:
|
||
|
|
file.owner = request.user
|
||
|
|
file.save()
|
||
|
|
return redirect('home')
|
||
|
|
else:
|
||
|
|
form = FileUploadForm()
|
||
|
|
return render(request, 'main/upload.html', {'form': form})
|
||
|
|
|
||
|
|
def delete_file(request, file_id):
|
||
|
|
file = get_object_or_404(File, id=file_id)
|
||
|
|
if request.user == file.owner:
|
||
|
|
file.file.delete()
|
||
|
|
file.delete()
|
||
|
|
return redirect('home')
|
||
|
|
|
||
|
|
def post_message(request):
|
||
|
|
if request.method == 'POST':
|
||
|
|
form = MessageForm(request.POST)
|
||
|
|
if form.is_valid():
|
||
|
|
message = form.save(commit=False)
|
||
|
|
message.ip_address = request.META.get('HTTP_X_FORWARDED_FOR', request.META.get('REMOTE_ADDR'))
|
||
|
|
message.save()
|
||
|
|
return redirect('home')
|
||
|
|
else:
|
||
|
|
form = MessageForm()
|
||
|
|
return render(request, 'main/message.html', {'form': form})
|