| Line 24... |
Line 24... |
| 24 |
|
24 |
|
| 25 |
'''
|
25 |
'''
|
| 26 |
This class is for only data transfer. Never used outside this module.
|
26 |
This class is for only data transfer. Never used outside this module.
|
| 27 |
'''
|
27 |
'''
|
| 28 |
class _DeliveryEstimateObject:
|
28 |
class _DeliveryEstimateObject:
|
| 29 |
def __init__(self, delivery_time, reliability, provider_id, codAllowed, otgAvailable):
|
29 |
def __init__(self, delivery_time, delivery_delay, provider_id, codAllowed, otgAvailable):
|
| 30 |
self.delivery_time = delivery_time
|
30 |
self.delivery_time = delivery_time
|
| 31 |
self.reliability = reliability
|
31 |
self.delivery_delay = delivery_delay
|
| 32 |
self.provider_id = provider_id
|
32 |
self.provider_id = provider_id
|
| 33 |
self.codAllowed = codAllowed
|
33 |
self.codAllowed = codAllowed
|
| 34 |
self.otgAvailable = otgAvailable
|
34 |
self.otgAvailable = otgAvailable
|
| 35 |
|
35 |
|
| 36 |
def initialize(dbname="logistics", db_hostname="localhost"):
|
36 |
def initialize(dbname="logistics", db_hostname="localhost"):
|
| Line 45... |
Line 45... |
| 45 |
|
45 |
|
| 46 |
def __cache_delivery_estimate_table():
|
46 |
def __cache_delivery_estimate_table():
|
| 47 |
delivery_estimates = DeliveryEstimate.query.all()
|
47 |
delivery_estimates = DeliveryEstimate.query.all()
|
| 48 |
for delivery_estimate in delivery_estimates:
|
48 |
for delivery_estimate in delivery_estimates:
|
| 49 |
delivery_estimate_cache[delivery_estimate.destination_pin, delivery_estimate.provider_id]\
|
49 |
delivery_estimate_cache[delivery_estimate.destination_pin, delivery_estimate.provider_id]\
|
| 50 |
=delivery_estimate.delivery_time, delivery_estimate.reliability
|
50 |
=delivery_estimate.delivery_time, delivery_estimate.delivery_delay
|
| 51 |
|
51 |
|
| 52 |
def __cache_serviceable_location_details_table():
|
52 |
def __cache_serviceable_location_details_table():
|
| 53 |
serviceable_locations = ServiceableLocationDetails.query.filter(or_("exp!=0","cod!=0"))
|
53 |
serviceable_locations = ServiceableLocationDetails.query.filter(or_("exp!=0","cod!=0"))
|
| 54 |
for serviceable_location in serviceable_locations:
|
54 |
for serviceable_location in serviceable_locations:
|
| 55 |
try:
|
55 |
try:
|
| Line 79... |
Line 79... |
| 79 |
|
79 |
|
| 80 |
if not provider_id:
|
80 |
if not provider_id:
|
| 81 |
raise LogisticsServiceException(101, "No provider assigned for pincode: " + str(destination_pin))
|
81 |
raise LogisticsServiceException(101, "No provider assigned for pincode: " + str(destination_pin))
|
| 82 |
try:
|
82 |
try:
|
| 83 |
delivery_time = delivery_estimate_cache[destination_pin, provider_id][0]
|
83 |
delivery_time = delivery_estimate_cache[destination_pin, provider_id][0]
|
| 84 |
reliability = delivery_estimate_cache[destination_pin, provider_id][1]
|
84 |
delivery_delay = delivery_estimate_cache[destination_pin, provider_id][1]
|
| 85 |
delivery_estimate = _DeliveryEstimateObject(delivery_time, reliability, provider_id, codAllowed, otgAvailable)
|
85 |
delivery_estimate = _DeliveryEstimateObject(delivery_time, delivery_delay, provider_id, codAllowed, otgAvailable)
|
| 86 |
return delivery_estimate
|
86 |
return delivery_estimate
|
| 87 |
except Exception as ex:
|
87 |
except Exception as ex:
|
| 88 |
print ex
|
88 |
print ex
|
| 89 |
raise LogisticsServiceException(103, "No Logistics partner listed for this destination pincode and the primary warehouse")
|
89 |
raise LogisticsServiceException(103, "No Logistics partner listed for this destination pincode and the primary warehouse")
|
| 90 |
|
90 |
|