47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
from django.shortcuts import render, redirect, get_object_or_404
|
|
from django.contrib.auth.decorators import login_required
|
|
from .models import Product
|
|
from django.utils import timezone
|
|
|
|
|
|
def home(request):
|
|
return render(request, 'products/home.html')
|
|
|
|
|
|
@login_required()
|
|
def create(request):
|
|
if request.method == 'POST':
|
|
if request.POST['title'] and request.POST['url'] and request.FILES['image'] and request.FILES['icon'] and \
|
|
request.POST['body']:
|
|
product = Product()
|
|
product.title = request.POST['title']
|
|
if request.POST['url'].startswith('http'):
|
|
product.url = request.POST['url']
|
|
else:
|
|
product.url = 'http://' + request.POST['url']
|
|
product.image = request.FILES['image']
|
|
product.icon = request.FILES['icon']
|
|
product.body = request.POST['body']
|
|
product.pubdate = timezone.datetime.now()
|
|
product.hunter = request.user
|
|
product.save()
|
|
return redirect('/products/' + str(product.id))
|
|
else:
|
|
return render(request, 'products/create.html', {'error': 'all fields required'})
|
|
else:
|
|
return render(request, 'products/create.html')
|
|
|
|
|
|
def detail(request, product_id):
|
|
product = get_object_or_404(Product, pk=product_id)
|
|
return render(request, 'products/detail.html', {'product': product})
|
|
|
|
|
|
@login_required()
|
|
def upvote(request, product_id):
|
|
if request.method == 'POST':
|
|
product = get_object_or_404(Product, pk=product_id)
|
|
product.votes_total += 1
|
|
product.save()
|
|
return redirect('/products/' + str(product.id))
|