Skip to content

Commit a132277

Browse files
committed
Make multigtfs easily extensible
1 parent ca19ee6 commit a132277

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

multigtfs/models/feed.py

+16-11
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,20 @@ class Meta:
5858
db_table = 'feed'
5959
app_label = 'multigtfs'
6060

61+
_gtfs_order = [
62+
Agency, Stop, Route, Service, ServiceDate, ShapePoint, Trip,
63+
StopTime, Frequency, Fare, FareRule, Transfer, FeedInfo,
64+
]
65+
66+
@classmethod
67+
def register_model(cls, klass):
68+
cls._gtfs_order.append(klass)
69+
return klass
70+
71+
@classmethod
72+
def unregister_model(cls, klass):
73+
cls._gtfs_order.remove(klass)
74+
6175
def __str__(self):
6276
if self.name:
6377
return "%d %s" % (self.id, self.name)
@@ -88,14 +102,10 @@ def import_gtfs(self, gtfs_obj):
88102
opener = opener_from_zipfile(zfile)
89103
filelist = zfile.namelist()
90104

91-
gtfs_order = (
92-
Agency, Stop, Route, Service, ServiceDate, ShapePoint, Trip,
93-
StopTime, Frequency, Fare, FareRule, Transfer, FeedInfo,
94-
)
95105
post_save.disconnect(dispatch_uid='post_save_shapepoint')
96106
post_save.disconnect(dispatch_uid='post_save_stop')
97107
try:
98-
for klass in gtfs_order:
108+
for klass in self._gtfs_order:
99109
for f in filelist:
100110
if f.endswith(klass._filename):
101111
start_time = time.time()
@@ -155,12 +165,7 @@ def export_gtfs(self, gtfs_file):
155165
total_start = time.time()
156166
z = open_writable_zipfile(gtfs_file)
157167

158-
gtfs_order = (
159-
Agency, Service, ServiceDate, Fare, FareRule, FeedInfo, Frequency,
160-
Route, ShapePoint, StopTime, Stop, Transfer, Trip,
161-
)
162-
163-
for klass in gtfs_order:
168+
for klass in self._gtfs_order:
164169
start_time = time.time()
165170
content = klass.export_txt(self)
166171
if content:

0 commit comments

Comments
 (0)