Esempio n. 1
0
    def SearchForNumber(searchTerm, res):
        try:
            selector = {
                "Journeys": {
                    "$elemMatch": {
                        "Train_Number": int(searchTerm)
                    }
                }
            }
            queryRef = list(
                glob.COUCH_USER_ACTIVITY.get_query_result(
                    selector, fields=['key', 'Journeys']))
            for docs in queryRef:
                for jDoc in docs['Journeys']:
                    if jDoc['Train_Number'] == int(searchTerm):
                        jDoc.update({'Username': docs['key'].split(":")[1]})
                        # Get Train Number Details
                        res.append(jDoc)
        except KeyError:
            glob.LOGGER("[SEARCH JRNY] Could not find {} train number".format(
                searchTerm))
            print("[SEARCH JRNY] Could not find {} train number".format(
                searchTerm))
        except Exception as err:
            glob.LOGGER("[SEARCH JRNY] Error @ train number \n {}".format(err))
            print("[SEARCH JRNY] Error @ train number \n {}".format(err))

        return res
Esempio n. 2
0
 def SeachTimeInJourneysArray(journeysArray, searchTime, searchType):
     if searchType == 'At':
         ''' At / On '''
         glob.LOGGER("[TIME JRNY] At request")
         print("[TIME JRNY] At request")
         return list(filter(lambda journeyDoc:\
           'Time_In' in journeyDoc and 'Time_Out' in journeyDoc\
           and journeyDoc['Time_In'] < searchTime and journeyDoc['Time_Out'] > searchTime\
          , journeysArray\
         ))
     elif searchType == 'Under':
         ''' Under '''
         glob.LOGGER("[TIME JRNY] Under request")
         print("[TIME JRNY] Under request")
         return list(filter(lambda journeyDoc:\
           'Time_Out' in journeyDoc and journeyDoc['Time_Out'] < searchTime\
          , journeysArray\
         ))
     elif searchType == 'Over':
         ''' Over '''
         glob.LOGGER("[TIME JRNY] Over request")
         print("[TIME JRNY] Over request")
         return list(filter(lambda journeyDoc:\
           'Time_In' in journeyDoc and  journeyDoc['Time_In'] > searchTime\
          , journeysArray\
         ))
Esempio n. 3
0
def PopulateDatabase(admin_couch_client, dbName, populate):
	if not admin_couch_client[dbName].exists():
		glob.LOGGER("[POPULATE] {} does not exist!")
		print("[POPULATE] {} does not exist!")
		return False
	else:
		for doc in populate:
			try:
				admin_couch_client[dbName].create_document(doc)
			except Exception as err:
				glob.LOGGER("[POPULATE] Error in creating doc {} \n {}".format(doc, err))
				print("[POPULATE] Error in creating doc {} \n {}".format(doc, err))
		return True
Esempio n. 4
0
def CreateDBHandler(req):
	if not req.body:
		glob.LOGGER("[MOD] Invalid Request: Null body")
		print("[MOD] Invalid Request: Null body")
		return HttpResponse(status=400)
	body = JSON.loads(req.body)
	if 'Whos_Asking' not in body or not body['Whos_Asking']:
		glob.LOGGER("[MOD] Invalid Request: Null Whos_Asking")
		print("[MOD] Invalid Request: Null Whos_Asking")
		return HttpResponse(status=400)
	if 'Password' not in body or not body['Password']:
		glob.LOGGER("[MOD] Invalid Request: Null Password")
		print("[MOD] Invalid Request: Null Password")
		return HttpResponse(status=400)
	if 'Database_Name' not in body or not body['Database_Name']:
		glob.LOGGER("[MOD] Invalid Request: Null database name")
		print("[MOD] Invalid Request: Null database name")
		return HttpResponse(status=400)

	glob.LOGGER("[MOD] Create DB request by {}".format(body['Whos_Asking']))
	print("[MOD] Create DB request by {}".format(body['Whos_Asking']))
	populate = body['Populate'] if 'Populate' in body and body['Populate'] is not None else False
	
	try:
		admin_couch_client = CouchDB(
			body['Whos_Asking'],
			body['Password'],
			url = glob.COUCH_HOST+':'+glob.COUCH_PORT,
			connect = True
		)
	except KeyError:
		glob.LOGGER("[MOD] Couch Admin not found")
		print("[MOD] Couch Admin not found")
		return HttpResponse(status=404)
	except Exception as err:
		glob.LOGGER("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		print("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		return HttpResponse(status=500)

	try:
		admin_couch_client[ str(body[ 'Database_Name' ]) ].exists()
		glob.LOGGER("[MOD] Database {} already exists".format(body[ 'Database_Name' ]))
		print("[MOD] Database {} already exists".format(body[ 'Database_Name' ]))
		return HttpResponse(status=406)
	except KeyError:
		glob.LOGGER("[MOD] Creating new {} database".format(body[ 'Database_Name' ]))
		print("[MOD] Creating new {} database".format(body[ 'Database_Name' ]))
		admin_couch_client.create_database(body[ 'Database_Name' ])
		if populate:
			if PopulateDatabase(admin_couch_client, body[ 'Database_Name' ], populate):
				return HttpResponse(status=200)
			else:
				return HttpResponse(status=500)
Esempio n. 5
0
def ListSpottingHandler(req):
	# print(LOGGER)
	body = JSON.loads(req.body)
	print("[LIST SPOT] New request\n {}".format(body))
	glob.LOGGER("[LIST SPOT] New request\n {}".format(body))
	res = []

	''' Loco_Number '''
	if 'Loco_Number' in body.keys():
		print("[LIST SPOT] List for Loco {}".format(body['Loco_Number']))
		overallRef = list(glob.COUCH_OVERALL_SPOTTING[ str(body['Loco_Number']) ]['Spottings'])
		res.extend(overallRef)

	''' Shed Class '''
	if 'Loco_Class' in body.keys():
		print("[LIST SPOT] List for Class {}".format(body['Loco_Class']))
		selector = { "Spottings": { "$elemMatch": { "Loco_Class": body['Loco_Class'] } } }
		overallRef = list(glob.COUCH_OVERALL_SPOTTING.get_query_result(selector, fields = ["Spottings"]))
		res.extend([\
			spottingDoc for docs in overallRef for spottingDoc in docs['Spottings']\
			if spottingDoc['Loco_Class'] == body['Loco_Class']\
		])

	if 'Loco_Shed' in body.keys():
		print("[LIST SPOT] List for Shed {}".format(body['Loco_Shed']))
		selector = { "Spottings": { "$elemMatch": { "Loco_Shed": body['Loco_Shed'] } } }
		overallRef = list(glob.COUCH_OVERALL_SPOTTING.get_query_result(selector, fields = ["Spottings"]))
		res.extend([\
			spottingDoc for docs in overallRef for spottingDoc in docs['Spottings']\
			if spottingDoc['Loco_Shed'] == body['Loco_Shed']\
		])

	''' Train_Number '''
	if 'Train_Number' in body.keys():
		print("[LIST SPOT] List for Train {}".format(body['Train_Number']))
		selector = { "Spottings": { "$elemMatch": { "Train_Number": body['Train_Number'] } } }
		overallRef = list(glob.COUCH_OVERALL_SPOTTING.get_query_result(selector, fields = ["Spottings"]))
		res.extend([\
			spottingDoc for docs in overallRef for spottingDoc in docs['Spottings']\
			if spottingDoc['Train_Number'] == body['Train_Number']\
		])

	''' Train_Name '''
	if 'Train_Name' in body.keys():
		print("[LIST SPOT] List for Train Name {}".format(body['Train_Name']))
		trainNum = list(\
			glob.COUCH_TRAIN_DATA.get_query_result(\
				{ "Train_Name": { "$eq": body['Train_Name'] } }, fields = ['Train_Number']\
			)\
		)
		for num in trainNum:
			selector = 	{ "Spottings": { "$elemMatch": { "Train_Number": num['Train_Number'] } } }
			overallRef = list(glob.COUCH_OVERALL_SPOTTING.get_query_result(selector, fields = ["Spottings"]))
			res.extend([\
				spottingDoc for docs in overallRef for spottingDoc in docs['Spottings']\
				if spottingDoc['Train_Number'] == num['Train_Number']\
			])
	res.sort(key = lambda doc: doc['Date_Time'], reverse = True)
	return JsonResponse(res, safe = False)
Esempio n. 6
0
def UserSpottingHandler(req):
	if not req.body:
		glob.LOGGER("[USER SPOT] Invalid Request: Null body")
		print("[USER SPOT] Invalid Request: Null body")
		return HttpResponse(status = 400)
	body = JSON.loads(req.body)
	if 'Whos_Asking' not in body or not body['Whos_Asking']:
		glob.LOGGER("[USER SPOT] Invalid Request: Null Whos_Asking")
		print("[USER SPOT] Invalid Request: Null Whos_Asking")
		return HttpResponse(status = 400)
	
	Username = body[ 'Whos_Asking' ] if 'Username' not in body else body[ 'Username' ]
	if body[ 'Username' ]:
		print("[USER SPOT] Request for {} by {}".format(Username, body[ 'Whos_Asking' ]))
	else:
		print("[USER SPOT] Request by {}".format(Username))
	
	try:
		spottingList = glob.COUCH_USER_ACTIVITY[\
			PARTITION_KEY_DICT[ Username[0].lower() ] + ':' + Username\
		][ 'Spottings' ]

		for sDoc in spottingList:
			if 'Train_Number' in sDoc:
				try:
					trainQuery = list(\
						Train.objects.filter(\
							Train_Number = int(sDoc[ 'Train_Number' ])\
						).values_list('Train_Name', flat=True)\
					)
					sDoc.update({ "Train_Name": trainQuery[0] })
				except:
					print("[USER SPOT] Could not find train {}".format(sDoc['Train_Number']))

		spottingList.sort(key = lambda doc: doc['Date_Time'], reverse = True)
		glob.LOGGER("[USER SPOT] Request handled successfully! Response: \n {}".format(str(spottingList)))
		print("[USER SPOT] Request handled successfully! Response: \n {}".format(str(spottingList)))
		return JsonResponse(spottingList, safe = False)
	except KeyError:
		print("[USER SPOT] No spottings found for {}".format(Username))
		print("[USER SPOT] Request handled successfully! Response: 404")
		return HttpResponse(status = 404)
	except Exception as err:
		print("[USER SPOT] Error: \n {}".format(err))
		return HttpResponse(status = 500)
Esempio n. 7
0
def AwardThisUser(Username, award):
    userInfoRef = glob.COUCH_USER_INFO[':'.join(
        (glob.PARTITION_KEY_DICT[Username[0].lower()], Username))]
    if 'Achievements' in userInfoRef.keys() and len(
            userInfoRef['Achievements']):
        userInfoRef['Achievements'].append(
            award) if award not in userInfoRef['Achievements'] else None
    else:
        userInfoRef['Achievements'] = [award]
    userInfoRef.save()
    glob.LOGGER("[AWARD] New achievement by {}: {}".format(Username, award))
    print("[AWARD] New achievement by {}: {}".format(Username, award))
Esempio n. 8
0
def CreateDocHandler(req):
	if not req.body:
		glob.LOGGER("[MOD] Invalid Request: Null body")
		print("[MOD] Invalid Request: Null body")
		return HttpResponse(status=400)
	body = JSON.loads(req.body)
	if 'Whos_Asking' not in body or not body['Whos_Asking']:
		glob.LOGGER("[MOD] Invalid Request: Null Whos_Asking")
		print("[MOD] Invalid Request: Null Whos_Asking")
		return HttpResponse(status=400)
	if 'Password' not in body or not body['Password']:
		glob.LOGGER("[MOD] Invalid Request: Null Password")
		print("[MOD] Invalid Request: Null Password")
		return HttpResponse(status=400)
	if 'Database_Name' not in body or not body['Database_Name']:
		glob.LOGGER("[MOD] Invalid Request: Null database name")
		print("[MOD] Invalid Request: Null database name")
		return HttpResponse(status=400)
	if 'Populate' not in body or not body['Populate']:
		glob.LOGGER("[MOD] Invalid Request: Null Populate")
		print("[MOD] Invalid Request: Null Populate")
		return HttpResponse(status=400)
	
	glob.LOGGER("[MOD] Create Doc request by {} for {}".format(body['Whos_Asking'], body['Database_Name']))
	print("[MOD] Create Doc request by {} for {}".format(body['Whos_Asking'], body['Database_Name']))

	try:
		admin_couch_client = CouchDB(
			body['Whos_Asking'],
			body['Password'],
			url = glob.COUCH_HOST + ':' + glob.COUCH_PORT,
			connect = True
		)
		glob.LOGGER("[MOD] {} found".format(body[ 'Whos_Asking' ]))
		print("[MOD] {} found".format(body[ 'Whos_Asking' ]))
	except KeyError:
		glob.LOGGER("[MOD] Couch Admin {} not found".format(body[ 'Whos_Asking' ]))
		print("[MOD] Couch Admin {} not found".format(body[ 'Whos_Asking' ]))
		return HttpResponse(status=404)
	except Exception as err:
		glob.LOGGER("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		print("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		return HttpResponse(status=500)

	try:
		if type(body['Populate']).__name__ == 'list':
			if PopulateDatabase(admin_couch_client, body['Database_Name'], body['Populate']):
				return HttpResponse(status=201)
		elif type(body['Populate']).__name__ == 'dict':
			if PopulateDatabase(admin_couch_client, body['Database_Name'], [ body['Populate'] ]):
				return HttpResponse(status=201)
		else:
			glob.LOGGER("[MOD] Invalid data type of document {}".format(type(body['Populate']).__name__))
			print("[MOD] Invalid data type of document {}".format(type(body['Populate']).__name__))
			return HttpResponse(status=400)
	except Exception as err:
		glob.LOGGER("[MOD] Error @ Populate \n {}".format(err))
		print("[MOD] Error @ Populate \n {}".format(err))
		return HttpResponse(status=500)
Esempio n. 9
0
def UpdateDBHandler(req):
	if not req.body:
		glob.LOGGER("[MOD] Invalid Request: Null body")
		print("[MOD] Invalid Request: Null body")
		return HttpResponse(status=400)
	body = JSON.loads(req.body)
	if 'Whos_Asking' not in body or not body['Whos_Asking']:
		glob.LOGGER("[MOD] Invalid Request: Null Whos_Asking")
		print("[MOD] Invalid Request: Null Whos_Asking")
		return HttpResponse(status=400)
	if 'Password' not in body or not body['Password']:
		glob.LOGGER("[MOD] Invalid Request: Null Password")
		print("[MOD] Invalid Request: Null Password")
		return HttpResponse(status=400)
	if 'Database_Name' not in body or not body['Database_Name']:
		glob.LOGGER("[MOD] Invalid Request: Null database name")
		print("[MOD] Invalid Request: Null database name")
		return HttpResponse(status=400)
	if 'Old_Doc' not in body or not body['Old_Doc']:
		glob.LOGGER("[MOD] Invalid Request: Null Old_Doc")
		print("[MOD] Invalid Request: Null Old_Doc")
		return HttpResponse(status=400)
	if 'Update_Doc' not in body or not body['Update_Doc']:
		glob.LOGGER("[MOD] Invalid Request: Null Update_Doc")
		print("[MOD] Invalid Request: Null Update_Doc")
		return HttpResponse(status=400)

	glob.LOGGER("[MOD] Update request by {} \n from {} to {}".format(
			body['Whos_Asking'],
			body['Old_Doc'],
			body['Update_Doc'])
	)
	print("[MOD] Update request by {} \n from {} to {}".format(body['Whos_Asking'], body['Old_Doc'], body['Update_Doc']))

	try:
		admin_couch_client = CouchDB(
			body['Whos_Asking'],
			body['Password'],
			url = glob.COUCH_HOST + ':' + glob.COUCH_PORT,
			connect = True
		)
		glob.LOGGER("[MOD] {} found".format(body[ 'Whos_Asking' ]))
		print("[MOD] {} found".format(body[ 'Whos_Asking' ]))
	except KeyError:
		glob.LOGGER("[MOD] Couch Admin {} not found".format(body[ 'Whos_Asking' ]))
		print("[MOD] Couch Admin {} not found".format(body[ 'Whos_Asking' ]))
		return HttpResponse(status=404)
	except Exception as err:
		glob.LOGGER("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		print("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		return HttpResponse(status=500)

	if 'Update_Factor' in body:
		try:
			index = admin_couch_client[ str(body['Database_Name']) ][ body['Update_Factor'] ].index(body[ 'Old_Doc' ])
			admin_couch_client[ str(body['Database_Name']) ][ body['Update_Factor'] ][index].update(body['Update_Doc'])
			admin_couch_client[ str(body['Database_Name']) ].save()
			glob.LOGGER("[MOD] {} changes updated".format(body[ 'Update_Doc' ]))
			print("[MOD] {} changes updated".format(body[ 'Update_Doc' ]))
			return HttpResponse(status=200)
		except KeyError:
			glob.LOGGER("[MOD] Old doc not found in {}/{}".format(body[ 'Database_Name' ], body[ 'Update_Factor' ]))
			print("[MOD] Old doc not found in {}/{}".format(body[ 'Database_Name' ], body[ 'Update_Factor' ]))
			return HttpResponse(status=404)
		except Exception as err:
			glob.LOGGER("[MOD] Error finding old doc \n {}".format(err))
			print("[MOD] Error finding old doc \n {}".format(err))
			return HttpResponse(status=500)
	else:
		try:
			for doc in admin_couch_client[ str(body[ 'Database_Name' ]) ]:
				if doc == body['Old_Doc']:
					doc.update(body['Update_Doc'])
					doc.save()
			glob.LOGGER("[MOD] {} changes updated".format(body[ 'Update_Doc' ]))
			print("[MOD] {} changes updated".format(body[ 'Update_Doc' ]))
			return HttpResponse(status=200)
		except KeyError:
			glob.LOGGER("[MOD] Old doc not found in {}/{}".format(body[ 'Database_Name' ], body[ 'Update_Factor' ]))
			print("[MOD] Old doc not found in {}/{}".format(body[ 'Database_Name' ], body[ 'Update_Factor' ]))
			return HttpResponse(status=404)
		except Exception as err:
			glob.LOGGER("[MOD] Error finding old doc \n {}".format(err))
			print("[MOD] Error finding old doc \n {}".format(err))
			return HttpResponse(status=500)
Esempio n. 10
0
def TruncateDBHandler(req):
	if not req.body:
		glob.LOGGER("[MOD] Invalid Request: Null body")
		print("[MOD] Invalid Request: Null body")
		return HttpResponse(status=400)
	body = JSON.loads(req.body)
	if 'Whos_Asking' not in body or not body['Whos_Asking']:
		glob.LOGGER("[MOD] Invalid Request: Null Whos_Asking")
		print("[MOD] Invalid Request: Null Whos_Asking")
		return HttpResponse(status=400)
	if 'Password' not in body or not body['Password']:
		glob.LOGGER("[MOD] Invalid Request: Null Password")
		print("[MOD] Invalid Request: Null Password")
		return HttpResponse(status=400)
	if 'Database_Name' not in body or not body['Database_Name']:
		glob.LOGGER("[MOD] Invalid Request: Null database name")
		print("[MOD] Invalid Request: Null database name")
		return HttpResponse(status=400)
	
	glob.LOGGER("[MOD] Truncate request by {} for {}".format(body['Whos_Asking'], body['Database_Name']))
	print("[MOD] Truncate request by {} for {}".format(body['Whos_Asking'], body['Database_Name']))
	
	try:
		admin_couch_client = CouchDB(
			body['Whos_Asking'],
			body['Password'],
			url = glob.COUCH_HOST + ':' + glob.COUCH_PORT,
			connect = True
		)
		glob.LOGGER("[MOD] {} found".format(body[ 'Whos_Asking' ]))
		print("[MOD] {} found".format(body[ 'Whos_Asking' ]))
	except KeyError:
		glob.LOGGER("[MOD] Couch Admin {} not found".format(body[ 'Whos_Asking' ]))
		print("[MOD] Couch Admin {} not found".format(body[ 'Whos_Asking' ]))
		return HttpResponse(status=404)
	except Exception as err:
		glob.LOGGER("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		print("[MOD] Could not connect to couch as {} \n {}".format(body[ 'Whos_Asking' ], err))
		return HttpResponse(status=500)

	try:
		if admin_couch_client[ str(body[ 'Database_Name' ]) ].exists():
			glob.LOGGER("[MOD] Database {} found".format(body[ 'Database_Name' ]))
			print("[MOD] Database {} found".format(body[ 'Database_Name' ]))
		for doc in admin_couch_client[ str(body[ 'Database_Name' ]) ]:
			doc.delete()
		glob.LOGGER("[MOD] Database {} truncated!".format(body[ 'Database_Name' ]))
		print("[MOD] Database {} truncated!".format(body[ 'Database_Name' ]))
		return HttpResponse(status=200)
	except KeyError:
		glob.LOGGER("[MOD] Database {} does not exist to truncate".format(body[ 'Database_Name' ]))
		print("[MOD] Database {} does not exist to truncate".format(body[ 'Database_Name' ]))
		return HttpResponse(status=404)
	except Exception as err:
		glob.LOGGER("[MOD] Error at checking existing DB {}".format(body[ 'Database_Name' ]))
		print("[MOD] Error at checking existing DB {}".format(body[ 'Database_Name' ]))
		return HttpResponse(status=500)
Esempio n. 11
0
def NewSpottingHandler(req):
	if not req.body:
		glob.LOGGER("[NEW SPOT] Invalid Request: Null body")
		print("[NEW SPOT] Invalid Request: Null body")
		return HttpResponse(status = 400)
	body = JSON.loads(req.body)
	if 'Whos_Asking' not in body or not body['Whos_Asking']:
		glob.LOGGER("[NEW SPOT] Invalid Request: Null Whos_Asking")
		print("[NEW SPOT] Invalid Request: Null Whos_Asking")
		return HttpResponse(status = 400)

	Username = body['Whos_Asking']

	glob.LOGGER("[NEW SPOT] Request by {}: \n {}".format(Username, str(body)))
	print("[NEW SPOT] Request by {}: \n {}".format(Username, str(body)))
	
	spottingDoc = { k:v for k,v in body.items() if v }
	spottingDoc[ 'Spotting_ID' ] = Username + ':' + glob.RAND6DIG()
	spottingDoc[ 'Loco_Number' ] = "Uncertain" if 'Loco_Number' not in body else int(body['Loco_Number'])
	spottingDoc[ 'Date_Time' ] = int(body['Date_Time']) if 'Date_Time' in body else int(TIME.time())

	try:
		selector = { "Spottings": { "$elemMatch": { "Loco_Class": spottingDoc[ 'Loco_Class' ] } } }
		classRef = list(glob.COUCH_OVERALL_SPOTTING.get_query_result(selector))
		if len(classRef) < 1:
			''' First To Spot Loco Class '''
			glob.LOGGER("[NEW SPOT] First spotting of Class: {}".format(spottingDoc[ 'Loco_Class' ]))
			print("[NEW SPOT] First spotting of Class: {}".format(spottingDoc[ 'Loco_Class' ]))
			AwardThisUser(Username, "FTSLC")
	except Exception as e:
		glob.LOGGER("[NEW SPOT] Exception @ Loco_Class \n {}".format(e))
		print("[NEW SPOT] Exception @ Loco_Class \n {}".format(e))

	try:
		selector = { "Spottings": { "$elemMatch": { "Loco_Shed": spottingDoc[ 'Loco_Shed' ] } } }
		shedRef = list(glob.COUCH_OVERALL_SPOTTING.get_query_result(selector))
		if len(shedRef) < 1:
			''' First To Spot Loco Shed '''
			glob.LOGGER("[NEW SPOT] First spotting of Shed: {}".format(spottingDoc[ 'Loco_Shed' ]))
			print("[NEW SPOT] First spotting of Shed: {}".format(spottingDoc[ 'Loco_Shed' ]))
			AwardThisUser(Username, "FTSLS")
	except Exception as e:
		glob.LOGGER("[NEW SPOT] Exception @ Loco_Shed \n {}".format(e))
		print("[NEW SPOT] Exception @ Loco_Shed \n {}".format(e))

	try:
		selector = { "Spottings": { "$elemMatch": { "Train_Number": spottingDoc[ 'Train_Number' ] } } }
		trainRef = list(glob.COUCH_OVERALL_SPOTTING.get_query_result(selector))
		if len(trainRef) < 1:
			''' First To Spot Train '''
			glob.LOGGER("[NEW SPOT] First spotting of Train: {}".format(spottingDoc[ 'Train_Number' ]))
			print("[NEW SPOT] First spotting of Train: {}".format(spottingDoc[ 'Train_Number' ]))
			AwardThisUser(Username, "FTST")
	except Exception as e:
		glob.LOGGER("[NEW SPOT] Exception @ Train_Number \n {}".format(e))
		print("[NEW SPOT] Exception @ Train_Number \n {}".format(e))
		
	try:
		overallRef = glob.COUCH_OVERALL_SPOTTING[ str(spottingDoc[ 'Loco_Number' ]) ]
		glob.LOGGER("[NEW SPOT] Spotting of Loco {} already exists".format(spottingDoc[ 'Loco_Number' ]))
		print("[NEW SPOT] Spotting of Loco {} already exists".format(spottingDoc[ 'Loco_Number' ]))
		AnotherSpottingOfLoco(overallRef, { **spottingDoc })
	except KeyError:
		glob.LOGGER("[NEW SPOT] First spotting of Loco: {}".format(spottingDoc[ 'Loco_Number' ]))
		print("[NEW SPOT] First spotting of Loco: {}".format(spottingDoc[ 'Loco_Number' ]))
		FirstSpottingOfLoco({ **spottingDoc })
	except Exception as err:
		glob.LOGGER("[NEW SPOT] Error @ Overall Ref \n {}".format(err))
		print("[NEW SPOT] Error @ Overall Ref \n {}".format(err))
		return HttpResponse(status = 500)

	try:
		userRef = glob.COUCH_USER_ACTIVITY[ PARTITION_KEY_DICT[ Username[0].lower() ] + ':' + Username ]
		glob.LOGGER("[NEW SPOT] {} has previous activity".format(Username))
		print("[NEW SPOT] {} has previous activity".format(Username))
	except KeyError:
		glob.LOGGER("[NEW SPOT] First activity by user {}".format(Username))
		print("[NEW SPOT] First activity by user {}".format(Username))
		CreateUserActivity(Username)
		userRef = glob.COUCH_USER_ACTIVITY[ PARTITION_KEY_DICT[ Username[0].lower() ] + ':' + Username ]
	except Exception as err:
		glob.LOGGER("[NEW SPOT] Error @ User Ref \n {}".format(err))
		print("[NEW SPOT] Error @ User Ref \n {}".format(err))
		return HttpResponse(status = 500)

	try:
		glob.COUCH_USER_ACTIVITY[ PARTITION_KEY_DICT[ Username[0].lower() ] + ':' + Username ]['Spottings']
		glob.LOGGER("[NEW SPOT] {} has previous spottings".format(Username))
		print("[NEW SPOT] {} has previous spottings".format(Username))
		AnotherSpottingByUser(userRef, { **spottingDoc })
		glob.LOGGER("[NEW SPOT] {} added spotting {}".format(Username, str(spottingDoc)))
		print("[NEW SPOT] {} added spotting {}".format(Username, str(spottingDoc)))
	except KeyError:
		glob.LOGGER("[NEW SPOT] First spotting by {}".format(Username))
		print("[NEW SPOT] First spotting by {}".format(Username))
		FirstSpottingByUser(userRef, { **spottingDoc })
		glob.LOGGER("[NEW SPOT] {} added spotting {}".format(Username, str(spottingDoc)))
		print("[NEW SPOT] {} added spotting {}".format(Username, str(spottingDoc)))
	except Exception as err:
		glob.LOGGER("[NEW SPOT] Error @ User Ref \n {}".format(err))
		print("[NEW SPOT] Error @ User Ref \n {}".format(err))
		return HttpResponse(status = 500)

	glob.LOGGER("[NEW SPOT] Request handled successfully! Response: 201")
	print("[NEW SPOT] Request handled successfully! Response: 201")
	return HttpResponse(status = 201)
Esempio n. 12
0
def SearchJourneysHandler(req):
    if not req.body:
        glob.LOGGER("[SEARCH JRNY] Invalid Request: Null body")
        print("[SEARCH JRNY] Invalid Request: Null body")
        return HttpResponse(status=400)
    body = JSON.loads(req.body)
    if 'Whos_Asking' not in body or not body['Whos_Asking']:
        glob.LOGGER("[SEARCH JRNY] Invalid Request: Missing Whos_Asking")
        print("[SEARCH JRNY] Invalid Request: Missing Whos_Asking")
        return HttpResponse(status=400)
    if 'Search_Term' not in body or not body['Search_Term']:
        glob.LOGGER("[SEARCH JRNY] Invalid Request: Missing Search_Term")
        print("[SEARCH JRNY] Invalid Request: Missing Search_Term")
        return HttpResponse(status=400)

    searchTerm = body['Search_Term']
    res = []

    print("[SEARCH JRNY] Request by {}. Term: {}".format(
        body['Whos_Asking'], searchTerm))

    # privileged = bool(body['Username'] == body['Whos_Asking']) if 'Username' in body else False

    def SearchForNumber(searchTerm, res):
        try:
            selector = {
                "Journeys": {
                    "$elemMatch": {
                        "Train_Number": int(searchTerm)
                    }
                }
            }
            queryRef = list(
                glob.COUCH_USER_ACTIVITY.get_query_result(
                    selector, fields=['key', 'Journeys']))
            for docs in queryRef:
                for jDoc in docs['Journeys']:
                    if jDoc['Train_Number'] == int(searchTerm):
                        jDoc.update({'Username': docs['key'].split(":")[1]})
                        # Get Train Number Details
                        res.append(jDoc)
        except KeyError:
            glob.LOGGER("[SEARCH JRNY] Could not find {} train number".format(
                searchTerm))
            print("[SEARCH JRNY] Could not find {} train number".format(
                searchTerm))
        except Exception as err:
            glob.LOGGER("[SEARCH JRNY] Error @ train number \n {}".format(err))
            print("[SEARCH JRNY] Error @ train number \n {}".format(err))

        return res

    def SearchForName(searchTerm):
        return

    def SearchForLocation(searchTerm):
        return

    numberRegx = r"^\d{3,5}$"
    tNameRegx = r"\w{5,}"
    fromToRegex = r"\w{1,4}"
    # usernameRegex = r"(\w{3,}|\w+\|J\d+)"
    # jidRegex = r"\w+\|J\d+"

    if 'Specific_Search' in body.keys() and body['Specific_Search']:
        ''' Specific Search '''
        if body['Specific_Search'] == 'Username' and Username in body.keys():
            ''' User Specific Search '''
            # if len(re.match(numberRegx))
            return HttpResponse(status=404)
        elif body['Specific_Search'] == 'Location' and Location in body.keys():
            ''' Location Specific Search '''
            return
        else:
            return HttpResponse(status=400)

    else:
        ''' General Search '''

    if 'Private' in body.keys() and body['Private'] and privileged:
        ''' Private_Journeys '''
        # if re.match(numberRegx, str())
    else:
        ''' Journeys '''
        if re.match(numberRegx, str(searchTerm)):
            ''' Search Train_Number '''
            try:
                selector = {
                    "Journeys": {
                        "$elemMatch": {
                            "Train_Number": int(searchTerm)
                        }
                    }
                }
                queryRef = list(
                    glob.COUCH_USER_ACTIVITY.get_query_result(
                        selector, fields=['key', 'Journeys']))
                for docs in queryRef:
                    for journeyDoc in docs['Journeys']:
                        if journeyDoc['Train_Number'] == int(searchTerm):
                            journeyDoc.update(
                                {'Username': docs['key'].split(":")[1]})
                            res.append(journeyDoc)
            except KeyError:
                print("[SEARCH JRNY] Could not find {} train number".format(
                    searchTerm))
            except Exception as err:
                print("[SEARCH JRNY] Error @ train number \n {}".format(err))
    """
	if 'Username' in body:
		Username = body['Username']
		try:
			userRef = glob.COUCH_USER_ACTIVITY[ ':'.join((glob.PARTITION_KEY_DICT[ Username[0].lower() ], Username)) ]
			res.extend(userRef['Journeys'])
		except KeyError:
			glob.LOGGER("[SEARCH JRNY] User activity not found for {}".format(Username))
			print("[SEARCH JRNY] User activity not found for {}".format(Username))
			return HttpResponse(status = 404)
		except Exception as err:
			glob.LOGGER("[SEARCH JRNY] Error: \n {}".format(err))
			print("[SEARCH JRNY] Error: \n {}".format(err))
			return HttpResponse(status = 500)

	if 'Train_Number' in body:
		selector = {"Journeys": { "$elemMatch": { "Train_Number": int(body['Train_Number']) } } }
		queryRef = list(glob.COUCH_USER_ACTIVITY.get_query_result(selector, fields = ['Journeys']))
		for docs in queryRef:
			for journeyDoc in docs['Journeys']:
				if journeyDoc['Train_Number'] == int(body['Train_Number']):
					if 'Train_Number' in journeyDoc and 'Train_Name' not in journeyDoc:
						trainRef = glob.COUCH_TRAIN_DATA[ str(journeyDoc[ 'Train_Number' ]) ]['Train_Name']
						journeyDoc['Train_Name'] = trainRef
					res.append(journeyDoc)

	if 'From' in body:
		selector = {"Journeys": { "$elemMatch": { "From": body['From'] } } }
		queryRef = list(glob.COUCH_USER_ACTIVITY.get_query_result(selector, fields = ['Journeys']))
		for docs in queryRef:
			for journeyDoc in docs['Journeys']:
				if journeyDoc['From'] == body['From']:
					if 'Train_Number' in journeyDoc and 'Train_Name' not in journeyDoc:
						trainRef = glob.COUCH_TRAIN_DATA[ str(journeyDoc[ 'Train_Number' ]) ]['Train_Name']
						journeyDoc['Train_Name'] = trainRef
					res.append(journeyDoc)
		# res.extend([
		# 	journeyDoc for doc in queryRef for journeyDoc in doc['Journeys']\
		# 	if journeyDoc['From'] == body['From'] 
		# ])

	if 'To' in body:
		selector = {"Journeys": { "$elemMatch": { "To": body['To'] } } }
		queryRef = list(glob.COUCH_USER_ACTIVITY.get_query_result(selector, fields = ['Journeys']))
		for docs in queryRef:
			for journeyDoc in docs['Journeys']:
				if journeyDoc['To'] == body['To']:
					if 'Train_Number' in journeyDoc and 'Train_Name' not in journeyDoc:
						trainRef = glob.COUCH_TRAIN_DATA[ str(journeyDoc[ 'Train_Number' ]) ]['Train_Name']
						journeyDoc['Train_Name'] = trainRef
					res.append(journeyDoc)
		# res.extend([
		# 	journeyDoc for doc in queryRef for journeyDoc in doc['Journeys']\
		# 	if journeyDoc['To'] == body['To'] 
		# ])
	"""

    if not len(res):
        # glob.LOGGER("[SEARCH JRNY] Response: {}".format(res))
        return JsonResponse([], safe=False, status=204)
    else:
        res.sort(key=lambda doc: doc['Date_Time'], reverse=True)
        # glob.LOGGER("[SEARCH JRNY] Response: {}".format(res))
        return JsonResponse(res, safe=False)
Esempio n. 13
0
def NewJourneyHandler(req):
    if not req.body:
        glob.LOGGER("[NEW JRNY] Invalid Request: Null body")
        print("[NEW JRNY] Invalid Request: Null body")
        return HttpResponse(status=400)
    body = JSON.loads(req.body)
    if not 'Whos_Asking' in body.keys() or not body['Whos_Asking']:
        glob.LOGGER("[NEW JRNY] Invalid Request: Missing Whos_Asking")
        print("[NEW JRNY] Invalid Request: Missing Whos_Asking")
        return HttpResponse(status=400)

    Username = body['Whos_Asking']

    glob.LOGGER("[NEW JRNY] New request by {}: \n {}".format(
        Username, str(body)))
    print("[NEW JRNY] New request by {}: \n {}".format(Username, str(body)))

    journeyDoc = {
        k: v
        for k, v in body.items() if v and k not in ('Username', 'Private')
    }
    journeyDoc['Date_Time'] = int(TIME.time())
    # journeyDoc['Journey_ID'] = ':'.join((Username, 'J'+str(RANDINT(1001, 9999))+str(RANDINT(1001, 9999))))
    # "".join([random.choice(string.ascii_letters) for i in range(20)])

    try:
        userRef = glob.COUCH_USER_ACTIVITY[':'.join(
            (glob.PARTITION_KEY_DICT[Username[0].lower()], Username))]
        glob.LOGGER(
            "[NEW JRNY] User {} has previous activity".format(Username))
        print("[NEW JRNY] User {} has previous activity".format(Username))
    except KeyError:
        glob.LOGGER("[NEW JRNY] First activity by user {}".format(Username))
        print("[NEW JRNY] First activity by user {}".format(Username))
        CreateUserActivity(Username)
        userRef = glob.COUCH_USER_ACTIVITY[':'.join(
            (glob.PARTITION_KEY_DICT[Username[0].lower()], Username))]
    except Exception as err:
        glob.LOGGER("[NEW JRNY] Error at userRef \n {}".format(err))
        print("[NEW JRNY] Error at userRef \n {}".format(err))

    if 'Private' in body.keys() and bool(body['Private']):
        ''' Private Journey '''
        if 'Private_Journeys' in userRef:
            ''' Another Journey '''
            glob.LOGGER(
                "[NEW JRNY] User {} has previous Private Journeys".format(
                    Username))
            print("[NEW JRNY] User {} has previous Private Journeys".format(
                Username))
            userRef['Private_Journeys'].append(journeyDoc)
            userRef.save()
        else:
            ''' First Journey '''
            glob.LOGGER(
                "[NEW JRNY] First Private Journey of User {}".format(Username))
            print(
                "[NEW JRNY] First Private Journey of User {}".format(Username))
            userRef['Private_Journeys'] = [journeyDoc]
            userRef.save()
            AwardThisUser(Username, "YFJ")
    else:
        ''' Public Journey '''
        if 'Journeys' in userRef:
            ''' Another Journey '''
            glob.LOGGER(
                "[NEW JRNY] User {} has previous Journeys".format(Username))
            print("[NEW JRNY] User {} has previous Journeys".format(Username))
            userRef['Journeys'].append(journeyDoc)
            userRef.save()
        else:
            ''' First Journey '''
            glob.LOGGER("[NEW JRNY] First Journey of User {}".format(Username))
            print("[NEW JRNY] First Journey of User {}".format(Username))
            userRef['Journeys'] = [journeyDoc]
            userRef.save()
            AwardThisUser(Username, "YFJ")

    glob.LOGGER("[NEW JRNY] Request handled successfully! Response: 200")
    print("[NEW JRNY] Request handled successfully! Response: 200")
    return HttpResponse(status=200)
Esempio n. 14
0
def EditJourneyHandler(req):
    if not req.body:
        glob.LOGGER("[EDIT JRNY] Invalid Request: Null body")
        print("[EDIT JRNY] Invalid Request: Null body")
        return HttpResponse(status=400)
    body = JSON.loads(req.body)
    if not 'Whos_Asking' in body.keys() or not body['Whos_Asking']:
        glob.LOGGER("[EDIT JRNY] Invalid Request: Missing Whos_Asking")
        print("[EDIT JRNY] Invalid Request: Missing Whos_Asking")
        return HttpResponse(status=400)
    if not 'Existing_Doc' in body.keys() or not body['Existing_Doc']:
        glob.LOGGER("[EDIT JRNY] Invalid Request: Missing Existing_Doc")
        print("[EDIT JRNY] Invalid Request: Missing Existing_Doc")
        return HttpResponse(status=400)
    if not 'Changes' in body.keys() or not body['Changes']:
        glob.LOGGER("[EDIT JRNY] Invalid Request: Missing Changes")
        print("[EDIT JRNY] Invalid Request: Missing Changes")
        return HttpResponse(status=400)

    glob.LOGGER("[EDIT JRNY] New Request {}".format(body))
    print("[EDIT JRNY] New Request {}".format(body))

    Username = body['Whos_Asking']
    existingDoc = body['Existing_Doc']
    changes = body['Changes']

    glob.LOGGER("[EDIT JRNY] Request by {}: \n {}".format(Username, body))
    print("[EDIT JRNY] Request by {}: \n {}".format(Username, body))

    try:
        userRef = glob.COUCH_USER_ACTIVITY[\
         ':'.join((glob.PARTITION_KEY_DICT[ Username[0].lower() ], Username))\
        ]
    except KeyError:
        glob.LOGGER(
            "[EDIT JRNY] User activity not found for {}".format(Username))
        print("[EDIT JRNY] User activity not found for {}".format(Username))
        glob.LOGGER("[EDIT JRNY] Request handled successfully! Response: 404")
        print("[EDIT JRNY] Request handled successfully! Response: 404")
        return HttpResponse(status=404)
    except Exception as err:
        glob.LOGGER("[EDIT JRNY] Error: \n {}".format(err))
        print("[EDIT JRNY] Error: \n {}".format(err))
        return HttpResponse(status=500)

    if 'Journeys' in userRef:
        index = userRef['Journeys'].index(existingDoc)
        if index > -1:
            userRef['Journeys'][index].update(changes)
            userRef.save()
            glob.LOGGER("[EDIT JRNY] Updated Journeys of {}".format(Username))
            print("[EDIT JRNY] Updated Journeys of {}".format(Username))

    if 'Private_Journeys' in userRef:
        index = userRef['Private_Journeys'].index(existingDoc)
        if index > -1:
            userRef['Private_Journeys'][index].update(changes)
            userRef.save()
            glob.LOGGER(
                "[EDIT JRNY] Updated Private Journeys of {}".format(Username))
            print(
                "[EDIT JRNY] Updated Private Journeys of {}".format(Username))

    glob.LOGGER("[EDIT JRNY] Request handled successfully! Response: 200")
    print("[EDIT JRNY] Request handled successfully! Response: 200")
    return HttpResponse(status=200)
Esempio n. 15
0
def TimeJourneysHandler(req):
    if not req.body:
        glob.LOGGER("[TIME JRNY] Invalid Request: Null body")
        print("[TIME JRNY] Invalid Request: Null body")
        return HttpResponse(status=400)
    body = JSON.loads(req.body)
    if not 'Username' in body.keys() or not body['Username']:
        glob.LOGGER("[TIME JRNY] Invalid Request: Missing Username")
        print("[TIME JRNY] Invalid Request: Missing Username")
        return HttpResponse(status=400)
    if not 'Search_Time' in body.keys() or not body['Search_Time']:
        glob.LOGGER("[TIME JRNY] Invalid Request: Missing Search Time")
        print("[TIME JRNY] Invalid Request: Missing Search Time")
        return HttpResponse(status=400)
    if not 'Search_Type' in body.keys(
    ) or not body['Search_Type'] or body['Search_Type'] not in ('At', 'Over',
                                                                'Under'):
        glob.LOGGER("[TIME JRNY] Invalid Request: Missing Search Type")
        print("[TIME JRNY] Invalid Request: Missing Search Type")
        return HttpResponse(status=400)

    Username = body['Username']
    searchTime = int(body['Search_Time'])

    if 'Whos_Asking' in body.keys() and body['Whos_Asking']:
        privileged = bool(body['Username'] == body['Whos_Asking'])
        glob.LOGGER("[TIME JRNY] Request by {} for {}: \n {}".format(
            body['Whos_Asking'], Username, body))
        print("[TIME JRNY] Request by {} for {}: \n {}".format(
            body['Whos_Asking'], Username, body))
    else:
        glob.LOGGER("[TIME JRNY] Request for {}: \n {}".format(Username, body))
        print("[TIME JRNY] Request for {}: \n {}".format(Username, body))

    def SeachTimeInJourneysArray(journeysArray, searchTime, searchType):
        if searchType == 'At':
            ''' At / On '''
            glob.LOGGER("[TIME JRNY] At request")
            print("[TIME JRNY] At request")
            return list(filter(lambda journeyDoc:\
              'Time_In' in journeyDoc and 'Time_Out' in journeyDoc\
              and journeyDoc['Time_In'] < searchTime and journeyDoc['Time_Out'] > searchTime\
             , journeysArray\
            ))
        elif searchType == 'Under':
            ''' Under '''
            glob.LOGGER("[TIME JRNY] Under request")
            print("[TIME JRNY] Under request")
            return list(filter(lambda journeyDoc:\
              'Time_Out' in journeyDoc and journeyDoc['Time_Out'] < searchTime\
             , journeysArray\
            ))
        elif searchType == 'Over':
            ''' Over '''
            glob.LOGGER("[TIME JRNY] Over request")
            print("[TIME JRNY] Over request")
            return list(filter(lambda journeyDoc:\
              'Time_In' in journeyDoc and  journeyDoc['Time_In'] > searchTime\
             , journeysArray\
            ))

    try:
        userRef = glob.COUCH_USER_ACTIVITY[\
         ':'.join((glob.PARTITION_KEY_DICT[ Username[0].lower() ], Username))\
        ]
        if 'Private' in body.keys():
            ''' Private Journeys '''
            res = SeachTimeInJourneysArray(userRef['Private_Journeys'],
                                           searchTime, 1)
            glob.LOGGER(
                "[TIME JRNY] Request handled successfully! Response: \n {}".
                format(str(res)))
            print("[TIME JRNY] Request handled successfully! Response: \n {}".
                  format(str(res)))
            return JsonResponse(res, safe=False)
        else:
            ''' Public Journeys '''
            res = SeachTimeInJourneysArray(userRef['Journeys'], searchTime,
                                           body['Search_Type'])
            glob.LOGGER(
                "[TIME JRNY] Request handled successfully! Response: \n {}".
                format(str(res)))
            print("[TIME JRNY] Request handled successfully! Response: \n {}".
                  format(str(res)))
            return JsonResponse(res, safe=False)
    except KeyError:
        glob.LOGGER("[TIME JRNY] User {} has no activity".format(Username))
        print("[TIME JRNY] User {} has no activity".format(Username))
        glob.LOGGER("[TIME JRNY] Request handled successfully! Response: 204")
        print("[TIME JRNY] Request handled successfully! Response: 204")
        return HttpResponse(status=204)
    except Exception as err:
        glob.LOGGER("[TIME JRNY] Error: \n {}".format(err))
        print("[TIME JRNY] Error: \n {}".format(err))
        return HttpResponse(status=500)
Esempio n. 16
0
def UserJourneysHandler(req):
    if not req.body:
        glob.LOGGER("[LIST JRNY] Invalid Request: Null body")
        print("[LIST JRNY] Invalid Request: Null body")
        return HttpResponse(status=400)
    body = JSON.loads(req.body)
    if not 'Username' in body.keys() or not body['Username']:
        glob.LOGGER("[LIST JRNY] Invalid Request: Missing Username")
        print("[LIST JRNY] Invalid Request: Missing Username")
        return HttpResponse(status=400)

    Username = body['Username']
    res = []

    if 'Whos_Asking' in body.keys() and body['Whos_Asking']:
        privileged = bool(body['Username'] == body['Whos_Asking'])
        glob.LOGGER("[LIST JRNY] Request by {} for {}: \n {}".format(
            body['Whos_Asking'], Username, str(body)))
        print("[LIST JRNY] Request by {} for {}: \n {}".format(
            body['Whos_Asking'], Username, str(body)))
    else:
        glob.LOGGER("[LIST JRNY] Request for {}: \n {}".format(
            Username, str(body)))
        print("[LIST JRNY] Request for {}: \n {}".format(Username, str(body)))

    try:
        userRef = glob.COUCH_USER_ACTIVITY[\
         ':'.join((glob.PARTITION_KEY_DICT[ Username[0].lower() ], Username))\
        ]['Journeys']
        glob.LOGGER(
            "[LIST JRNY] User {} has previous journeys".format(Username))
        print("[LIST JRNY] User {} has previous journeys".format(Username))

        for jDoc in userRef:
            if 'Train_Number' in jDoc and 'Train_Name' not in jDoc:
                try:
                    trainQuery = list(\
                     Train.objects.filter(\
                      Train_Number = int(jDoc[ 'Train_Number' ])\
                     ).values_list('Train_Name', flat=True)\
                    )
                    jDoc.update({"Train_Name": trainQuery[0]})
                except:
                    print("[LIST JRNY] Could not find train {}".format(
                        jDoc['Train_Number']))
            res.append(jDoc)

        # for journeyDoc in userRef:
        # 	if 'Train_Number' in journeyDoc and 'Train_Name' not in journeyDoc:
        # 		trainRef = glob.COUCH_TRAIN_DATA[ str(journeyDoc[ 'Train_Number' ]) ]['Train_Name']
        # 		journeyDoc['Train_Name'] = trainRef
        # 	res.append(journeyDoc)

    except KeyError:
        glob.LOGGER(
            "[LIST JRNY] User {} does not have journeys".format(Username))
        print("[LIST JRNY] User {} does not have journeys".format(Username))
    except Exception as err:
        glob.LOGGER("[LIST JRNY] Error: \n {}".format(err))
        print("[LIST JRNY] Error: \n {}".format(err))
        return HttpResponse(status=500)

    if 'Private' in body.keys() and bool(body['Private']) and privileged:
        try:
            userRef = glob.COUCH_USER_ACTIVITY[\
             ':'.join((glob.PARTITION_KEY_DICT[ Username[0].lower() ], Username))\
            ]['Private_Journeys']
            glob.LOGGER(
                "[LIST JRNY] User {} has previous Private Journeys".format(
                    Username))
            print("[LIST JRNY] User {} has previous Private Journeys".format(
                Username))

            for jDoc in userRef:
                if 'Train_Number' in jDoc and 'Train_Name' not in jDoc:
                    try:
                        trainQuery = list(\
                         Train.objects.filter(\
                          Train_Number = int(jDoc[ 'Train_Number' ])\
                         ).values_list('Train_Name', flat=True)\
                        )
                        jDoc.update({"Train_Name": trainQuery[0]})
                    except:
                        print("[LIST JRNY] Could not find train {}".format(
                            jDoc['Train_Number']))
                res.append(jDoc)

            # for journeyDoc in userRef:
            # 	journeyDoc['Private'] = True
            # 	if 'Train_Number' in journeyDoc and 'Train_Name' not in journeyDoc:
            # 		trainRef = glob.COUCH_TRAIN_DATA[ str(journeyDoc[ 'Train_Number' ]) ]['Train_Name']
            # 		journeyDoc['Train_Name'] = trainRef
            # 	res.append(journeyDoc)

        except KeyError:
            glob.LOGGER(
                "[LIST JRN] User {} does not have Private Journeys".format(
                    Username))
            print("[LIST JRN] User {} does not have Private Journeys".format(
                Username))
        except Exception as err:
            glob.LOGGER("[LIST JRNY] Error: \n {}".format(err))
            print("[LIST JRNY] Error: \n {}".format(err))
            return HttpResponse(status=500)

    if not len(res):
        glob.LOGGER("[LIST JRNY] Request handled successfully! Response: 204")
        print("[LIST JRNY] Request handled successfully! Response: 204")
        return JsonResponse([], safe=False, status=204)
    else:
        res.sort(key=lambda doc: doc['Date_Time'], reverse=True)
        glob.LOGGER(
            "[LIST JRNY] Request handled successfully! Response: \n {}".format(
                str(res)))
        print(
            "[LIST JRNY] Request handled successfully! Response: \n {}".format(
                str(res)))
        return JsonResponse(res, safe=False)