Script to grab stop codes from allstops.xml and sort
[ottawa-travel-planner.git] / PlanLocation.py
blobd6272a5a28d1fa86df0d76c8fe556a863717aefe
2 # vi: set softtabstop=4 shiftwidth=4 tabstop=8 expandtab:
4 class PlanLocation:
5 """Defines a trip endpoint (street address, intersection, etc.)"""
7 def getPage(self, isFrom):
8 """Returns a string, e.g. FromAddress.oci"""
9 return self.selectPage(isFrom, self.type)
11 def toPlannerParams(self, isFrom):
12 """Returns a tuple of tuples of CGI parameters."""
13 pass
15 def selectBase(self, isFrom):
16 return ("to", "from")[isFrom]
18 def selectPage(self, isFrom, uctype):
19 """returns e.g. FromAddress.oci"""
20 return "%s%s.oci" % (self.selectBase(isFrom).title(), uctype)
22 type = None
24 class AddressLocation(PlanLocation):
25 def __init__(self, address):
26 self.address = address
28 def toPlannerParams(self, isFrom):
29 return ((self.selectBase(isFrom) + "Address", self.address),
30 ("streetType", "Other"))
32 type = "Address"
34 class IntersectionLocation(PlanLocation):
35 def __init__(self, street1, street2):
36 self.street1 = street1
37 self.street2 = street2
39 def toPlannerParams(self, isFrom):
40 base = self.selectBase(isFrom)
41 return ((base + "OnStreet", self.street1),
42 (base + "AtStreet", self.street2))
44 type = "Intersection"
46 class StopLocation(PlanLocation):
47 """A 560-1000 stop number."""
48 def __init__(self, stop):
49 self.stop = stop
51 def toPlannerParams(self, isFrom):
52 return ((self.selectBase(isFrom) + "560Code", self.stop),)
54 # There's a "To560.oci" followed by a "To560Confirm.oci"; we can
55 # skip the first one.
56 type = "560Confirm"
58 class LandmarkLocation(PlanLocation):
59 """A well-known location."""
60 def __init__(self, landmark):
61 self.landmark = landmark
63 def toPlannerParams(self, isFrom):
64 return (("landmarkAddress", self.landmark),)
66 type = "LandmarkMultipleMatch"