@@ -58,6 +58,20 @@ class Meta:
58
58
db_table = 'feed'
59
59
app_label = 'multigtfs'
60
60
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
+
61
75
def __str__ (self ):
62
76
if self .name :
63
77
return "%d %s" % (self .id , self .name )
@@ -88,14 +102,10 @@ def import_gtfs(self, gtfs_obj):
88
102
opener = opener_from_zipfile (zfile )
89
103
filelist = zfile .namelist ()
90
104
91
- gtfs_order = (
92
- Agency , Stop , Route , Service , ServiceDate , ShapePoint , Trip ,
93
- StopTime , Frequency , Fare , FareRule , Transfer , FeedInfo ,
94
- )
95
105
post_save .disconnect (dispatch_uid = 'post_save_shapepoint' )
96
106
post_save .disconnect (dispatch_uid = 'post_save_stop' )
97
107
try :
98
- for klass in gtfs_order :
108
+ for klass in self . _gtfs_order :
99
109
for f in filelist :
100
110
if f .endswith (klass ._filename ):
101
111
start_time = time .time ()
@@ -155,12 +165,7 @@ def export_gtfs(self, gtfs_file):
155
165
total_start = time .time ()
156
166
z = open_writable_zipfile (gtfs_file )
157
167
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 :
164
169
start_time = time .time ()
165
170
content = klass .export_txt (self )
166
171
if content :
0 commit comments