Commit e04ba2de authored by Julia Santos's avatar Julia Santos

Users can now add items under a specific Product Type

parent e4fc58d5
body {
width: 100%;
height: 100%;
margin: 0px;
width: 100%;
height: 100%;
margin: 0px;
}
.listViewHeader {
......@@ -20,61 +20,248 @@ body {
width: 100vw;
display: grid;
grid-template-columns: repeat(6, 16.67vw);
grid-template-rows: 12.5vh 87.5vh;
text-align: left;
background-color: rgba(196, 196, 196, 1);
}
.sidebar {
height: 100%;
position:fixed;
width:265px;
height: 200vh;
background-color: rgba(196, 196, 196, 1);
display: grid;
grid-template-rows: repeat(16, 6.25vh);
grid-template-columns: repeat(2, 8.33vw);
grid-column: 1/2;
z-index:1;
left:0;
}
.sideItem {
grid-template-columns: repeat(2, 12.5vw);
text-align: center;
display: grid;
background-color: rgba(104, 104, 104, 1);
opacity: 0.7;
transform: none;
}
.text {
.sideText {
font-family: "Roboto";
font-size: 24px;
color: white;
grid-column: 2/3;
margin-right: 5px;
text-align: right;
}
.icon {
#fridgeIcon {
background-color: white;
clip-path: circle();
height: 15vh;
grid-row: 1/6;
grid-column: 1/2;
margin: 10px;
}
.circle {
margin: 5px;
#recipesIcon {
background-color: white;
clip-path: circle();
height: 15vh;
grid-row: 4/9;
grid-column: 1/2;
margin: 10px;
}
#statsIcon {
background-color: white;
clip-path: circle();
height: 15vh;
grid-row: 7/12;
grid-column: 1/2;
margin: 10px;
}
#toBuyIcon {
background-color: white;
clip-path: circle();
height: 15vh;
grid-row: 10/15;
grid-column: 1/2;
margin: 10px;
}
.fridge {
grid-row: 3/4;
grid-column: 1/3;
}
.recipes {
grid-row: 6/7;
grid-column: 1/3;
}
.stats {
grid-row: 9/10;
grid-column: 1/3;
}
.toBuy {
grid-row: 12/13;
grid-column: 1/3;
}
.pageSubhead {
grid-column: 2/7;
grid-row: 1/2;
background-color: white;
display: grid;
grid-template-columns: 3vw repeat(6, 15.67vw) 3vw;
}
.subheader {
font-family: "Roboto Medium";
font-size: 10vh;
grid-column: 2/3;
text-align: center;
}
.addItem {
grid-column: 3/4;
}
.addItemButton {
margin-top: 35px;
margin-left: 20px;
margin-right: 20px;
background-color: rgba(175, 175, 175, 1);
border-radius: 100px;
opacity: 0.7;
transform: none;
}
.addItemText {
font-family: "Roboto Medium";
font-size: 18px;
color: white;
text-align: center;
}
.changeView {
background-color: rgba(228, 228, 228, 1);
font-family: "Roboto Medium";
font-size: 14px;
grid-column: 5/6;
margin-top: 35px;
text-align: center;
}
.listView {
grid-column: 2/7;
grid-row: 2/3;
background-color: white;
display: grid;
grid-template-columns: 3vw repeat(3, 23vw) 3vw;
grid-template-rows: repeat(4, 20vh);
grid-column-gap: 3vw;
grid-row-gap: 3vw;
}
.listItem {
background-color: rgba(237, 237, 237, 1);
display: grid;
grid-template-columns: 10vw 15vw;
grid-template-rows: repeat(5, 5vh);
opacity: 0.7;
transform: none;
}
#listIcon {
grid-column: 1/2;
grid-row: 1/5;
text-align: center;
clip-path: circle();
background-color: rgba(196, 196, 196, 1);
margin: 5px;
}
.listText {
grid-column: 2/3;
text-align: left;
margin: 10px;
}
.daysLeft {
font-family: "Roboto Black";
font-size: 24px;
}
.product {
font-family: "Roboto Regular";
font-size: 20px;
}
.category {
font-family: "Roboto Regular";
font-size: 14px;
}
.one {
grid-column: 2/3;
grid-row: 1/2;
}
.two {
grid-column: 2/3;
grid-row: 2/3;
}
.three {
grid-column: 2/3;
grid-row: 3/4;
}
.four {
grid-column: 2/3;
grid-row: 4/5;
}
.five {
grid-column: 3/4;
grid-row: 1/2;
}
.six {
grid-column: 3/4;
grid-row: 2/3;
}
.seven {
grid-column: 3/4;
grid-row: 3/4;
}
.eight {
grid-column: 3/4;
grid-row: 4/5;
}
.nine {
grid-column: 4/5;
grid-row: 1/2;
}
.ten {
grid-column: 4/5;
grid-row: 2/3;
}
.eleven {
grid-column: 4/5;
grid-row: 3/4;
}
.twelve {
grid-column: 4/5;
grid-row: 4/5;
}
@font-face {
font-family: Roboto Bold;
src: url(Roboto-Bold.ttf);
font-family: Roboto Bold;
src: url(Roboto-Bold.ttf);
}
@font-face {
font-family: Roboto;
src: url(Roboto-Regular.ttf);
font-family: Roboto Black;
src: url(Roboto-Black.ttf);
}
@font-face {
font-family: Roboto Medium;
src: url(Roboto-Medium.ttf);
}
@font-face {
font-family: Roboto;
src: url(Roboto-Regular.ttf);
}
.sideItem:hover {
opacity: 1;
transition: opacity .5s;
}
.listItem:hover {
opacity: 1;
transition: opacity .5s;
}
.addItemButton:hover {
opacity: 1;
transition: opacity .5s;
}
.main{
margin-left:23%;
}
\ No newline at end of file
margin-left: 23%;
}
......@@ -47,7 +47,7 @@
</div>
<h2>Fridge</h2>
<table style="width:70%" div class="main">
<tr><th colspan="5"><a href="{{request.path}}add"> Add Item</a></th></tr>
<tr><th colspan="5"><a href="{{request.path}}add"> Add</a></th></tr>
<tr>
<th><a href="http://127.0.0.1:8000/fridge/{{object_list.Product_ID}}">Name</a></th>
<th><a href="http://127.0.0.1:8000/fridge/{{object_list.Product_ID}}">Description</a></th>
......
......@@ -8,47 +8,55 @@
border: 1px solid black;
}
</style>
<div class = "listViewHeader">
<div class = "listViewHeader">
<div class = "breadcrumbsHead">
BREADCRUMBS
</div>
</div>
<div class = "lowerPage">
<div class = "sidebar">
<div class = "sideItem text fridge">
FRIDGE
</div>
<div class = "sideItem icon fridge">
<div class = "circle"> :3 </div>
<div class = "sideItem fridge">
<div class = " sideText"> FRIDGE </div>
</div>
<img id= "fridgeIcon" src= "" alt= "a flat icon of a refrigerator";>
<div class = "sideItem text recipes">
RECIPES
</div>
<div class = "sideItem icon recipes">
<div class = "circle"> :3 </div>
<div class = "sideItem recipes">
<div class = "sideText"> RECIPES </div>
</div>
<img id= "recipesIcon" src= "" alt= "a flat icon of a cook book";>
<div class = "sideItem text stats">
STATS
</div>
<div class = "sideItem icon stats">
<div class = "circle"> :3 </div>
<div class = "sideItem stats">
<div class = "sideText"> STATS </div>
</div>
<img id= "statsIcon" src= "" alt= "a flat icon of a graph";>
<div class = "sideItem text toBuy">
TO BUY
<div class = "sideItem toBuy">
<div class = "sideText"> TO BUY </div>
</div>
<div class = "sideItem icon toBuy">
<div class = "circle"> :3 </div>
<img id= "toBuyIcon" src= "" alt= "a flat icon of a shopping cart";>
</div>
<div class = "pageSubhead">
<div class = "subheader"> Fridge </div>
<div class = "addItem">
<div class = "addItemButton">
<div class = "addItemText"><a href="http://127.0.0.1:8000/fridge/add/"> ADD ITEM + </a></div>
</div>
</div>
<div class = "changeView"> LIST VIEW </div>
</div>
</div>
</div>
<h2>Fridge</h2>
<table style="width:70%" div class="main">
<tr><th colspan="5"><a href="http://127.0.0.1:8000/fridge/add/"> Add Item</a></th></tr>
<tr><th></th>
<th><a href="http://127.0.0.1:8000/fridge/list/">name</a></th>
<th><a href="http://127.0.0.1:8000/fridge/list-category">category</a></th>
......
......@@ -11,11 +11,11 @@ urlpatterns = [
url(r'^fridge/list-category', ProductListViewCategory.as_view(), name='fridgeLC'),
url('accounts/', include('django.contrib.auth.urls')),
#url('', ProductListView.as_view(), name='home'),
path('fridge/add/', add_product_type, name = 'product-type-form'),
path('fridge/add/', add_product_type, name = 'product-type-form'),
#path('fridge/<pk>/delete', ProductTypeDeleteView.as_view()),
path('fridge/<id>/delete', delete_product_type, name='product-type-delete'),
url(r'^fridge/(?P<Product_ID>\d+)/$', ItemViewPDate.as_view(), name='item-purchase-date-view'),
path('fridge/<id>/add/', add_item, name = 'add-item'),
path('fridge/<id>/add', add_item, name = 'add-item'),
]
if settings.DEBUG:
......
from django.views.generic import ListView
from django.db.models import Q
from .forms import LoginForm, ProductTypeForm
from .forms import LoginForm, ProductTypeForm, AddItemForm
from django.http import HttpResponseRedirect
from django.shortcuts import render, get_object_or_404#, render_to_response
from django.forms import ValidationError
......@@ -104,8 +104,9 @@ class ItemViewPDate(ListView):
def add_item(request, id):
context = {}
obj = get_object_or_404(Product_Type,Product_ID = id)
if request.method == 'POST':
form = AddItemForm(request.POST, request.FILES)
form = AddItemForm(request.POST)
if form.is_valid():
#the name in quotation marks should match the name in the form
item_qty = form.cleaned_data.get("Item_Quantity")
......@@ -114,12 +115,13 @@ def add_item(request, id):
purchase_date = form.cleaned_data.get("Purchase_Date")
exp_date = form.cleaned_data.get("Expiration_Date")
is_consumed = form.cleaned_data.get("Is_Consumed")
product_type = id
product_type = obj
user_id = request.user
#equating the variables you just declared with the object youre creating
instance = Item.objects.create(Item_Quantity = item_qty, Quantity_Unit = qty_unit, Item_Description = item_description, Purchase_Date = purchase_date, Expiration_Date = exp_date, Is_Consumed = is_consumed, Product_ID = product_type)
instance = Item.objects.create(Item_Quantity = item_qty, Quantity_Unit = qty_unit, Item_Description = item_description, Purchase_Date = purchase_date, Expiration_Date = exp_date, Is_Consumed = is_consumed, Product_ID = product_type, User_ID = user_id)
instance.save()
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
return HttpResponseRedirect('/fridge/'+str(obj.Product_ID))
else:
form = ProductTypeForm()
form = AddItemForm()
context['form'] = form
return render(request,'add-product-type.html',context)
\ No newline at end of file
return render(request,'add-item.html',context)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment