Skip to content

Commit 1233954

Browse files
Creating rides backend
1 parent 3821156 commit 1233954

File tree

9 files changed

+229
-7125
lines changed

9 files changed

+229
-7125
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ PackTravel/__pycache__/
77
.DS_Store
88
# C extensions
99
*.so
10+
.idea/
1011

1112
# Distribution / packaging
1213
.Python

publish/forms.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from django import forms
2+
# from django.contrib.auth import login, authenticate
3+
# from django.contrib.auth.forms import UserCreationForm
4+
# from django.contrib.auth.models import User
5+
from .models import Ride
6+
7+
class CreateNewRide(forms.ModelForm):
8+
destination = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Enter your start destination', 'class': 'form-control'}))
9+
rideDate = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Enter ride date', 'class': 'form-control'}))
10+
11+
# unityid = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Unity Id', 'class': 'form-control'}))
12+
13+
14+
class Meta:
15+
model = Ride
16+
17+
fields = "__all__"

publish/models.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
11
from django.db import models
22

3-
# Create your models here.
3+
4+
# declare a new model with a name "GeeksModel"
5+
class Ride(models.Model):
6+
# fields of the model
7+
destination = models.TextField()
8+
rideDate = models.TextField()
9+
10+
class Meta:
11+
app_label = 'PackTravel.publish'
12+
13+
# renames the instances of the model
14+
# with their title name
15+
def __str__(self):
16+
return self.title

publish/views.py

+26-3
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,37 @@
55
from django.contrib.auth import login, authenticate
66
from django.contrib import messages
77
from django.contrib.auth.forms import UserCreationForm
8+
9+
from publish.forms import CreateNewRide
10+
from user.views import userDB, index
811
from utils import get_client
9-
from django.http import HttpResponse
12+
# from django.http import HttpResponse
1013

1114
# Create your views here.
12-
from django.http import HttpResponse
15+
# from django.http import HttpResponse
1316

1417
def publish_index(request):
1518
return render(request, 'publish/publish.html')
1619

1720
def route(request):
18-
return render(request, 'publish/route.html')
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"]
30+
}
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})

templates/nav.html

+11-6
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@
5858
</style>
5959
</head>
6060
<body>
61-
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
62-
<a class="navbar-brand" href="/home/">
63-
<img src="./logo.png" width="30" height="30" class="d-inline-block align-top mr-3" alt="PackTravel">
61+
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark">
62+
<a class="navbar-brand" href="/index/">
63+
&nbsp;&nbsp;PackTravel
6464
</a>
6565
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent">
6666
<span class="navbar-toggler-icon"></span>
@@ -69,17 +69,22 @@
6969
<div class="collapse navbar-collapse" id="navbarSupportedContent">
7070
<ul class="navbar-nav ml-auto">
7171
<li class="nav-item active">
72-
<a class="nav-link" href="/home/">Home</a>
72+
<a class="nav-link" href="/index/">Home</a>
7373
</li>
7474
<li class="nav-item">
7575
<a class="nav-link" href="/search">Search Rides</a>
7676
</li>
77+
<li class="nav-item">
78+
<a class="nav-link" href="/publish/">Create a Ride</a>
79+
</li>
80+
{% if not username %}
7781
<li class="nav-item">
7882
<a class="nav-link" href="/login/">Login</a>
7983
</li>
8084
<li class="nav-item">
81-
<a class="nav-link" href="/publish/">Post a Ride</a>
85+
<a class="nav-link" href="/register/">Sign Up</a>
8286
</li>
87+
{% endif %}
8388
<li class="nav-item">
8489
<a class="nav-link" href="/route/">Route</a>
8590
</li>
@@ -100,7 +105,7 @@
100105
</ul>
101106
</div>
102107
</nav>
103-
108+
<br>
104109

105110
</body>
106111
</html>

templates/publish/createride.html

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
2+
3+
<!doctype html> {% load static %}
4+
<html lang="en">
5+
<head>
6+
<meta charset="utf-8">
7+
<meta name="viewport" content="width=device-width, initial-scale=1">
8+
<title>PackTravel - New Ride</title>
9+
10+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
11+
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
12+
<link href="//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/build/css/bootstrap-datetimepicker.css" rel="stylesheet">
13+
14+
15+
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.1.min.js"></script>
16+
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
17+
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
18+
<script src="//cdn.rawgit.com/Eonasdan/bootstrap-datetimepicker/e8bddc60e73c1ec2475f827be36e1957af72e2ea/src/js/bootstrap-datetimepicker.js"></script>
19+
</head>
20+
<body style="background-color: #3A3B3C;">
21+
{% include 'nav.html' %}
22+
23+
<div class="card mx-auto shadow-2-strong bg-white rounded" style="width: 60%; margin: 50px; padding: 50px;">
24+
<h3>Login</h3>
25+
<hr >
26+
<form method="POST" class="form-group">
27+
{% csrf_token %}
28+
<div class="form-group">
29+
<label for="dtpickerdemo" class="col-sm-2 control-label">Select date/time:</label>
30+
<div class='col-sm-4 input-group date'>
31+
<input type='text' class="form-control" id='dtpickerdemo' />
32+
</div>
33+
</div>
34+
35+
<div class="form-group">
36+
<label for="id_username">Username</label>
37+
{{form.username}}
38+
</div>
39+
<br>
40+
<div class="form-group">
41+
<label for="id_password">Password</label>
42+
{{form.password}}
43+
</div>
44+
<br>
45+
<button type="submit" class="btn btn-dark" >Login</button>
46+
</form>
47+
<script type="text/javascript">
48+
$(function () {
49+
$('#dtpickerdemo').datetimepicker();
50+
});
51+
</script>
52+
</div>
53+
</body>
54+
</html>

0 commit comments

Comments
 (0)