Priyatham-sai-chand/auctions/views.py

116 lines
3.7 KiB
Python
Raw Normal View History

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
from django.core.files import File
from django.core.files.temp import NamedTemporaryFile
from django.core.files.base import ContentFile
import requests
from .models import User,AuctionListing,Comments
categories = ['Fashion','Electronics','Home','Sports','Toys','Automobile','Books','Video Games', 'Other']
def index(request):
listings = AuctionListing.objects.all()
return render(request, "auctions/index.html",{
"Listings":listings
})
def listing(request,title):
"""
docstring
"""
listing = AuctionListing.objects.get(pk = title)
return render(request,"auctions/listing.html",{
"Listing": listing
})
def category(request,cat_name = None):
"""
docstring
"""
if( cat_name != None):
if cat_name.capitalize() in categories:
listings = AuctionListing.objects.get(category=cat_name.capitalize())
print(listings)
return render(request, "auctions/category.html",{
"listings":listings
})
else:
return render(request,"auctions/category_listing.html",{
"categories": categories
})
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"]
category = request.POST["category"]
obj = AuctionListing(title = title, desc = desc, user = request.user,price = starting_bid, picture = photo_url,category=category)
obj.save()
return render(request,"auctions/index.html")
else:
categories = ['Fashion','Electronics','Home','Sports','Toys','Automobile','Books','Video Games', 'Other']
return render(request,"auctions/create_listing.html",{
"categories":categories
})