Extract the checkpoints and store in self.tracking_data

def Extract_Checkpoints(self):
		'''
			Extract the checkpoints and store in self.tracking_data
		'''
		soup = BeautifulSoup(self.page,'xml')

		if soup.find('result').string.strip() == 'failed':
			raise ValueError('The Tracking number is invalid.')

		status = soup.find('DOCKET_STATUS').string.strip()

		if status == 'Delivered':
			self.status = 'C'
		elif status == 'Rebooked':
			self.status = 'R'
		else:
			self.status = 'T'

		# Checkpoints extraction begins here
		rows = soup.findAll('ROW')

		for row in rows:
			'''
				Each row has four columns:
					date --- time --- location --- status
				Merge #1 and #2
				Append the 3 to self.tracking_data
			'''
			date = row.find('INTRANSIT_DATE').string.strip()
			time = row.find('INTRANSIT_TIME').string.strip()
			try:
				location = row.find('INTRANSIT_LOCATION').string.strip()
			except AttributeError:
				location = ''
			status = row.find('INTRANSIT_STATUS').string.strip()
			date_time = datetime.strptime(' '.join([date,time]),"%d-%b-%Y %H:%M")

			self.tracking_data.append({'status':status,'date':date_time,'location':location})

		# Sort the checkpoints based on Date and Time --- this is important
		self.tracking_data = sorted(self.tracking_data, key=lambda k: k['date'])