KEMBAR78
Food Ordering System | PDF | User (Computing) | Login
0% found this document useful (0 votes)
34 views71 pages

Food Ordering System

Uploaded by

srhdell7
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views71 pages

Food Ordering System

Uploaded by

srhdell7
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 71

AKANKSHA SINGH

ONLINE FOOD ORDERING

PARADISE COMPUTER
EDUCATION

1549242

Mr. JITENDRA VERMA


Screenshot of the Project
Online Food Ordering
System
Code of the Project
Online Food Ordering
System

<!DOCTYPE html>

<html>
<head>

{% load staticfiles %}

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

<title>{% block title %}FoodApp{% endblock title %}</title>

<link rel="stylesheet" type="text/css" href="{% static


'webapp/css/bootstrap.min.css'%}">

<link href="/static/webapp/css/style.css" rel="stylesheet" type="text/css" media="all" />

<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/font-


awesome/4.5.0/css/font-awesome.min.css' >

<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"
rel="stylesheet">

<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,700'
rel='stylesheet' type='text/css'>

<link href='http://fonts.googleapis.com/css?
family=Lobster+Two:400,400italic,700,700italic' rel='stylesheet' type='text/css'>

<!--Animation-->

<script src="/static/webapp/js/wow.min.js"></script>

<link href="static/webapp/css/animate.css" rel='stylesheet' type='text-center/css' />

</head>

<body>

<nav class="navbar navbar-expand-lg navbar-light bg-dark">

<div class="container">
<div class="navbar-collapse collapse w-100 dual-collapse2 order-1
order-md-0">

<ul class="navbar-nav ml-auto text-center">

<li class="nav-item active">

<a class="nav-link text-light" href="{% url 'index' %}"><font size="3">&nbsp;


<strong>Home</strong> </font></a>

</li>

<li class="nav-item">

<a class="nav-link text-light" href="{% url 'restuarant' %}"><font


size="3">&nbsp;<strong>Restuarants</strong></font></a>

</li>

</ul>

</div>

<div class="mx-auto my-2 order-0 order-md-1 position-relative">

<a class="mx-auto" href="#">

<img src="/static/webapp/images/logo.png" style="height: 90px;width: 170px;"


alt="Home" class="rounded-circle img-responsive">

</a>

<button class="navbar-toggler" type="button" data-toggle="collapse" data-


target=".dual-collapse2">

<span class="navbar-toggler-icon"></span>

</button>

</div>

<div class="navbar-collapse collapse w-100 dual-collapse2 order-2 order-md-2">

<ul class="navbar-nav mr-auto text-center">

{% if request.user.is_authenticated %}
<li class="nav-item">

<a class="nav-link text-light" href="{% url 'logout' %}"><font size="3">


&nbsp;<span aria-hidden="true"></span><strong>LogOut </strong> </font></a>

</li>

<li class="nav-item">

<a class="nav-link text-light" href="{% url 'profile' %}"><font size="3">


&nbsp;<span aria-hidden="true"></span><strong>My Profile</strong></font></a>

</li>

{% else %}

<li class="nav-item">

<a class="nav-link text-light" href="{% url 'login' %}"><font


size="3">&nbsp;<span aria-hidden="true"></span> <strong>LogIn</strong></font></a>

</li>

<li class="nav-item">

<a class="nav-link text-light" href="{% url 'register' %}"><font


size="3">&nbsp;<span aria-hidden="true"></span>
<strong>SignUp</strong></font></a>

</li>

{% endif %}

</ul>

</div>

</div>

</nav>

{% block body %}{% endblock %}

<br>

<br>

<br>
<br>

<div class="footer">

<div class="container-fluid">

<div class="footer-copyright text-center py-3">© 2018 Copyright:

<a href="http://www.sambhram.org/sams.html"> SAMS </a>

</div>

</div>

</div>

<script type="text/javascript" src="{%static 'webapp/js/jquery.min.js'%}">

</script>

<script type="text/javascript" src="{%static


'webapp/js/bootstrap.min.js'%}"></script>

<script>

new WOW().init();

</script>

<script src="/static/webapp/js/simpleCart.min.js"> </script>

<script type="text/javascript" src="/static/webapp/js/move-top.js"></script>

<script type="text/javascript" src="/static/webapp/js/easing.js"></script>

</body>

</html>

<!DOCTYPE html>

<html>

<head>
{% load staticfiles %}

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

<title>{% block title %}FoodApp{% endblock title %}</title>

<link rel="stylesheet" type="text/css" href="{% static


'webapp/css/bootstrap.min.css'%}">

<link href="/static/webapp/css/style.css" rel="stylesheet" type="text/css" media="all" />

<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/font-


awesome/4.5.0/css/font-awesome.min.css' >

<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"
rel="stylesheet">

<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,700'
rel='stylesheet' type='text/css'>

<link href='http://fonts.googleapis.com/css?
family=Lobster+Two:400,400italic,700,700italic' rel='stylesheet' type='text/css'>

<!--Animation-->

<script src="/static/webapp/js/wow.min.js"></script>

<link href="static/webapp/css/animate.css" rel='stylesheet' type='text-center/css' />

</head>

<body>

<nav class="navbar navbar-expand-lg navbar-light bg-dark">

<div class="container-fluid">
<div class="navbar-collapse collapse w-100 dual-collapse2 order-1
order-md-0">

<ul class="navbar-nav ml-auto text-center">

<li class="nav-item active">

<a class="nav-link text-light" href="{% url 'index' %}"><font size="3">&nbsp;


<strong>Home</strong> </font></a>

</li>

<li class="nav-item">

<a class="nav-link text-light" href="{% url 'mmenu' %}"><font


size="3">&nbsp;<strong>Menu </strong></font></a>

</li>

<li class="nav-item">

<a class="nav-link text-light" href="{% url 'orderlist' %}"><font


size="3">&nbsp;<strong>Orders</strong></font></a>

</li>

</ul>

</div>

<div class="mx-auto my-2 order-0 order-md-1 position-relative">

<a class="mx-auto" href="#">

<img src="/static/webapp/images/logo.png" style="height: 90px;width: 170px;"


alt="Home" class="rounded-circle img-responsive">

</a>

<button class="navbar-toggler" type="button" data-toggle="collapse" data-


target=".dual-collapse2">

<span class="navbar-toggler-icon"></span>

</button>
</div>

<div class="navbar-collapse collapse w-100 dual-collapse2 order-2 order-md-2">

<ul class="navbar-nav mr-auto text-center">

{% if request.user.is_authenticated %}

<li class="nav-item">

<a class="nav-link text-light " href="{% url 'logout' %}"><font size="3">


&nbsp;<span aria-hidden="true"></span><strong>LogOut </strong> </font></a>

</li>

<li class="nav-item">

<a class="nav-link text-light " href="{%url 'rprofile' %}"><font size="3">


&nbsp;<span aria-hidden="true"></span><strong>Profile</strong></font></a>

</li>

{% else %}

<li class="nav-item">

<a class="nav-link text-light " href="{% url 'rlogin' %}"><font


size="3">&nbsp;<span aria-hidden="true"></span> <strong>LogIn</strong></font></a>

</li>

<li class="nav-item">

<a class="nav-link text-light " href="{% url 'rregister' %}"><font


size="3">&nbsp;<span aria-hidden="true"></span> <strong>Join
Us</strong></font></a>

</li>

{% endif %}

</ul>

</div>

</div>

</nav>
{% block body %}

{% endblock %}

<br>

<br>

<br>

<br>

<div class="footer">

<div class="container-fluid">

<div class="footer-copyright text-center py-3">© 2018 Copyright:

<a href="http://www.sambhram.org/sams.html"> SAMS </a>

</div>

</div>

</div>

<script type="text/javascript" src="{%static 'webapp/js/jquery.min.js'%}">

</script>

<script type="text/javascript" src="{%static 'webapp/js/bootstrap.min.js'%}"></script>

<script>

new WOW().init();

</script>

<script src="/static/webapp/js/simpleCart.min.js"> </script>

<script type="text/javascript" src="/static/webapp/js/move-top.js"></script>


<script type="text/javascript" src="/static/webapp/js/easing.js"></script>

</body>

</html>

{% for field in form %}

<div class="form-group">

<div class="col-sm-offset-2 col-sm-12">

<span class="text-danger small">{{ field.errors }}</span>

</div>

<label class="control-label col-sm-4">{{ field.label_tag }}</label>

<div class="col-sm-7">{{ field }}</div>

</div>

{% endfor %}

<!DOCTYPE html>

<html>

<head>

{% load staticfiles %}

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

<title>{% block title %}FoodApp{% endblock title %}</title>

<link rel="stylesheet" type="text/css" href="{% static


'webapp/css/bootstrap.min.css'%}">
<link href="/static/webapp/css/style.css" rel="stylesheet" type="text/css" media="all" />

<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/font-


awesome/4.5.0/css/font-awesome.min.css' >

<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,700'
rel='stylesheet' type='text/css'>

<link href='http://fonts.googleapis.com/css?
family=Lobster+Two:400,400italic,700,700italic' rel='stylesheet' type='text/css'>

<!--Animation-->

<script src="/static/webapp/js/wow.min.js"></script>

<link href="static/webapp/css/animate.css" rel='stylesheet' type='text-center/css' />

<style type="text/css">

.big-banner{

background-image: url('/static/webapp/images/slide_1.jpg');

.i-am-center{

margin-left:26%; max-width: 100%;

.borders{

background-color: blue;

border-radius: 10px;

padding: 20px;

.wrapper {

min-height: 100%;

height: 100%;
margin: 0 auto -155px;

.footer, .push {

height: 155px;

</style>

</head>

<body>

<nav class="navbar navbar-expand-lg navbar-light bg-dark navbar-fixed-top">

<div class="container-fluid">

<div class="navbar-collapse collapse w-100 dual-collapse2 order-1


order-md-0">

<ul class="navbar-nav ml-auto text-center">

<li class="nav-item active">

<a class="nav-link text-light" href="{% url 'restuarant'%}">&nbsp; <strong>For


Customer</strong> </a>

</li>

</ul>

</div>

<div class="mx-auto my-2 order-0 order-md-1 position-relative">

<a class="mx-auto" href="#">

<img src="/static/webapp/images/logo.png" style="height: 80px;" alt="Home"


class="rounded-circle img-responsive">

</a>

<button class="navbar-toggler" type="button" data-toggle="collapse" data-


target=".dual-collapse2">
<span class="navbar-toggler-icon"></span>

</button>

</div>

<div class="navbar-collapse collapse w-100 dual-collapse2 order-2 order-md-2">

<ul class="navbar-nav mr-auto text-center">

<li class="nav-item">

<a class="nav-link text-light" href="{% url 'rlogin'%}"> &nbsp;<strong>For


Restaurants</strong> </a>

</li>

</ul>

</div>

</div>

</nav>

<div class="jumbotron big-banner" style="height: 500px; width: 100%; padding-


top:100px;" >

<div class="container">

<div class="row">

<div class="col">

<div class="col4 text-light ">

<h1 style="font-style:italic; font-family:sans-serif; "><strong>Feeling


Hungry</strong></h1>

<h2><strong>Register Now<br/>and<br/>Order Online</strong></h2>

</div>

<br>
<button type="button" class="btn btn-success btn-lg"><strong><a href="{% url
'register'%}" class="text-light">Register</a></strong></button>

</div>

<div class="col">

<div class="col4 text-light">

<h1 style="font-style:italic; font-family:sans-serif; "><strong>Be a Partner</strong></h1>

<h2><strong>Join Us Today<br/>and<br>Increase Your Sale</strong></h2>

</div>

<br>

<button type="button" class="btn btn-success btn-lg"><strong><a href="{% url


'rregister'%}" class="text-light">Join Us</a></strong></button>

</div>

</div>

</div>

</div>

</div>

<div class="content">

<div class="ordering-section" id="Order">

<div class="container">

<div class="ordering-section-head text-center wow bounceInRight" data-wow-


delay="0.4s">

<h3>Ordering food was never so easy</h3>

<div class="dotted-line">

<h4>Just 4 steps to follow </h4>


</div>

</div>

<div class="i-am-center">

<div class="row ">

<div class="col-sm-2 col-md-2">

<div class="thumbnail borders text-light">

<p>Choose <span>Your Restaurant</span></p>

</div>

</div>

<div class="col-sm-2 col-md-2 ">

<div class="thumbnail borders text-light">

<p>Order <span>Your Cuisine</span></p>

</div>

</div>

<div class="col-sm-2 col-md-2">

<div class="thumbnail borders text-light" >

<p>Pay <span> online </span></p>

<label></label>

</div>

</div>

<div class="col-sm-2 col-md-2">

<div class="thumbnail borders text-light">

<p>Enjoy <span>your food </span></p>

<label></label>
</div>

</div>

<div class="clearfix"></div>

</div>

</div>

</div>

</div>

</div>

<div class="container col-md-9">

<div class="top-restaurent-head">

<h3>Top Restaurants</h3>

</div>

<div class="row">

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/restaurent-2.jpg" class="img-responsive" alt="" />

</a>

</div>

</div>

<br>
<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/restaurent-3.jpg" class="img-responsive" alt="" />

</a>

</div>

</div>

<br>

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/restaurent-4.jpg" class="img-responsive" alt="" />

</a>

</div>

</div>

<br>

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/restaurent-5.jpg" class="img-responsive" alt="" />

</a>

</div>
</div>

<br>

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/restaurent-6.jpg" class="img-responsive" alt="" />

</a>

</div>

</div>

</div>

</div>

<br>

<br>

<div class="container col-md-9">

<div class="top-cuisine-head">

<h3>Top Cuisines</h3>

</div>

<div class="row">

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">
<img src="/static/webapp/images/cuisine1.jpg" class="img-responsive"
alt="" />

</a>

</div>

<div class="caption border col-sm-4">

<h5 class="text-secondary"><strong>Pizza</strong></h5>

</div>

</div>

<div class="col-md-4 mb-3">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/cuisine2.jpg" class="img-responsive"


alt="" />

</a>

</div>

<div class="caption border col-sm-4">

<h5 class="text-secondary"><strong>Burger</strong></h5>

</div>

</div>

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/cuisine3.jpg" class="img-responsive"


alt="" />

</a>
</div>

<div class="caption border col-sm-6">

<h5 class="text-secondary"><strong>Dough Nut</strong></h5>

</div>

</div>

<div class="col-md-4 mb-3">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/cuisine4.jpg" class="img-responsive"


alt="" />

</a>

</div>

<div class="caption border col-sm-4">

<h5 class="text-secondary"><strong>Curry</strong></h5>

</div>

</div>

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/cuisine5.jpg" class="img-responsive"


alt="" />

</a>

</div>

<div class="caption border col-sm-4">

<h5 class="text-secondary"><strong>trips</strong></h5>

</div>
</div>

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/cuisine6.jpg" class="img-responsive"


alt="" />

</a>

</div>

<div class="caption border col-md-6">

<h5 class="text-secondary"><strong>Frawn Rice</strong></h5>

</div>

</div>

<div class="col-md-4 ">

<div class="thumbnail">

<a href="">

<img src="/static/webapp/images/cuisine7.jpg" class="img-responsive"


alt="" />

</a>

</div>

<div class="caption border col-md-4">

<h5 class="text-secondary"><strong>Fingers</strong></h5>

</div>

</div>

<div class="col-md-6 ">

<div class="thumbnail">
<img src="/static/webapp/images/cuisine8.jpg" class="img-responsive"
alt="" />

<div class="caption border col-md-3">

<h5 class="text-secondary"><strong>Cuisine</strong></h5>

</div>

</div>

</div>

<div class="clearfix"></div>

</div>

</div>

<br>

<br>

<br>

<div class="footer">

<div class="container">

<div class="footer-copyright text-center py-3">© 2019 Copyright:

<a href="http://www.sambhram.org/sams.html"> SAMS </a>

</div>

</div>

<script type="text/javascript" src="{%static 'webapp/js/jquery.min.js'%}">


</script>

<script type="text/javascript" src="{%static


'webapp/js/bootstrap.min.js'%}"></script>

<script>

new WOW().init();

</script>

<script src="/static/webapp/js/simpleCart.min.js"> </script>

<script type="text/javascript" src="/static/webapp/js/move-top.js"></script>

<script type="text/javascript" src="/static/webapp/js/easing.js"></script>

</body>

</html>

{% extends 'webapp/base.html'%}

{% block title %}Log In{% endblock %}

{% block body %}

<div class="container col-md-8">

<div class="row">

<div class="col-sm-12 col-md-6 col-md-offset-3">

<div class="panel panel-default">

<div class="panel-body">

<br>

<br>

<br>
<br>

<h3 class="col-sm-4 col-md-offset-4">Log In</h3>

{% if error_message %}

<p><strong>{{ error_message }}</strong></p>

{% endif %}

<br>

<form class="form-horizontal" role="form" action="#" method="post"


enctype="multipart/form-data">

{% csrf_token %}

<div class="form-group">

<label class="control-label col-sm-2" for="id_username">

Username:

</label>

<div class="col-sm-6">

<input id="id_username" maxlength="30" name="username" type="text">

</div>

</div>

<div class="form-group">

<label class="control-label col-sm-2" for="id_password">

Password:

</label>

<div class="col-sm-7">

<input id="id_password" maxlength="30" name="password" type="password">

</div>

</div>
<div class="form-group">

<div class="col-sm-offset-2 col-sm-10">

<button type="submit" class="btn btn-success">Submit</button>

</div>

</div>

</form>

</div>

<div class="panel-footer">

Don't have an account? <a href="{% url 'register' %}">Click here</a> to register.

</div>

</div>

</div>

</div>

</div>

<br>

<br>

{% endblock %}

{% extends 'webapp/base.html'%}

{% block title %}Menu{% endblock %}

{% block body %}

<div class="container">

<h1 class="text-info mb-2"><font size="6"><strong>{{rname}}</strong></font></h1>

<p>
<font size="3"><b>Info : </b><a class="text-success"><strong>{{rinfo|
safe}}</strong></a>

<br/>

<b>Location: </b><a class="text-success"><strong>{{rlocation}}</strong></a>

<br>

<b >Min Order:</b> <a class="text-success">&#x20b9;{{rmin}}</a>

</font>

</p>

</div>

<br>

<div class="container">

<input type="button" class="btn btn-success btn-lg pull-right" onclick="storearray();"


value="Checkout"/>

</div>

<div class="container ">

<h3 class="text-danger"><font size="5"><strong>Menu</strong></font></h3>

<br>

<table class="table table-hover table-bordered">

<thead>

<th>Item Name</th>

<th>Category</th>

<th>Price</th>

<th>Add</th>

</thead>

{% for x in items %}
<tr>

<td>{{x.0}}</td>

<td>{{x.1}}</td>

<td>&#x20b9; {{x.2}}</td>

{% if x.4 == "Open" %}

{% if x.5 > 0 %}

<td>

<div class="form-group" style="width:40%;">

<div class="input-group-btn">

<button id="down" class="btn btn-default"

onclick="if(document.querySelector('#itemno{{x.3}}').innerHTML>0){

document.querySelector('#itemno{{x.3}}').innerHTML--;

minuscounter('{{x.3}}');

}">

<span class="glyphicon glyphicon-minus"></span></button>

</div>

<span id='itemno{{x.3}}'> 0 </span>

<div class="input-group-btn">

<button id="up" class="btn btn-default"

onclick="

if(document.querySelector('#itemno{{x.3}}').innerHTML<{{x.5}}){

document.querySelector('#itemno{{x.3}}').innerHTML++;

pluscounter('{{x.3}}');

}"><span class="glyphicon glyphicon-plus"></span></button>


</div>

</div>

</td>

{% else %}

<td>

NA

</td>

{% endif %}

{% else %}

<td>

Closed

</td>

{% endif %}

</tr>

{% endfor %}

</tr>

</table>

</div>

<br>

<script type="text/javascript">

var cart = [];

function pluscounter(pk){

cart.push(pk);

console.log(cart);
};

function minuscounter(pk){

if (cart!=[]){

var removeindex = cart.indexOf(pk);

cart.splice(removeindex, 1);

console.log(cart);

};

function storearray(){

if(cart.length === 0)

alert('No items selected');

return false;

document.cookie = "cart="+cart+";Path=/";

document.cookie ="rest={{restid}};Path=/";

window.location = "/checkout/";

};

</script>

{% endblock %}

{% extends 'webapp/base.html'%}

{% block title %} Cart {% endblock %}


{% block body %}

<div class="container ">

<br>

<h3 class="text-info"><strong>Order Information :</strong></h3>

<br>

<table class="table table-hover table-bordered">

<thead>

<th>Item Name</th>

<th>Quantity</th>

<th>Price</th>

</thead>

{% for x in items %}

<tr><td>{{x.0}}</td><td>{{x.1}}</td><td>&#x20b9; {{x.2}}</td></tr>

{% endfor %}

</table>

<br>

<span><b>Total price: </b></span><span> &#x20b9; {{totalprice}}

</span>

<br>

<br>

<form action="" method="POST">

{% csrf_token %}

<span><strong>Delivery Address:</strong></span>

<br>
<br>

<div><input type="text" name="address" style="width:60%; height: 60px;"


required/></div>

<input type="hidden" name="oid" value="{{oid}}">

<br>

<input type="submit" class="btn btn-success btn-lg" value="Order" name="submit">

</form>

</div>

{% endblock %}

{% extends 'webapp/base2.html' %}

{% block title %}Order List{% endblock %}

{% block body %}

{% for order in orders %}

<div class="container">

<div class="col-md-12 restaurent-title">

<div class="logo-title" style="border: 0;">

<h4>{{order.0}} - {{order.1}} - {{order.6}}</h4>

</div>

</div>

<div class="col-md-12 order-form-grid wow fadeInLeft">

<h5>Order Information</h5>
<span>Items List:</span>

<div>

<table class="table table-hover table-bordered">

<thead>

<th>

Name

</th>

<th>

Quantity

</th>

<th>

Price

</th>

</thead>

{% for x in order.2 %}

<tr><td>{{x.0}}</td><td>{{x.1}}</td><td>&#x20b9;{{x.2}}</td></tr>

{% endfor %}

</table>

</div>

</div>

<div class="col-md-12 buy" style="display: inline-block;">

<form action="" method="POST">{% csrf_token %}

<span>Total price: &#x20b9;{{order.3}}</span>

<span style="display: inline;">Status:</span>

<select name="orderstatus">
{% if order.5 == 1 %}

<option value="1" selected>Placed</option>

<option value="2">Acknowledged</option>

<option value="3">Completed</option>

<option value="4">Dispatched</option>

<option value="5">Cancelled</option>

{% endif %}

{% if order.5 == 2 %}

<option value="1">Placed</option>

<option value="2" selected>Acknowledged</option>

<option value="3">Completed</option>

<option value="4">Dispatched</option>

<option value="5">Cancelled</option>

{% endif %}

{% if order.5 == 3 %}

<option value="1">Placed</option>

<option value="2">Acknowledged</option>

<option value="3" selected>Completed</option>

<option value="4">Dispatched</option>

<option value="5">Cancelled</option>

{% endif %}

{% if order.5 == 4 %}

<option value="1">Placed</option>

<option value="2">Acknowledged</option>

<option value="3">Completed</option>
<option value="4" selected>Dispatched</option>

<option value="5">Cancelled</option>

{% endif %}

{% if order.5 == 5 %}

<option value="1">Placed</option>

<option value="2">Acknowledged</option>

<option value="3">Completed</option>

<option value="4">Dispatched</option>

<option value="5" selected>Cancelled</option>

{% endif %}

</select>

<input type="hidden" name="orderid" value="{{order.4}}">

<input type="submit" value="Set" name="submit"/>

</form>

</div>

<div class="clearfix"></div>

</div>

{% endfor %}

{% endblock %}

{% extends 'webapp/base.html'%}

{% block title %}orderplaced{% endblock %}

{% block body %}
<div class="container">

<br>

<h1 class="text-center"><strong>Thank You For Placing Order</strong></h1>

<br>

<h2 class="text-center"><strong>Waiting for Confirmation</strong></h2>

<br>

<br>

<h3 class="text-center"><a href="{% url 'restuarant'%}"><strong>Go


back</strong></a></h3>

</div>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

<br>

{% endblock%}

{% extends 'webapp/base.html'%}

{% block title %}Profile{% endblock %}

{% block body %}
<br>

<div class="container col-md-8">

<div class="row">

<div class=" col-md-11 toppad">

<div class="panel panel-info">

<div class="panel-heading">

<h3 class="panel-title text-info "><strong>{{user.customer.f_name}}


{{user.customer.l_name}}</strong></h3>

</div>

<br>

<div class="panel-body">

<div class="row">

<div class=" col-md-9 col-lg-9 ">

<table class="table table-user-information">

<tbody>

<tr>

<td>User Name:</td>

<td>{{user.username}}</td>

</tr>

<tr>

<td>First Name:</td>

<td>{{user.customer.f_name}}</td>
</tr>

<tr>

<td>Last Name:</td>

<td>{{user.customer.l_name}}</td>

</tr>

<tr>

<td>City:</td>

<td>{{user.customer.city}}</td>

</tr>

<td>Address:</td>

<td>{{user.customer.address}}</td>

</tr>

<tr>

<td>Email:</td>

<td><a href="#">{{user.email}}</a></td>

</tr>

<tr>

<td>Phone Number:</td>

<td>{{user.customer.phone}}

</td>

</tr>

</tbody>
</table>

<div class="container">

<div class="row">

<div class="col">

<a class="btn btn-success btn-lg" href="{% url 'cupdate' user.id %}">Edit</a>

</div>

<!--<div class="col">

<a class="btn btn-success btn-lg" href="{%url 'ccreate' %}">Complete profile</a>

</div>-->

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<br>

{% endblock%}

{% extends 'webapp/base2.html'%}

{% block title %}Profile{% endblock %}

{% block body %}
<br>

<div class="container col-md-8">

<img src="{{user.restaurant.r_logo.url}}" height="180px" width="60%">

</div>

<br>

<div class="container col-md-8">

<div class="row">

<div class=" col-md-11 toppad">

<div class="panel panel-info">

<div class="panel-heading">

<h1 class="panel-title text-info "><strong>{{user.restaurant.rname}}</strong></h1>

</div>

<div class="panel-body">

<div class="row">

<div class=" col-md-9 col-lg-9 ">

<table class="table table-user-information">

<tbody>

<tr>

<td> Restaurant UserName:</td>

<td>{{user.username}}</td>

</tr>
<tr>

<td>Name:</td>

<td>{{user.restaurant.rname}}</td>

</tr>

<tr>

<td>info:</td>

<td>{{user.restaurant.info}}</td>

</tr>

<tr>

<td>Location:</td>

<td>{{user.restaurant.location}}</td>

</tr>

<tr>

<td>Status:</td>

<td>{{user.restaurant.status}}</td>

</tr>

<tr>

<td>Approved:</td>

<td>{{user.restaurant.approved}}</td>

</tr>

<tr>

<td>Email:</td>

<td><a href="#">{{user.email}}</a></td>

</tr>
</tbody>

</table>

<div class="container">

<div class="row">

<div class="col">

<a class="btn btn-success btn-lg" href="{% url 'rupdate' user.id %}">Edit</a>

</div>

<!--<div class="col">

<a class="btn btn-success btn-lg" href="{%url 'rcreate' %}">Complete profile</a>

</div>-->

</div>

</div>

</div>

</div>

</div>

</div>

</div>

{% endblock%}

Business logic

from django.contrib.auth.forms import UserCreationForm

from django import forms


from .models import User,Customer,Restaurant,Item,Menu

class CustomerSignUpForm(forms.ModelForm):

password = forms.CharField(widget=forms.PasswordInput)

class Meta:

model = User

fields=['username','email','password']

def save(self, commit=True):

user = super().save(commit=False)

user.is_customer=True

if commit:

user.save()

return user

class RestuarantSignUpForm(forms.ModelForm):

password = forms.CharField(widget=forms.PasswordInput)

class Meta:

model =User

fields=['username','email','password']

def save(self,commit=True):

user=super().save(commit=False)

user.is_restaurant=True

if commit:

user.save()

return user
class CustomerForm(forms.ModelForm):

class Meta:

model = Customer

fields =['f_name','l_name','city','phone','address']

class RestuarantForm(forms.ModelForm):

class Meta:

model = Restaurant

fields =['rname','info','location','r_logo','min_ord','status','approved']

from django.db import models

from django.contrib.auth.models import AbstractUser

from django.conf import settings

from django.db.models.signals import post_save

class User(AbstractUser):

is_customer = models.BooleanField(default=False)

is_restaurant = models.BooleanField(default=False)

class Customer(models.Model):

user =
models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)

f_name = models.CharField(max_length=20,blank=False)
l_name = models.CharField(max_length=20,blank=False)

city = models.CharField(max_length=40,blank=False)

phone = models.CharField(max_length=10,blank=False)

address = models.TextField()

def __str__(self):

return self.user.username

class Restaurant(models.Model):

user =
models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)

rname = models.CharField(max_length=100,blank=False)

info = models.CharField(max_length=40,blank=False)

min_ord = models.CharField(max_length=5,blank=False)

location = models.CharField(max_length=40,blank=False)

r_logo = models.FileField(blank=False)

REST_STATE_OPEN = "Open"

REST_STATE_CLOSE = "Closed"

REST_STATE_CHOICES =(

(REST_STATE_OPEN,REST_STATE_OPEN),

(REST_STATE_CLOSE,REST_STATE_CLOSE)

status =
models.CharField(max_length=50,choices=REST_STATE_CHOICES,default=REST_STATE_O
PEN,blank=False)

approved = models.BooleanField(blank=False,default=True)
def __str__(self):

return self.rname

class Item(models.Model):

id = models.AutoField(primary_key=True)

fname = models.CharField(max_length=30,blank=False)

category = models.CharField(max_length=50,blank=False)

def __str__(self):

return self.fname

class Menu(models.Model):

id = models.AutoField(primary_key=True)

item_id = models.ForeignKey(Item,on_delete=models.CASCADE)

r_id = models.ForeignKey(Restaurant,on_delete=models.CASCADE)

price = models.IntegerField(blank=False)

quantity = models.IntegerField(blank=False,default=0)

def __str__(self):

return self.item_id.fname+' - '+str(self.price)

class Order(models.Model):

id = models.AutoField(primary_key=True)

total_amount = models.IntegerField(default=0)

timestamp = models.DateTimeField(auto_now_add=True)
delivery_addr = models.CharField(max_length=50,blank=True)

orderedBy = models.ForeignKey(User ,on_delete=models.CASCADE)

r_id = models.ForeignKey(Restaurant ,on_delete=models.CASCADE)

ORDER_STATE_WAITING = "Waiting"

ORDER_STATE_PLACED = "Placed"

ORDER_STATE_ACKNOWLEDGED = "Acknowledged"

ORDER_STATE_COMPLETED = "Completed"

ORDER_STATE_CANCELLED = "Cancelled"

ORDER_STATE_DISPATCHED = "Dispatched"

ORDER_STATE_CHOICES = (

(ORDER_STATE_WAITING,ORDER_STATE_WAITING),

(ORDER_STATE_PLACED, ORDER_STATE_PLACED),

(ORDER_STATE_ACKNOWLEDGED, ORDER_STATE_ACKNOWLEDGED),

(ORDER_STATE_COMPLETED, ORDER_STATE_COMPLETED),

(ORDER_STATE_CANCELLED, ORDER_STATE_CANCELLED),

(ORDER_STATE_DISPATCHED, ORDER_STATE_DISPATCHED)

status =
models.CharField(max_length=50,choices=ORDER_STATE_CHOICES,default=ORDER_STAT
E_WAITING)

def __str__(self):

return str(self.id) +' '+self.status


class orderItem(models.Model):

id = models.AutoField(primary_key=True)

item_id = models.ForeignKey(Menu ,on_delete=models.CASCADE)

ord_id = models.ForeignKey(Order,on_delete=models.CASCADE)

quantity = models.IntegerField(default=0)

def __str__(self):

return str(self.id)

from django.shortcuts import render, redirect,get_object_or_404

from django.contrib.auth import authenticate, login,logout

from .forms import


CustomerSignUpForm,RestuarantSignUpForm,CustomerForm,RestuarantForm

from django.contrib.auth.decorators import login_required

from collections import Counter

from django.urls import reverse

from django.db.models import Q

from .models import Customer,Restaurant,Item,Menu,Order,orderItem,User

#### ---------- General Side -------------------#####

# Showing index page

def index(request):

return render(request,'webapp/index.html',{})
def orderplaced(request):

return render(request,'webapp/orderplaced.html',{})

# Showing Restaurants list to Customer

def restuarent(request):

r_object = Restaurant.objects.all()

query = request.GET.get('q')

if query:

r_object=Restaurant.objects.filter(Q(rname__icontains=query)).distinct()

return render(request,'webapp/restaurents.html',{'r_object':r_object})

return render(request,'webapp/restaurents.html',{'r_object':r_object})

# logout

def Logout(request):

if request.user.is_restaurant:

logout(request)

return redirect("rlogin")

else:

logout(request)

return redirect("login")

#### -----------------Customer Side---------------------- ######


# Creating Customer Account

def customerRegister(request):

form =CustomerSignUpForm(request.POST or None)

if form.is_valid():

user = form.save(commit=False)

username = form.cleaned_data['username']

password = form.cleaned_data['password']

user.is_customer=True

user.set_password(password)

user.save()

user = authenticate(username=username,password=password)

if user is not None:

if user.is_active:

login(request,user)

return redirect("ccreate")

context ={

'form':form

return render(request,'webapp/signup.html',context)

# Customer Login

def customerLogin(request):

if request.method=="POST":

username = request.POST['username']

password = request.POST['password']
user = authenticate(username=username,password=password)

if user is not None:

if user.is_active:

login(request,user)

return redirect("profile")

else:

return render(request,'webapp/login.html',{'error_message':'Your
account disable'})

else:

return render(request,'webapp/login.html',{'error_message': 'Invalid


Login'})

return render(request,'webapp/login.html')

# customer profile view

def customerProfile(request,pk=None):

if pk:

user = User.objects.get(pk=pk)

else:

user=request.user

return render(request,'webapp/profile.html',{'user':user})

#Create customer profile

def createCustomer(request):

form = CustomerForm(request.POST or None)


if form.is_valid():

instance = form.save(commit=False)

instance.user = request.user

instance.save()

return redirect("profile")

context={

'form':form,

'title':"Complete Your profile"

return render(request,'webapp/profile_form.html',context)

# Update customer detail

def updateCustomer(request,id):

form = CustomerForm(request.POST or None,instance=request.user.customer)

if form.is_valid():

form.save()

return redirect('profile')

context={

'form':form,

'title':"Update Your profile"

return render(request,'webapp/profile_form.html',context)

def restuarantMenu(request,pk=None):
menu = Menu.objects.filter(r_id=pk)

rest = Restaurant.objects.filter(id=pk)

items =[]

for i in menu:

item = Item.objects.filter(fname=i.item_id)

for content in item:

temp=[]

temp.append(content.fname)

temp.append(content.category)

temp.append(i.price)

temp.append(i.id)

temp.append(rest[0].status)

temp.append(i.quantity)

items.append(temp)

context = {

'items' : items,

'rid' : pk,

'rname': rest[0].rname,

'rmin' : rest[0].min_ord,

'rinfo' : rest[0].info,

'rlocation':rest[0].location,

return render(request,'webapp/menu.html',context)
@login_required(login_url='/login/user/')

def checkout(request):

if request.POST:

addr = request.POST['address']

ordid = request.POST['oid']

Order.objects.filter(id=int(ordid)).update(delivery_addr = addr,

status=Order.ORDER_STATE_PLACED)

return redirect('/orderplaced/')

else:

cart = request.COOKIES['cart'].split(",")

cart = dict(Counter(cart))

items = []

totalprice = 0

uid = User.objects.filter(username=request.user)

oid = Order()

oid.orderedBy = uid[0]

for x,y in cart.items():

item = []

it = Menu.objects.filter(id=int(x))

if len(it):

oiid=orderItem()

oiid.item_id=it[0]

oiid.quantity=int(y)

oid.r_id=it[0].r_id

oid.save()

oiid.ord_id =oid
oiid.save()

totalprice += int(y)*it[0].price

item.append(it[0].item_id.fname)

it[0].quantity = it[0].quantity - y

it[0].save()

item.append(y)

item.append(it[0].price*int(y))

items.append(item)

oid.total_amount=totalprice

oid.save()

context={

"items":items,

"totalprice":totalprice,

"oid":oid.id

return render(request,'webapp/order.html',context)

####### ------------------- Restaurant Side ------------------- #####

# creating restuarant account

def restRegister(request):

form =RestuarantSignUpForm(request.POST or None)


if form.is_valid():

user = form.save(commit=False)

username = form.cleaned_data['username']

password = form.cleaned_data['password']

user.is_restaurant=True

user.set_password(password)

user.save()

user = authenticate(username=username,password=password)

if user is not None:

if user.is_active:

login(request,user)

return redirect("rcreate")

context ={

'form':form

return render(request,'webapp/restsignup.html',context)

# restuarant login

def restLogin(request):

if request.method=="POST":

username = request.POST['username']

password = request.POST['password']

user = authenticate(username=username,password=password)

if user is not None:

if user.is_active:
login(request,user)

return redirect("rprofile")

else:

return render(request,'webapp/restlogin.html',
{'error_message':'Your account disable'})

else:

return render(request,'webapp/restlogin.html',{'error_message': 'Invalid


Login'})

return render(request,'webapp/restlogin.html')

# restaurant profile view

def restaurantProfile(request,pk=None):

if pk:

user = User.objects.get(pk=pk)

else:

user=request.user

return render(request,'webapp/rest_profile.html',{'user':user})

# create restaurant detail

@login_required(login_url='/login/restaurant/')

def createRestaurant(request):

form=RestuarantForm(request.POST or None,request.FILES or None)

if form.is_valid():

instance = form.save(commit=False)

instance.user = request.user
instance.save()

return redirect("rprofile")

context={

'form':form,

'title':"Complete Your Restaurant profile"

return render(request,'webapp/rest_profile_form.html',context)

#Update restaurant detail

@login_required(login_url='/login/restaurant/')

def updateRestaurant(request,id):

form = RestuarantForm(request.POST or None,request.FILES or


None,instance=request.user.restaurant)

if form.is_valid():

form.save()

return redirect('rprofile')

context={

'form':form,

'title':"Update Your Restaurant profile"

return render(request,'webapp/rest_profile_form.html',context)

# add menu item for restaurant

@login_required(login_url='/login/restaurant/')

def menuManipulation(request):

if not request.user.is_authenticated:
return redirect("rlogin")

rest=Restaurant.objects.filter(id=request.user.restaurant.id);

rest=rest[0]

if request.POST:

type=request.POST['submit']

if type =="Modify":

menuid = int(request.POST['menuid'])

memu= Menu.objects.filter(id=menuid).\

update(price=int(request.POST['price']),quantity=int(request.POST['quantity']))

elif type == "Add" :

itemid=int(request.POST['item'])

item=Item.objects.filter(id=itemid)

item=item[0]

menu=Menu()

menu.item_id=item

menu.r_id=rest

menu.price=int(request.POST['price'])

menu.quantity=int(request.POST['quantity'])

menu.save()

else:

menuid = int(request.POST['menuid'])

menu = Menu.objects.filter(id=menuid)

menu[0].delete()

menuitems=Menu.objects.filter(r_id=rest)
menu=[]

for x in menuitems:

cmenu=[]

cmenu.append(x.item_id)

cmenu.append(x.price)

cmenu.append(x.quantity)

cmenu.append(x.id)

menu.append(cmenu)

menuitems = Item.objects.all()

items = []

for y in menuitems:

citem = []

citem.append(y.id)

citem.append(y.fname)

items.append(citem)

context={

"menu":menu,

"items":items,

"username":request.user.username,

return render(request,'webapp/menu_modify.html',context)

def orderlist(request):

if request.POST:
oid = request.POST['orderid']

select = request.POST['orderstatus']

select = int(select)

order = Order.objects.filter(id=oid)

if len(order):

x = Order.ORDER_STATE_WAITING

if select == 1:

x = Order.ORDER_STATE_PLACED

elif select == 2:

x = Order.ORDER_STATE_ACKNOWLEDGED

elif select == 3:

x = Order.ORDER_STATE_COMPLETED

elif select == 4:

x = Order.ORDER_STATE_DISPATCHED

elif select == 5:

x = Order.ORDER_STATE_CANCELLED

else:

x = Order.ORDER_STATE_WAITING

order[0].status = x

order[0].save()

orders = Order.objects.filter(r_id=request.user.restaurant.id).order_by('-timestamp')

corders = []

for order in orders:


user = User.objects.filter(id=order.orderedBy.id)

user = user[0]

corder = []

if user.is_restaurant:

corder.append(user.restaurant.rname)

corder.append(user.restaurant.info)

else:

corder.append(user.customer.f_name)

corder.append(user.customer.phone)

items_list = orderItem.objects.filter(ord_id=order)

items = []

for item in items_list:

citem = []

citem.append(item.item_id)

citem.append(item.quantity)

menu = Menu.objects.filter(id=item.item_id.id)

citem.append(menu[0].price*item.quantity)

menu = 0

items.append(citem)

corder.append(items)

corder.append(order.total_amount)

corder.append(order.id)

x = order.status
if x == Order.ORDER_STATE_WAITING:

continue

elif x == Order.ORDER_STATE_PLACED:

x=1

elif x == Order.ORDER_STATE_ACKNOWLEDGED:

x=2

elif x == Order.ORDER_STATE_COMPLETED:

x=3

elif x == Order.ORDER_STATE_DISPATCHED:

x=4

elif x == Order.ORDER_STATE_CANCELLED:

x=5

else:

continue

corder.append(x)

corder.append(order.delivery_addr)

corders.append(corder)

context = {"orders" : corders,}

return render(request,"webapp/order-list.html",context)

Conclusion of the Project Online Food Ordering System:

Our project is only a humble venture to satisfy the needs to manage their project
work. Several user friendly coding have also adopted. This package shall prove to be a
powerful package in satisfying all the requirements of the school. The objective of
software planning is to provide a frame work that enables the manger to make
reasonable estimates made within a limited time frame at the beginning of the software
project and should be updated regularly as the project progresses.

At the end it is concluded that we have made effort on following points…

 A description of the background and context of the project and its relation to work
already done in the area.
 Made statement of the aims and objectives of the project.
 The description of Purpose, Scope, and applicability.
 We define the problem on which we are working in the project.
 We describe the requirement Specifications of the system and the actions that
can be done on these things.
 We understand the problem domain and produce a model of the system, which
describes operations that can be performed on the system.
 We included features and operations in detail, including screen layouts.
 We designed user interface and security issues related to system.
 Finally the system is implemented and tested according to test cases.

You might also like