2020-10-15 10:18:39 -07:00
|
|
|
from django.contrib.auth import authenticate, login, logout
|
|
|
|
from django.db import IntegrityError
|
|
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
|
|
from django.shortcuts import render
|
|
|
|
from django.urls import reverse
|
2020-10-18 09:27:28 -07:00
|
|
|
from django import forms
|
2020-10-18 13:06:31 -07:00
|
|
|
from .models import User,AuctionListing,Comment
|
2020-10-15 10:18:39 -07:00
|
|
|
|
|
|
|
|
2020-10-16 09:38:28 -07:00
|
|
|
categories = ['Fashion','Electronics','Home','Sports','Toys','Automobile','Books','Video Games', 'Other']
|
2020-10-18 09:27:28 -07:00
|
|
|
class Bid_Form(forms.Form):
|
|
|
|
bid = 0.0
|
|
|
|
def __init__(self,bid_value):
|
|
|
|
self.bid = bid_value
|
|
|
|
|
|
|
|
bid_value = forms.DecimalField(decimal_places=2,min_value= bid + 1)
|
|
|
|
|
|
|
|
|
2020-10-15 10:18:39 -07:00
|
|
|
def index(request):
|
|
|
|
listings = AuctionListing.objects.all()
|
2020-10-18 13:06:31 -07:00
|
|
|
if request.method == "POST":
|
|
|
|
|
2020-10-15 10:18:39 -07:00
|
|
|
return render(request, "auctions/index.html",{
|
2020-10-18 09:27:28 -07:00
|
|
|
"Listings":listings,
|
2020-10-18 13:06:31 -07:00
|
|
|
|
2020-10-15 10:18:39 -07:00
|
|
|
})
|
|
|
|
|
|
|
|
def listing(request,title):
|
|
|
|
"""
|
|
|
|
docstring
|
|
|
|
"""
|
2020-10-18 09:27:28 -07:00
|
|
|
listings = AuctionListing.objects.get(pk = title)
|
2020-10-18 13:06:31 -07:00
|
|
|
if request.method == "POST":
|
|
|
|
body = request.POST["comment_body"]
|
|
|
|
comment = Comment(user=request.user,listing=listings,body = body)
|
|
|
|
comment.save()
|
|
|
|
|
2020-10-15 22:04:50 -07:00
|
|
|
return render(request,"auctions/listing.html",{
|
2020-10-18 09:27:28 -07:00
|
|
|
"Listing": listings
|
2020-10-15 10:18:39 -07:00
|
|
|
})
|
2020-10-18 13:06:31 -07:00
|
|
|
|
2020-10-16 09:38:28 -07:00
|
|
|
def category(request,cat_name = None):
|
|
|
|
"""
|
|
|
|
docstring
|
|
|
|
"""
|
|
|
|
if( cat_name != None):
|
|
|
|
if cat_name.capitalize() in categories:
|
|
|
|
|
2020-10-18 09:27:28 -07:00
|
|
|
listings = AuctionListing.objects.filter(category=cat_name.capitalize())
|
2020-10-16 09:38:28 -07:00
|
|
|
print(listings)
|
2020-10-15 10:18:39 -07:00
|
|
|
|
2020-10-16 09:38:28 -07:00
|
|
|
return render(request, "auctions/category.html",{
|
2020-10-18 09:27:28 -07:00
|
|
|
"listings":listings,
|
|
|
|
"cat_name": cat_name
|
2020-10-16 09:38:28 -07:00
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
else:
|
|
|
|
return render(request,"auctions/category_listing.html",{
|
|
|
|
"categories": categories
|
|
|
|
})
|
2020-10-18 13:06:31 -07:00
|
|
|
|
2020-10-15 10:18:39 -07:00
|
|
|
def login_view(request):
|
|
|
|
if request.method == "POST":
|
|
|
|
|
|
|
|
# Attempt to sign user in
|
|
|
|
username = request.POST["username"]
|
|
|
|
password = request.POST["password"]
|
|
|
|
user = authenticate(request, username=username, password=password)
|
|
|
|
|
|
|
|
# Check if authentication successful
|
|
|
|
if user is not None:
|
|
|
|
login(request, user)
|
|
|
|
return HttpResponseRedirect(reverse("index"))
|
|
|
|
else:
|
|
|
|
return render(request, "auctions/login.html", {
|
|
|
|
"message": "Invalid username and/or password."
|
|
|
|
})
|
|
|
|
else:
|
|
|
|
return render(request, "auctions/login.html")
|
|
|
|
|
|
|
|
|
|
|
|
def logout_view(request):
|
|
|
|
logout(request)
|
|
|
|
return HttpResponseRedirect(reverse("index"))
|
|
|
|
|
|
|
|
|
|
|
|
def register(request):
|
|
|
|
if request.method == "POST":
|
|
|
|
username = request.POST["username"]
|
|
|
|
email = request.POST["email"]
|
|
|
|
|
|
|
|
# Ensure password matches confirmation
|
|
|
|
password = request.POST["password"]
|
|
|
|
confirmation = request.POST["confirmation"]
|
|
|
|
if password != confirmation:
|
|
|
|
return render(request, "auctions/register.html", {
|
|
|
|
"message": "Passwords must match."
|
|
|
|
})
|
|
|
|
|
|
|
|
# Attempt to create new user
|
|
|
|
try:
|
|
|
|
user = User.objects.create_user(username, email, password)
|
|
|
|
user.save()
|
|
|
|
except IntegrityError:
|
|
|
|
return render(request, "auctions/register.html", {
|
|
|
|
"message": "Username already taken."
|
|
|
|
})
|
|
|
|
login(request, user)
|
|
|
|
return HttpResponseRedirect(reverse("index"))
|
|
|
|
else:
|
|
|
|
return render(request, "auctions/register.html")
|
|
|
|
def create(request):
|
|
|
|
"""
|
|
|
|
docstring
|
|
|
|
"""
|
|
|
|
if request.method == "POST":
|
|
|
|
title = request.POST["title"]
|
|
|
|
desc = request.POST["desc"]
|
|
|
|
starting_bid = request.POST["starting_bid"]
|
|
|
|
photo_url = request.POST["photo"]
|
2020-10-16 09:38:28 -07:00
|
|
|
category = request.POST["category"]
|
|
|
|
obj = AuctionListing(title = title, desc = desc, user = request.user,price = starting_bid, picture = photo_url,category=category)
|
2020-10-15 10:18:39 -07:00
|
|
|
obj.save()
|
|
|
|
return render(request,"auctions/index.html")
|
|
|
|
else:
|
2020-10-16 09:38:28 -07:00
|
|
|
return render(request,"auctions/create_listing.html",{
|
|
|
|
"categories":categories
|
|
|
|
})
|
2020-10-18 13:06:31 -07:00
|
|
|
|
|
|
|
|
|
|
|
|