@@ -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 sorted (self ._gtfs_order , key = lambda k : k ._filename ):
164169 start_time = time .time ()
165170 content = klass .export_txt (self )
166171 if content :
0 commit comments