Skip to content

Commit 88640ed

Browse files
committed
Created Rides db, rrides view, routes db, routes view and mapping
1 parent c30016f commit 88640ed

File tree

12 files changed

+363
-54
lines changed

12 files changed

+363
-54
lines changed

PackTravel/settings.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@
116116

117117
STATIC_URL = '/static/'
118118
STATICFILES_DIRS = [
119-
os.path.join(BASE_DIR,'user/static')
119+
os.path.join(BASE_DIR,'user/static'),
120+
os.path.join(BASE_DIR,'publish/static')
120121
]
121122

122123
LOGIN_REDIRECT_URL = '/'

PackTravel/urls.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"""
1616
import imp
1717
from user import views as userView
18+
1819
from django.contrib import admin
1920
from django.urls import path
2021
from search import views as searchViews
@@ -29,5 +30,7 @@
2930
path('register/', userView.register, name='register'),
3031
path('logout/', userView.logout, name='logout'),
3132
path('login/', userView.login, name='login'),
32-
path('route/', publishViews.route, name='route')
33+
path('create_ride/', publishViews.create_ride, name='create_ride'),
34+
path('add_route/', publishViews.add_route, name='add_route'),
35+
path('display_ride/', publishViews.display_ride, name='display_ride')
3336
]

db.sqlite3

0 Bytes
Binary file not shown.

publish/forms.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# from django.contrib.auth.models import User
55
from .models import Ride
66

7-
class CreateNewRide(forms.ModelForm):
7+
class RideForm(forms.ModelForm):
88
destination = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Enter your start destination', 'class': 'form-control'}))
99
rideDate = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Enter ride date', 'class': 'form-control'}))
1010

publish/static/plus.svg

+6
Loading

publish/views.py

+101-25
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,117 @@
11
from http.client import HTTPResponse
22
from django.shortcuts import render,redirect
3+
from numpy import dtype
34
import requests
45
import json
56
from django.contrib.auth import login, authenticate
67
from django.contrib import messages
78
from django.contrib.auth.forms import UserCreationForm
89

9-
from publish.forms import CreateNewRide
10+
from publish.forms import RideForm
1011
from user.views import userDB, index
1112
from utils import get_client
1213
# from django.http import HttpResponse
1314

1415
# Create your views here.
15-
# from django.http import HttpResponse
16+
client = get_client()
17+
db = client.SEProject
18+
ridesDB = db.rides
19+
routesDB = db.routes
1620

1721
def publish_index(request):
18-
return render(request, 'publish/publish.html')
19-
20-
def route(request):
21-
return render(request, 'publish/route.html')
22-
23-
def createNewRide(request):
24-
if request.method == "POST":
25-
form = CreateNewRide(request.POST)
26-
if form.is_valid():
27-
userObj = {
28-
"destination": form.cleaned_data["destination"],
29-
"rideDate": form.cleaned_data["rideDate"]
22+
if not request.session.has_key('username'):
23+
request.session['alert'] = "Please login to create a ride."
24+
return redirect('index')
25+
return render(request, 'publish/publish.html', {"username": request.session['username']})
26+
27+
def display_ride(request):
28+
ride = request.session['ride']
29+
ride_id = ride['_id']
30+
routes = get_routes(ride)
31+
ride = ridesDB.find_one({'_id': ride['_id']})
32+
context = {
33+
"username": request.session['username'],
34+
"ride": ride,
35+
"routes": routes
36+
}
37+
return render(request, 'publish/route.html', context)
38+
39+
def get_routes(ride):
40+
routes = []
41+
if 'routes' not in ride:
42+
return None
43+
route_ids = ride['routes']
44+
for route_id in route_ids:
45+
route = routesDB.find_one({'_id': route_id})
46+
route['id'] = route.pop('_id')
47+
routes.append(route)
48+
return routes
49+
50+
def create_ride(request):
51+
if request.method == 'POST':
52+
ride = {
53+
"_id":
54+
request.POST.get('name')+"_"+request.POST.get('destination')
55+
+"_"+request.POST.get("date")+"_"+
56+
request.POST.get("hour")+"_"+
57+
request.POST.get("minute")+"_"+
58+
request.POST.get("ampm")
59+
,
60+
"name": request.POST.get('name'),
61+
"destination": request.POST.get('destination'),
62+
"date": request.POST.get("date"),
63+
"hour": request.POST.get("hour"),
64+
"minute": request.POST.get("minute"),
65+
"ampm": request.POST.get("ampm")
3066
}
31-
userDB.insert_one(userObj)
32-
request.session['destination'] = userObj["destination"]
33-
request.session['rideDate'] = userObj["rideDate"]
34-
return redirect(index, username=request.session["username"])
35-
else:
36-
print(form.errors.as_data())
37-
else:
38-
if request.session.has_key('username'):
39-
return index(request,request.session['username'])
40-
form = CreateNewRide()
41-
return render(request, 'user/register.html', {"form": form})
67+
request.session['ride'] = ride
68+
if ridesDB.find_one({'_id': ride['_id']})== None:
69+
ridesDB.insert_one(ride)
70+
return redirect(display_ride)
71+
72+
return render(request, 'publish/publish.html', {"username": request.session['username']})
73+
74+
def add_route(request):
75+
if request.method == 'POST':
76+
77+
ride = request.POST.get('ride')
78+
ride = ride.replace("\'", "\"")
79+
ride = json.loads(ride)
80+
ride_id = ride['_id']
81+
ride = ridesDB.find_one({'_id': ride['_id']})
82+
route = {
83+
"_id": str(ride_id)
84+
+"_"+request.POST.get('type')
85+
+"_"+request.POST.get('spoint')
86+
+"_"+request.POST.get("hour")
87+
+"_"+request.POST.get("minute")
88+
+"_"+request.POST.get("duration")
89+
+"_"+request.POST.get("details")
90+
+"_"+request.POST.get("ampm"),
91+
92+
"type": request.POST.get('type'),
93+
"spoint": request.POST.get('spoint'),
94+
"hour": request.POST.get("hour"),
95+
"minute": request.POST.get("minute"),
96+
"duration": request.POST.get("duration"),
97+
"details": request.POST.get("details"),
98+
"ampm": request.POST.get("ampm"),
99+
"users": [request.session['username']]
100+
}
101+
request.session["route"] = route
102+
request.session["ride"] = ride
103+
#check if route is unique
104+
if routesDB.find_one({'_id': route["_id"]})== None:
105+
routesDB.insert_one(route)
106+
if 'routes' not in ride:
107+
ridesDB.update_one({"_id": ride_id}, {"$set": {"routes": [route['_id']]}})
108+
else:
109+
ride['routes'].append(route['_id'])
110+
ridesDB.update_one({"_id": ride_id}, {"$set": {"routes": ride['routes']}})
111+
return redirect(display_ride)
112+
113+
return render(request, 'publish/publish.html', {"username": request.session['username']})
114+
115+
116+
117+

search/views.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
import requests
66

77
def search_index(request):
8-
return render(request, 'search/search.html')
8+
return render(request, 'search/search.html', {"username": request.session['username']})
99

templates/home/home.html

+5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77

88
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
99
</head>
10+
<script>
11+
{% if alertmsg %}
12+
$(document).ready(function() { alert({{alertmsg}});});
13+
{% endif %}
14+
</script>
1015
<style>
1116
.btn-blue{
1217
background-color: #5b3be9 !important;

templates/nav.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
<li class="nav-item">
7878
<a class="nav-link" href="/publish/">Create a Ride</a>
7979
</li>
80-
{% if not username %}
80+
{% if not request.session.username %}
8181
<li class="nav-item">
8282
<a class="nav-link" href="/login/">Login</a>
8383
</li>
@@ -88,7 +88,7 @@
8888
<li class="nav-item">
8989
<a class="nav-link" href="/route/">Route</a>
9090
</li>
91-
{% if username %}
91+
{% if request.session.username %}
9292
<li class="nav-item">
9393

9494
<a class="nav-link" href="/logout/">

templates/publish/publish.html

+35-20
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,62 @@
11
<!DOCTYPE html>{% load static %}
22
<html lang="en">
33

4-
<head>
5-
6-
7-
<meta charset="utf-8">
8-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
4+
<head><meta charset="utf-8">
95
<meta name="viewport" content="width=device-width, initial-scale=1">
106

117
<title>New PackTravel</title>
128

139
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
14-
10+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
1511
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet">
1612

1713
</head>
1814

1915
<body style="background-color: #3A3B3C;">
16+
2017
{% include 'nav.html' %}
18+
19+
20+
2121
<div class="card mx-auto shadow-2-strong bg-white rounded" style="width: 60%; margin: 50px; padding: 50px;">
22-
<h3>Create a New Ride</h3>
22+
<h3>New Ride</h3>
2323
<hr>
24-
<form method="POST" class="form-group">
24+
<form action="/create_ride/" method="POST" class="form-group">
2525
{% csrf_token %}
2626
<div class="row">
2727
<div class="col-sm-6">
2828
<div class="form-group">
29-
<span class="form-label">Destination</span>
30-
<input class="form-control" type="text" placeholder="Enter your start destination">
29+
<span class="form-label">Ride Name</span>
30+
<input name="name" required class="form-control" type="text" placeholder="Enter a name for the ride">
3131
</div>
3232
</div>
3333
<br>
3434
</div>
3535
<br>
3636
<div class="row">
37-
<div class="col-sm-5">
37+
<div class="col-sm-6">
3838
<div class="form-group">
39-
<span class="form-label">Ride Date</span>
40-
<input class="form-control" type="date" required placeholder="Enter ride date">
39+
<span class="form-label">Destination</span>
40+
<input name="destination" required class="form-control" type="text" placeholder="Enter your start destination">
4141
</div>
4242
</div>
4343
<br>
44+
</div>
45+
<br>
46+
<div class="form-group">
47+
<span class="form-label">Ride Date</span>
48+
<input class="form-control" name="date" type="date" required placeholder="Enter ride date">
49+
</div>
50+
<br>
51+
Enter the Time to Reach
52+
<div class="row"
4453
<div class="col-sm-7">
4554
<div class="row">
46-
Enter the Time to Reach
55+
4756
<div class="col-sm-4">
4857
<div class="form-group">
4958
<span class="form-label">Hour</span>
50-
<select class="form-control">
59+
<select name="hour" required class="form-control">
5160
<option>1</option>
5261
<option>2</option>
5362
<option>3</option>
@@ -67,7 +76,7 @@ <h3>Create a New Ride</h3>
6776
<div class="col-sm-4">
6877
<div class="form-group">
6978
<span class="form-label">Min</span>
70-
<select class="form-control">
79+
<select name="minute" required class="form-control">
7180
<option>00</option>
7281
<option>05</option>
7382
<option>10</option>
@@ -87,20 +96,25 @@ <h3>Create a New Ride</h3>
8796
<div class="col-sm-4">
8897
<div class="form-group">
8998
<span class="form-label">AM/PM</span>
90-
<select class="form-control">
99+
<select name="ampm" class="form-control">
91100
<option>AM</option>
92101
<option>PM</option>
93102
</select>
94103
<span class="select-arrow"></span>
95104
</div>
96105
</div>
97106
</div>
107+
108+
</div>
109+
<br><br>
110+
<div class="form-btn">
111+
<button style="float: right;" class="btn btn-info btn-lg submit-btn">Next: Add a route</button>
112+
<br>
98113
</div>
114+
115+
99116
</div>
100117
<br><br>
101-
<div class="form-btn">
102-
<button class="btn btn-dark submit-btn">CREATE</button>
103-
</div>
104118
</form>
105119
<!-- <form method="POST" class="form-group">
106120
{% csrf_token %}
@@ -117,6 +131,7 @@ <h3>Create a New Ride</h3>
117131
<button type="submit" class="btn btn-dark" >Login</button>
118132
</form> -->
119133
</div>
134+
120135

121136

122137
</body>

0 commit comments

Comments
 (0)