producthunt/products/views.py

48 lines
1.7 KiB
Python
Raw Normal View History

2020-03-10 14:10:36 -07:00
from django.shortcuts import render, redirect, get_object_or_404
2020-03-10 12:40:47 -07:00
from django.contrib.auth.decorators import login_required
from .models import Product
from django.utils import timezone
2020-03-09 18:17:36 -07:00
2020-03-09 20:13:13 -07:00
def home(request):
2020-03-10 14:55:24 -07:00
products = Product.objects
return render(request, 'products/home.html', {'products': products})
2020-03-10 12:40:47 -07:00
2020-03-10 15:21:18 -07:00
@login_required(login_url='/accounts/signup')
2020-03-10 12:40:47 -07:00
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()
2020-03-10 14:10:36 -07:00
return redirect('/products/' + str(product.id))
2020-03-10 12:40:47 -07:00
else:
return render(request, 'products/create.html', {'error': 'all fields required'})
else:
return render(request, 'products/create.html')
2020-03-10 14:10:36 -07:00
def detail(request, product_id):
product = get_object_or_404(Product, pk=product_id)
return render(request, 'products/detail.html', {'product': product})
2020-03-10 14:28:13 -07:00
2020-03-10 15:21:18 -07:00
@login_required(login_url='/accounts/signup')
2020-03-10 14:28:13 -07:00
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))