11from http .client import HTTPResponse
22from django .shortcuts import render ,redirect
33from numpy import True_ , dtype
4- import requests
5- import json
64from django .contrib .auth import login , authenticate
75from django .contrib import messages
86from django .contrib .auth .forms import UserCreationForm
@@ -24,6 +22,13 @@ def intializeDB():
2422 ridesDB = db .rides
2523 routesDB = db .routes
2624
25+ def is_user_in_list (username ,list ):
26+ try :
27+ list .index (username )
28+ return True
29+ except ValueError :
30+ return False
31+
2732def search_index (request ):
2833 intializeDB ()
2934 if not request .session .has_key ('username' ):
@@ -32,32 +37,17 @@ def search_index(request):
3237 processed = list (ridesDB .find ())
3338 for ride in processed :
3439 ride ['id' ] = ride ['_id' ]
40+ #if condition ensures, requestor is not already a part of requested users or approved users
41+ if request .session ['username' ] != ride ['owner' ] and ride ['availability' ] > 0 and not is_user_in_list (request .session ['username' ],ride ['requested_users' ]) and not is_user_in_list (request .session ['username' ],ride ['confirmed_users' ]):
42+ ride ['allow_to_join' ] = True
3543 return render (request , 'search/search.html' , {"username" : request .session ['username' ], "rides" : processed })
3644
37- def request_ride (request , ride_id ):
38- """This method processes the request from a user to be part of a ride"""
45+ def join_ride (request ,ride_id ):
46+ if not request .session .has_key ('username' ):
47+ request .session ['alert' ] = "Please login to create a ride."
48+ return redirect ('index' )
3949 intializeDB ()
40-
41- if not request .session .has_key ("username" ):
42- request .session ["alert" ] = "Please login to request rides."
43- return redirect ("index" )
44-
45- # get ride information from db
46- ride = ridesDB .find_one ({"_id" : ride_id })
47-
48- # validation - check for edge cases
49- if ride is not None :
50- if ride ["availability" ] == 0 :
51- message = "Ride has reached max capacity."
52- elif ride ["owner" ] == request .session ["username" ]:
53- message = "Owner of the ride cannot request own rides."
54- elif request .session ["username" ] in ride ["confirmed_users" ]:
55- message = "You are already a confirmed member of this ride."
56- else :
57- # add/update request to ride
58- ridesDB .update_one ({"_id" : ride_id }, {"$addToSet" : {"requested_users" : request .session ["username" ]}})
59- message = "Request successful."
60- print (message )
61-
62- return redirect (requestsViews .requested_rides )
63-
50+ query = {"_id" : ride_id }
51+ update = {"$push" : {"requested_users" : request .session ['username' ]}}
52+ ridesDB .update_one (query ,update )
53+ return search_index (request )
0 commit comments