45 lines
1.7 KiB
Python
45 lines
1.7 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):
|
|
products = Product.objects
|
|
return render(request, 'home.html',{'products':products})
|
|
|
|
@login_required(login_url="/accounts/signup")
|
|
def create(request):
|
|
if request.method == 'POST':
|
|
if request.POST['title'] and request.POST['body'] and request.POST['url'] and request.FILES['icon'] and request.FILES['image']:
|
|
product = Product()
|
|
product.title = request.POST['title']
|
|
product.body = request.POST['body']
|
|
if request.POST['url'].startswith('http://') or request.POST['url'].startswith('https://'):
|
|
product.url = request.POST['url']
|
|
else:
|
|
product.url = 'http://' + request.POST['url']
|
|
product.icon = request.FILES['icon']
|
|
product.image = request.FILES['image']
|
|
product.pub_date = timezone.datetime.now()
|
|
product.hunter = request.user
|
|
product.save()
|
|
return redirect('/products/'+str(product.id))
|
|
else:
|
|
return render(request, 'create.html',{'error':'All fields are required.'})
|
|
else:
|
|
return render(request, 'create.html')
|
|
|
|
def detail(request,product_id):
|
|
product= get_object_or_404(Product,pk=product_id)
|
|
return render(request, 'detail.html',{'product':product})
|
|
|
|
@login_required(login_url="/accounts/signup")
|
|
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))
|