Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(127)

Unified Diff: python/transitfeed.py

Issue 75063: Adding validation for uniqueness of service_id X date in calendar_dates SVN Base: http://googletransitdatafeed.googlecode.com/svn/trunk/
Patch Set: Removing unnecessary linebreak Created 1 month, 1 week ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side by-side-diff with in-line comments
Download patch
Index: python/transitfeed.py
===================================================================
--- python/transitfeed.py (revision 1127)
+++ python/transitfeed.py (working copy)
@@ -171,9 +171,13 @@
context=context, context2=self._context, type=type)
self._Report(e)
- def DuplicateID(self, column_name, value, context=None):
- e = DuplicateID(column_name=column_name, value=value,
- context=context, context2=self._context)
+ def DuplicateID(self, column_names, values, context=None, type=TYPE_ERROR):
+ if isinstance(column_names, tuple):
+ column_names = '(' + ', '.join(column_names) + ')'
+ if isinstance(values, tuple):
+ values = '(' + ', '.join(values) + ')'
+ e = DuplicateID(column_name=column_names, value=values,
+ context=context, context2=self._context, type=type)
self._Report(e)
def UnusedStop(self, stop_id, stop_name, context=None):
@@ -2448,7 +2452,11 @@
result.sort() # helps with __eq__
return result
- def SetDateHasService(self, date, has_service=True):
+ def SetDateHasService(self, date, has_service=True, problems=None):
+ if date in self.date_exceptions and problems:
+ problems.DuplicateID(('service_id', 'date'),
+ (self.service_id, date),
+ type=TYPE_WARNING)
self.date_exceptions[date] = has_service and 1 or 2
def ResetDateToNormalService(self, date):
@@ -3975,15 +3983,16 @@
ServicePeriod._FIELD_NAMES,
ServicePeriod._FIELD_NAMES_REQUIRED):
context = (file_name, row_num, row, cols)
+ self._problems.SetFileContext(*context)
period = ServicePeriod(field_list=row)
if period.service_id in periods:
self._problems.DuplicateID('service_id', period.service_id)
- continue
+ else:
+ periods[period.service_id] = (period, context)
+ self._problems.ClearContext()
- periods[period.service_id] = (period, context)
-
# process calendar_dates.txt
if self._HasFile(file_name_dates):
# ['service_id', 'date', 'exception_type']
@@ -3991,6 +4000,7 @@
for (row, row_num, cols) in self._ReadCSV(file_name_dates,
fields, fields):
context = (file_name_dates, row_num, row, cols)
+ self._problems.SetFileContext(*context)
service_id = row[0]
@@ -4003,11 +4013,12 @@
exception_type = row[2]
if exception_type == u'1':
- period.SetDateHasService(row[1], True)
+ period.SetDateHasService(row[1], True, self._problems)
elif exception_type == u'2':
- period.SetDateHasService(row[1], False)
+ period.SetDateHasService(row[1], False, self._problems)
else:
self._problems.InvalidValue('exception_type', exception_type)
+ self._problems.ClearContext()
# Now insert the periods into the schedule object, so that they're
# validated with both calendar and calendar_dates info present
« python/test/testtransitfeed.py ('k') | no next file »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld r497