1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | #!/usr/bin/python2.5 # Copyright (C) 2007 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from problems import default_problem_reporter from gtfsobjectbase import GtfsObjectBase class FareRule(GtfsObjectBase): """This class represents a rule that determines which itineraries a fare rule applies to.""" _REQUIRED_FIELD_NAMES = ['fare_id'] _FIELD_NAMES = _REQUIRED_FIELD_NAMES + ['route_id', 'origin_id', 'destination_id', 'contains_id'] _TABLE_NAME = "fare_rules" def __init__(self, fare_id=None, route_id=None, origin_id=None, destination_id=None, contains_id=None, field_dict=None): self._schedule = None (self.fare_id, self.route_id, self.origin_id, self.destination_id, self.contains_id) = \ (fare_id, route_id, origin_id, destination_id, contains_id) if field_dict: if isinstance(field_dict, self.GetGtfsFactory().FareRule): # Special case so that we don't need to re-parse the attributes to # native types iteritems returns all attributes that don't start with _ for k, v in field_dict.iteritems(): self.__dict__[k] = v else: self.__dict__.update(field_dict) # canonicalize non-content values as None if not self.route_id: self.route_id = None if not self.origin_id: self.origin_id = None if not self.destination_id: self.destination_id = None if not self.contains_id: self.contains_id = None def GetFieldValuesTuple(self): return [getattr(self, fn) for fn in self._FIELD_NAMES] def __getitem__(self, name): return getattr(self, name) def __eq__(self, other): if not other: return False if id(self) == id(other): return True return self.GetFieldValuesTuple() == other.GetFieldValuesTuple() def __ne__(self, other): return not self.__eq__(other) def AddToSchedule(self, schedule, problems): self._schedule = schedule schedule.AddFareRuleObject(self, problems) def ValidateBeforeAdd(self, problems): return True def ValidateAfterAdd(self, problems): return |