def setUpClass(cls): super(TestFerryKv6Messages, cls).setUpClass() # Setup data cls.stop_depart = Kv1Stop(dataownercode="WSF", userstopcode=1, location=Point(1, 1)) cls.stop_depart.save() cls.stop_arrive = Kv1Stop(dataownercode="WSF", userstopcode=2, location=Point(1, 1)) cls.stop_arrive.save() cls.line = Kv1Line(dataownercode="WSF", lineplanningnumber=101, publiclinenumber="FF", headsign="FastFerry") cls.line.save() cls.ferry = FerryLine(line=cls.line, stop_depart=cls.stop_depart, stop_arrival=cls.stop_arrive, enable_auto_messages=True) cls.ferry.save() # Going to need a few journeys j1 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=1, direction=1, scheduleref=1, departuretime=cls.calc(datetime.now()-timedelta(hours=2)), ) j1.save() j2 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=2, direction=0, scheduleref=1, departuretime=cls.calc(datetime.now()-timedelta(minutes=19))) j2.save() j3 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=3, direction=1, scheduleref=1, departuretime=cls.calc(datetime.now()+timedelta(minutes=4))) j3.save() j4 = Kv1Journey(dataownercode="WSF", line=cls.line, journeynumber=4, direction=0, scheduleref=1, departuretime=cls.calc(datetime.now()+timedelta(hours=2))) j4.save() Kv1JourneyDate(journey=j1, date=datetime.now()).save() Kv1JourneyDate(journey=j2, date=datetime.now()).save() Kv1JourneyDate(journey=j3, date=datetime.now()).save() Kv1JourneyDate(journey=j4, date=datetime.now()).save()
def get_direction(self): journey = Kv1Journey.find_from_journeynumber(self.ferry.line, self.journeynumber, self.operatingday) if journey: return journey.direction else: raise Kv1Journey.DoesNotExist()
def add_journeys_from_request(self, data): operating_day = parse_date( self.request.GET['operatingday'] ) if 'operatingday' in self.request.GET else get_operator_date() data['operator_date'] = operating_day journey_errors = 0 journeys = [] for journey in self.request.GET['journey'].split(','): if journey == "": continue log.info("Finding journey %s for '%s'" % (journey, self.request.user)) j = Kv1Journey.find_from_realtime( self.request.user.userprofile.company, journey) if j: journeys.append(j) else: journey_errors += 1 log.error("User '%s' (%s) failed to find journey '%s' " % (self.request.user, self.request.user.userprofile.company, journey)) data['journeys'] = journeys if journey_errors > 0: data['journey_errors'] = journey_errors
def handle(self, *args, **options): with open(options['filename'][0], 'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',') first = True to_send = [] to_send_trips = [] for row in reader: if first: first = False else: dataowner, lineplanningnumber, journeynumber = row[ 0].split(':') if self.last_row_date != row[1]: split = row[1].split('-') self.date = date(int(split[0]), int(split[1]), int(split[2])) trips = Kv1Journey.find_from_realtime(dataowner, row[0], date=self.date) if trips is None: self.stdout.write("Not found: %s on %s " % (row[0], row[1])) else: res = self.cancel_trip(trips, self.date) if res is not None: to_send.append(res) to_send_trips.append(row[0]) if len(to_send ) > 0 and len(to_send) % self.BATCH_SIZE == 0: to_send, to_send_trips = self.send( to_send, to_send_trips) self.last_row_date = row[1] if len(to_send) > 0: self.send(to_send, to_send_trips)
def handle(self, *args, **options): with open(options['filename'][0], 'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',') first = True to_send = [] to_send_trips = [] for row in reader: if first: first = False else: dataowner, lineplanningnumber, journeynumber = row[0].split(':') if self.last_row_date != row[1]: split = row[1].split('-') self.date = date(int(split[0]), int(split[1]), int(split[2])) trips = Kv1Journey.find_from_realtime(dataowner, row[0], date=self.date) if trips is None: self.stdout.write("Not found: %s on %s " % (row[0], row[1])) else: res = self.cancel_trip(trips, self.date) if res is not None: to_send.append(res) to_send_trips.append(row[0]) if len(to_send) > 0 and len(to_send) % self.BATCH_SIZE == 0: to_send, to_send_trips = self.send(to_send, to_send_trips) self.last_row_date = row[1] if len(to_send) > 0: self.send(to_send, to_send_trips)
def test_output_mutationmessage(self): journey = Kv1Journey(dataownercode='HTM', line=self.line, journeynumber=101, scheduleref=1, departuretime=905, direction=1) journey.save() change = Kv17Change(dataownercode='HTM', line=self.line, journey=journey, operatingday=datetime(2016, 4, 1), is_cancel=False) change.save() stop_change = Kv17StopChange(change=change, type=5, stop=self.haltes[0], stoporder=1, reasontype=3, subreasontype=7, reasoncontent="Boot is vol") stop_change.save() # Have to pad with "DOSSIER" since otherwise we have invalid XML self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(), self.getCompareXML('openebs/tests/output/kv17_mutationmessage.xml')) stop_change.advicetype = 1 stop_change.subadvicetype = 3 stop_change.advicecontent = "Pak de volgende boot" stop_change.save() self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(), self.getCompareXML('openebs/tests/output/kv17_mutationmessage_complete.xml')) change.delete() self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(), self.getCompareXML('openebs/tests/output/kv17_mutationmessage_recover.xml'))
def to_kv17change(self): journey = Kv1Journey.find_from_journeynumber(self.ferry.line, self.journeynumber, self.operatingday) if journey: change, created = Kv17Change.objects.get_or_create( dataownercode=self.ferry.line.dataownercode, operatingday=self.operatingday, line=self.ferry.line, journey=journey) return journey, change return None, None
def test_output_mutationmessage_and_cancel(self): journey = Kv1Journey(dataownercode='HTM', line=self.line, journeynumber=101, scheduleref=1, departuretime=905, direction=1) journey.save() change = Kv17Change(dataownercode='HTM', line=self.line, journey=journey, operatingday=datetime(2016, 4, 1)) change.save() stop_change = Kv17StopChange(change=change, type=5, stop=self.haltes[0], stoporder=1, reasontype=3, subreasontype=7, reasoncontent="Boot is vol en vaart niet") stop_change.save() self.assertXmlEqual("<DOSSIER>%s</DOSSIER>" % change.to_xml(), self.getCompareXML('openebs/tests/output/kv17_mutationmessage_cancel.xml'))
def add_journeys_from_request(self, data): journey_errors = 0 journeys = [] for journey in self.request.GET['journey'].split(','): if journey == "": continue j = Kv1Journey.find_from_realtime(self.request.user.userprofile.company, journey) if j: journeys.append(j) else: journey_errors += 1 log.error("User '%s' (%s) failed to find journey '%s' " % (self.request.user, self.request.user.userprofile.company, journey)) data['journeys'] = journeys if journey_errors > 0: data['journey_errors'] = journey_errors
def setUpClass(cls): super(TestKv17MessageXmlModel, cls).setUpClass() cls.user = User.objects.create_user("test") cls.haltes = [] halte_a = Kv1Stop(userstopcode=100, dataownercode='HTM', name="Om de hoek", location=Point(1, 1)) halte_b = Kv1Stop(userstopcode=101, dataownercode='HTM', name="De andere hoek", location=Point(1, 10)) halte_a.save() halte_b.save() cls.haltes.append(halte_a) cls.haltes.append(halte_b) cls.line = Kv1Line(dataownercode='HTM', lineplanningnumber="1001", publiclinenumber="1", headsign="Naar Huis") cls.line.save() cls.journey = Kv1Journey(dataownercode='HTM', line=cls.line, journeynumber=100, scheduleref=1, departuretime=900, direction=1) cls.journey.save()
def handle(self, *args, **options): with open(options['filename'][0], 'rb') as csvfile: reader = csv.reader(csvfile, delimiter=',') first = True to_send = [] to_send_trips = [] for row in reader: if first: first = False else: dataowner, lineplanningnumber, journeynumber = row[ 0].split(':') if self.last_row_date != row[1]: split = row[1].split('-') self.date = date(int(split[0]), int(split[1]), int(split[2])) trip = Kv1Journey.find_from_realtime(dataowner, row[0], date=self.date) if trip is None: self.stdout.write("Not found: %s on %s " % (row[0], row[1])) else: cancelled = Kv17Change( dataownercode=trip.dataownercode, operatingday=self.date, line=trip.line, journey=trip) cancelled.save() cancelled.delete() to_send.append(cancelled.to_xml()) to_send_trips.append(row[0]) print("Restored: %s:%s:%s on %s" % (cancelled.dataownercode, cancelled.line.lineplanningnumber, cancelled.journey.journeynumber, cancelled.operatingday)) if len(to_send ) > 0 and len(to_send) % self.BATCH_SIZE == 0: to_send, to_send_trips = self.send( to_send, to_send_trips) if len(to_send) > 0: to_send, to_send_trips = self.send(to_send, to_send_trips)
def to_recover(self): # Recover cancels and/or full # TODO: Check KV6 flow and status self.cancelled = False self.full = False self.save() journey = Kv1Journey.find_from_journeynumber(self.ferry.line, self.journeynumber, self.operatingday) if journey: changes = Kv17Change.objects.filter( dataownercode=self.ferry.line.dataownercode, operatingday=self.operatingday, line=self.ferry.line, journey=journey) if changes.count() > 0: change = changes[0] change.delete() return change.to_xml() else: return None